关于QuickReport。(200分)

  • 主题发起人 主题发起人 todennis
  • 开始时间 开始时间
T

todennis

Unregistered / Unconfirmed
GUEST, unregistred user!
我现编一程序,有一报表需打印,但它的横行数据要求当其所有值为零时,该行不打印。
例如:
A B C D E
------------------------------
1 1238 6679 6764 7767 6767
2 0 0 0 0 0
3 3334 4566 8889 1223 5567
------------------------------
要求打印成为如下形式:
A B C D E
------------------------------
1 1238 6679 6764 7767 6767
2 3334 4566 8889 1223 5567
------------------------------
请问应如何编写?开发环境为Windows XP+delphi6+paradox
 
用fastreport吧,方便极了.
 
先用Query或Filter把是0值的记录过滤掉。
 
你这此数据从那里来?
若是从数据库来,同意楼上所说!
若是通过计算来的,我就没办法了。
 
我也遇到过了类似问题
我解决方法是改动与数据BAND对应的数据集,选择A、B、C、D、E不为0的数据集与该BAND对应
 
procedure Tform1.QRBand4BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
PrintBand:=fieldbyname('A').asinteger+fieldbyname('B').asinteger+
fieldbyname('C').asinteger+fieldbyname('D').asinteger
+fieldbyname('E').asinteger <> 0;
end;
 
只要在数据集里把全是0的过滤掉就可以了。
 
但横行前面的标题栏怎样动态去掉?例如:BBD 0 0 0 0,如何在不列印0数据的同时
将BBD也不列印出来?
 
用Query或Filter把是0值的记录过滤掉
或是在SQL中增加语句来过滤全是0的项
 
在QUERY中产生的,不显示它就行了.
 
在detailband的beforeprint事件写
while (data.fieldByName('A').AsInteger=0) and (data.fieldByName('b').AsInteger=0) and (data.fieldByName('c').AsInteger=0) and (data.fieldByName('d').AsInteger=0) and (data.fieldByName('e').AsInteger=0)do
data.next;
 
看来只有用过滤了!
 
接受答案了.
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部