用C++Builder的QuickReport组件做几个报表,要求在查询的结果中所有的金额字段都要保留两位小数,并且不能丢失小数点后面的0。我用TListView呈现查询结果,用TQuickReport来设计报表样式。数据库是Sybase。
将查询结果直接填入到TListView之后,发现小数点后面是没有精度的,于是将查询语句里面加入了数据类型转换,如下:
SELECT convert(decimal(13,2), amount) FROM anytable
在DBArtisan里面显示的结果没有问题,然后放到C++Builder里面执行,填入TListView里面还是舍掉了后面的0,没想到好办法,就用如下代码:
char buff[15];
sprintf(buff, "%.02f", anyQry->FieldByName("amount")->AsFloat);
来转换,再填充到TListView。
而对于TQuickReport,本来以为很难搞,后来发现TQRDBText有一个属性叫Mask,设置为0.00,就可以起作用了。


