FastReport为什么将Null认作0???(50分)

  • 主题发起人 主题发起人 微湖水生
  • 开始时间 开始时间

微湖水生

Unregistered / Unconfirmed
GUEST, unregistred user!
我用FastReport做报表,其中一Memo中我输入:
[IF([ADOQuery.Field1]=null, '-',ADOQuery.Field1]
但是为Null值的Field1预览时居然显示为0,不知为何,请各位赐教。
(查询出的数据集的确包含Null值)
 
试试FR的FIELDISNULL函数。
 
to wwwwb:
小弟愚笨,能否说详细一点!
 
在MASTER BAND的BEFORE PRINT事件中:IF fieldisnull(table1.xj) then
null
else
0
 
设置Memo控件隐藏空值的属性即可
 
Memo.HideZeros设置为True就行了
 
Memo.HideZeros:=true
 
to wwwwb:
我这个报表是动态生成的,不知如何写。。。
另外,我在静态的报表中试验,这种方法不能实现
 
如果值为0我是想让它显示为0的,另外,将Memo.HideZeros:=true并不能解决问题,
这时为Null的值也不显示了。
 
v:=TfrMemoView.Create;
v.prop['name']:='memo3';
v.SetBounds(XPos+((Page.RightMargin-Page.LeftMargin) div Page.ColCount)*
v.Script.Add('begin
');
v.Script.Add(' if FieldIsNull([ADoQuery1."功能"]) then
');
v.Script.Add(' memo3.memo:=''空''');
v.Script.Add(' else
');
v.Script.Add(' memo3.memo:=''abc'';');
v.Script.Add('end;
');
Page.Objects.Add(b);
// for the band)
 
to zxl893;
我在静态的报表中测试,发现字段全显示为'-'了,本来不为空的也这样!
 
你也可以变通一下,在ADOQuery1的那个字段的OnGetText里处理,如
if Sender.AsString='' then
Text:='-'
else
Text:=Sender.AsString;
DisplayText:=True;
 

Similar threads

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