$$$ 送分来啦!!! ¥¥¥ 在用QREPORT的时候能够预览但是打印不出来?(50分)

  • 主题发起人 主题发起人 中原浪子
  • 开始时间 开始时间

中原浪子

Unregistered / Unconfirmed
GUEST, unregistred user!
报表打印格式如下:
AAAAA AAAAAAAAAAAA
BBBBBBBBBBBB
CCCCCCCCCCCC
AAAAA DDDDDDDDDDDD
FFFFFFFFFFFF
FFFFF AAAAAAAAAAAA
CCCCCCCCCCCC
procedure Tskindosageprintform.QRDBText1Print(sender: TObject;
var Value: String);
begin
inherited;
skinidnew:=query1.FieldByName('skinid').AsString;
if skinidnew=skinidold then
if value=simplename then
value:=''
else
simplename:=value
else
begin
simplename:=value;
value:=query1.FieldByName('simplename').AsString;
end;
end;

procedure Tskindosageprintform.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
inherited;
skinidold:=skinidnew;
end;

程序如上,我想不打印重复的内容,‘skinidnew’和‘skinidold’是判断重复的条件,当
二者不同的时候,即使QRDBText1相同也要打印,并且如果‘skinid’有多条记录的时候可以
打印出来,但如果‘skinid’只有一条记录的时候就打印不出来。请高手赐教!
 
方法1:在QRLABEL的ONPRINT事件中自行判断VALUE的值是否和上一次打印的相同。
不同就打印,相同就将VALUE改为空。
代码:
if value <> OldValue then
//OldValue是手工加在Form中的变量名
OldValue := Value
else
Value := '';
特点:方法简单,只不过代码多了一点。(推荐使用)
方法2:用QRSUBDETAIL来做。(主从表方式)
特点:代码也少不了多少(要写SQL ),又复杂(QRREPORT对此有点小要求)
 
谢谢各位了问题已经解决,就是在QuickRep的ONStartPage写如下代码就行了!
procedure Tskindosageprintform.QuickRep1StartPage(Sender: TCustomQuickRep);
begin
inherited;
skinidnew:='';
skinidold:='';
end;

原因是QuickRep在预览后skinidnew和skinidold都是已经赋过值的,在ONPRINT的时候,要
重新给她们初始化!
 
呵呵,祝贺您自己发现并解决了问题,
扣除turborabbit的辛苦费10分,其余
的还给你吧
 
后退
顶部