读书人

报表 存储过程解决方案

发布时间: 2013-01-26 13:47:04 作者: rapoo

报表 存储过程
本帖最后由 wrost 于 2012-09-18 12:33:10 编辑 表 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说明,

[解决办法]
Output输入值,Select输入数据。
[解决办法]
大概是这样的思路,具体代码你补充完整
var
a,b,c:Integer;
begin

//1 ?÷??êy?Y
ADOQuery1.Close;
ADOQuery1.SQL.Text := '';
ADOQuery1.Open;

// 2.èy??±?á?
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
[解决办法]
存储过程可以。
添加变量代码写出来了你哪里还不清楚
报表上[a] 就可以取到变量a的值


[解决办法]

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自己研究一下吧

读书人网 >.NET

热点推荐