报表 存储过程
本帖最后由 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自己研究一下吧