报表 存储过程

wrost 2012-09-18 12:30:07
表 T1、T2
T1.f1 和 T2.f2 关联


我需要如下数据:
1.
查找 T1中, (T1.f1 = T2.f2 )以外的记录,就是找出T1中没有关联上的语句,这会查找出很多数据
select * from t1 a where not exists(select 1 from t2 where a.f1=f2)

2.
统计3个数据:
bad_count = select count( * ) from t1 a where not exists(select 1 from t2 where a.f1=f2)

all_count = select count( * ) from t1

percent = bad_count/all_count

问题:我想把3个统计数据,还有一个数据表输出到报表,是不是要用到存储过程?
怎么输出到报表,原来我都只是输出一个表,没有还输入单一的统计数据?
我用的reportMachine,也可以用fastReport说明,
...全文
177 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-09-19
  • 打赏
  • 举报
回复
create procedure getCnt
@bad_count int output
@all_count int output
@percent float output
as
begin
declare @cnt1 int, @cnt2 int

select @cnt1=count (*) from ...
select @cnt2=count (*) from ...

set @bad_count=@cnt1
set @all_count=@cnt2
set @percent=@cnt1/@cnt2
end

至于用Delphi怎么调用,LZ自己研究一下吧
wrost 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
存储过程可以。
添加变量代码写出来了你哪里还不清楚
报表上[a] 就可以取到变量a的值
[/Quote]

RMReport1.LoadFromFile('');
self.RMReport1.Dictionary.Variables.Add('a',a);
self.RMReport1.Dictionary.Variables.Add('b',b);
self.RMReport1.Dictionary.Variables.Add('c',c);
RMReport1.ShowReport



谢谢,当时主要是这段不知道怎么处理,现在解决了! 非常感谢
wrost 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
存储过程可以。
添加变量代码写出来了你哪里还不清楚
报表上[a] 就可以取到变量a的值
[/Quote]
谢谢,我先试试

我正在写存储过程,
缘中人 2012-09-18
  • 打赏
  • 举报
回复
存储过程可以。
添加变量代码写出来了你哪里还不清楚
报表上[a] 就可以取到变量a的值

wrost 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
大概是这样的思路,具体代码你补充完整
var
a,b,c:Integer;
begin

//1 Ö÷ÏîÊý¾Ý
ADOQuery1.Close;
ADOQuery1.SQL.Text := '';
ADOQuery1.Open;

// 2.Èý¸ö±äÁ¿
ADOQuery2.Close;
ADOQuery2.SQL.Text := ''……
[/Quote]

谢谢,那么我也可以用一个存储过程来做,对吗? 把a、b、c从存储过程out取值就行。

还有一点,self.RMReport1.Dictionary.Variables.Add('a',a);
'a' 的添加过程是怎么样的?

我平时都是直接把数据库字段拖到报表上

缘中人 2012-09-18
  • 打赏
  • 举报
回复
大概是这样的思路,具体代码你补充完整
var
a,b,c:Integer;
begin

//1 Ö÷ÏîÊý¾Ý
ADOQuery1.Close;
ADOQuery1.SQL.Text := '';
ADOQuery1.Open;

// 2.Èý¸ö±äÁ¿
ADOQuery2.Close;
ADOQuery2.SQL.Text := '';
ADOQuery2.Open;
a := Self.ADOQuery2.fielbyname('').value;

ADOQuery2.Close;
ADOQuery2.SQL.Text := '';
ADOQuery2.Open;
b := Self.ADOQuery2.fielbyname('').value;

c = a/b;

RMReport1.LoadFromFile('');
self.RMReport1.Dictionary.Variables.Add('a',a);
self.RMReport1.Dictionary.Variables.Add('b',b);
self.RMReport1.Dictionary.Variables.Add('c',c);
RMReport1.ShowReport
缘中人 2012-09-18
  • 打赏
  • 举报
回复
这个简单
1、是个数据集,报表支持数据输出,很方便
2、三个统计,就是三个变量值,输出变量就可以了
我看见佛 2012-09-18
  • 打赏
  • 举报
回复
Output输入值,Select输入数据。
linuslinux 2012-09-18
  • 打赏
  • 举报
回复
可以使用存储过程,存储过程就是许多sql语句组成的
wrost 2012-09-18
  • 打赏
  • 举报
回复
自己顶一下!!

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧