急切!!!!非常希望高手回答此问题(30分)

  • 主题发起人 主题发起人 okbill
  • 开始时间 开始时间
O

okbill

Unregistered / Unconfirmed
GUEST, unregistred user!
如何控制qrdbtext,它们都是来自一个数据源!!!
我希望能做到当打印第一条记录时qrdbtext的datfield的字段名为AAA,当打印第二条记录
时QRDBTEXT的字段名为BBB,当打第三条记录时qrdbtext的字段名又变为AAA
也就是说当qrdbtext打印单数记录号的字段为AAA,双数的记录号的字段为bbb
 
也就是要求手工控制,可以在qreport的onneeddata和beforeprint事件里面写些东东,
具体写的代码根据你的要求来做,:-)
 
那你就放两个qrdbtext,一个指向AAA,一个指向BBB,且位置重复,用个全局Count;
再detailBand的OnneedData事件中:
Inc(count);
if count mod 2 =0 then
qrdbtext1.enabled:=true else
qrdbtext1.enabled:=flase;
qrdbtext2.enabled:=not qrdbtext1.enabled;
 
上面的办法最简单。
 
to tyzhang
为何detailBand的OnneedData事件中qrdbtext1.enabled的属性控制不了你的true and false
help me!!!!
 
to okbill:
不好意思,写错了,应该在BeforePrint事件中。
 
to tyzhang
可是在BeforePrint事件中仍然无法实现当你要打印第二条记录时qrdbtext2的BBB字段值
为TURE,它并不执行我所写的条件语句,我的条件语句是这样写的
用一个tquery语句查找共有多少个记录号然后将记录的的个数负值给变量S
IF S MOD 2=0 then
QRDBTEXT1.enabled:=FALSE;
QRDBTEXT2.ENABLED:=TRUE;
else
QRDBTEXT1.ENABLED:=TRUE;
QRDBTEXT2.ENABLED:=FALSE;
end;
 
S不能取值query的记录数。
S应该等于已打印的Detail的数量。所以在打印之前将S:=0;在你的事件中加Inc(S):
Inc(S);
IF S MOD 2=0 then
QRDBTEXT1.enabled:=FALSE;
QRDBTEXT2.ENABLED:=TRUE;
else
QRDBTEXT1.ENABLED:=TRUE;
QRDBTEXT2.ENABLED:=FALSE;
end;
 
to tyzhang
INC()是一个打印记录的函数吗
 
inc()就是S:=S+1;
 
本人不才能不能给出详细的代码呢
我只要做到凡是打印是3的倍数的记录号的qrdbtext2为TRUE,QRDBTEXT1为FALSE
不胜感激
 
给我Email,我发给你例子。
 
to tyzhang
my e-mail yezhpi@21cn.com
 
to okbill:
邮件已发出,请查收。
 
to tyzhang
谢谢邮件已收到了
 
谢谢!!!!问题完全得到了解决!!!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部