如何使报表中字段为0的不打印,也就是不打印0技术,在dbgrid如何实现0不显示?(10分)

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
首先祝贺各位节日快乐!
如何使报表中字段为0的不打印,也就是不打印0技术,在dbgrid如何实现0不显示?
注意:
不是不打印该记录,
因为该记录有很多数据字段,有的字段为0
则该字段位置空着,
不打印任何东西,
就象填表一样,
没有则不填。
 
我已经贴了3天而无人回音,
不知是否“太难了”
我使用的报表工具是delphi5.0自带的quickreport
想解决的问题是使qrdbtext控件,当其值为0 时不显示任何东西,也就是0不打印,
有的建议qrdbtexe的mask:####
但我试过,它会四舍五入,并且只保留整数位,
因此对小数不合适,##,##0.00也不行,
有的建议使用qrlabel并对其数值进行判断和处理,由于要显示的数据自段较多,
我认为使用qrlabel不合适,
因此认为使用qrdatext和 qrexerption更好,
不知哪位高手能告诉我解决方法,
qrdbtext的mask的属性设置有哪些?
非常感谢!


 
TField.OnGetText看看
 
用FastReport可以实现,我要做的恰与你相反,FastReport 做不到
 
在OnGetText中将它处理一下^_^
 
唉,在DisplayFormat中:#0.00;;zero,如为zero则打印zero,若将zero改为空格,嘻嘻,不就什么都不打印出来了吗?
 
QuickReport中为0不打印:
在相应的QRDBText的OnPring事件中:
if StrToInt(Value)=0 then
Value:='';
 
philipliu的办法已经接近解决问题了。
设置字段的DisplayFormat为“#,##”他就仅仅显示那个非零的了,当然对于小数需要使用“#,##.##”了。
=========尝试一下,应该可以的,没有验证=========
 
在相关连字段的OnGetText事件中处理
if sender.asstring = '0' then
text := ''
else
text := fieldbyname('fieldname').asstring;
 
如果用qrlable控件,是可以进行设置的,
但我相信对于数据报表中的细节区而言多数人可能要使用qrdbtext控件,
而不使用qrdblable,因此以上关于字符串的处理方式都是不合适的,
还是用字段的displayformat为好,
整数用#,##,
小数用#.##
但我还发现了一个奇怪的问题,对delphi5.0自带的quickrep而言,
在报表的qrexpression控件(合计用)的mask属性: 也可以进行设置,以起
到0不打印技术,但当设置为0.00%时,
其后面的%有的有效而有的无效非常奇怪,不知各位遇到过没有,请试试!
 
cly888, 谁说解决不了,你自己写代码控制不就可以拉。
 
用quickrep not fastreport
 
>>QuickReport中为0不打印:
>>在相应的QRDBText的OnPrint事件中:
>>if StrToInt(Value)=0 then
Value:='';
以上这种方法,我已经在自己的程序里试过,可以的,
不知你试过了没有?
 
多人接受答案了。
 
后退
顶部