当表中的字段值为0或0.0时,如何让它在报表中不显示出来--急急急

libamboo 2003-01-14 07:12:04
当表中的字段值为0或0.0时,如何让它在报表中不显示出来,我用的是VFP自由表,数值型字段的值在数据录入时必须录进一个值,(字段即使设为空,也不能将空值录入到表中),但根据报表的要求,这个代表空值的0不能显示出来,怎么办,请大家帮忙。
...全文
400 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
houzy123 2003-01-17
  • 打赏
  • 举报
回复

smilingchen的方法是可行的,但Value是AnsiString
QRDBText的OnPrint事件

void __fastcall TQRListForm::QRDBText1Print(TObject *sender,
AnsiString &Value)
{
if(StrToFloat(Value)==0.0)
Value=" ";
}
//---------------------------------------------------------------------------
只要相关的QRDBText2数据为int 和float采用同一事件即可
即QRDBText2的OnPrint事件为QRDBText1Print
libamboo 2003-01-17
  • 打赏
  • 举报
回复
smilingchen:我用怎么不好用呀? QRDBText没有Value这个属性,您这里的Value代表什么?
hopelhs 2003-01-16
  • 打赏
  • 举报
回复
在Table->Filter里加入过滤条件,然后设Table->Filtered = true
libamboo 2003-01-16
  • 打赏
  • 举报
回复
CB自身的REPORT控件
smilingchen 2003-01-16
  • 打赏
  • 举报
回复
在 QRDBText控件的Print事件中如下写:
if (Value = 0)
{
Value = " ";
}
就可以了。
我以前就这么做的,虽然笨了点,但还是可以实现的.

sealfan 2003-01-16
  • 打赏
  • 举报
回复
你做报表的工具是什么?
libamboo 2003-01-16
  • 打赏
  • 举报
回复
lgs6715() :您好?
我的报表中的数据是直接来自数据表中(控件与数据源直接相连),不需要用SELECT子句查询,所以无法用条件控制。
lgs6715 2003-01-16
  • 打赏
  • 举报
回复
使用 ALL 关键字的 GROUP BY
现在加上 ALL 关键字重新执行命令。
SELECT type, 'ytd' = MIN(ytd_sales) FROM titles
WHERE ytd_sales > 10000 GROUP BY ALL type

使用 ALL 关键字保证列出所有的类型。由于它们不满足条件,因此将最小的 ytd_sales 描述为 NULL。
lgs6715 2003-01-16
  • 打赏
  • 举报
回复
还是该select语句控制,把不满足条件的给过滤掉
看看这个例子,我想会给你启发的:
不使用 ALL 关键字的 GROUP BY
下面的 SELECT 语句返回目前为止符合条件的书的类型及其最小的销售额。它不包括销售额小于 10,000 马克的书的类型。
SELECT type, 'ytd' = MIN(ytd_sales) FROM titles
WHERE ytd_sales > 10000 GROUP BY type



libamboo 2003-01-16
  • 打赏
  • 举报
回复
houzy123(侯忠勇):您好?
我在报表中直接用的是QRDBText控件,数据表中字段的值是什么,就直接显示什么,无法用条件控制,怎么办?
houzy123 2003-01-16
  • 打赏
  • 举报
回复
用QRLabel控件,对于获取值在BeforePrint事件中对
if(Table->FieldByName()->AsFloat==0)
QRLabel->Caption=" ";
else
QRLabel->Caption=Table->FieldByName()->AsString;
libamboo 2003-01-15
  • 打赏
  • 举报
回复
但我有的表的数据源是Table,直接与数据表的字段相连,不用查询,这种情况如何控制,谢谢。
mee123456 2003-01-14
  • 打赏
  • 举报
回复
报表的显示是由数据源决定,要想不显示,就得控制数据源;
可以在查询时设置条件:
AnsiString sql="select * from ... where field1<>0";
ADOQuery->Close();
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add(sql);
ADOQuery->Open();

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧