我做的一个Query需两个Number型的字段相减,结果放在dbgrid中,但是显示出来的结果却有很多位小数,因为Query是动态生成的,所以不能事先设定其小数位数,请问怎样使它只保存两位小数?
解决方案 »
- 最近感觉我们D版好冷清呀,人都哪去了
- delphi程序员的价值在于享受生活(不好意思没分给就只有100分)
- 高分紧急求助:关于多线程问题的求助!!!!
- ADOQuery的问题,只要您能第一个解决就是100分。
- 高手请进
- 悬赏百分,请教高手赐教!如何解析一个字符串表达式?
- 有什么函数可以实现real和string之间的转换?IntToStr和StrToInt行吗?
- delphi6 编译的EXE调用BAT文件报错,求指导!!!!!!
- Sql server怎樣使用分數 ,如1/3,1/6.急,急.....急死我了
- 各位,MDI中RegisterHotKey的问题。
- 99分请教: 如何测得在 WIN9X 下的硬盘序列号.
- 请各位高手给我推荐一款数据库显示控件!
chao_jian:用round不是将其转换为整数了吗,我要的是两位小数。
我以前在用VB的时候同样碰到过这样的问题.
如12.45+0.04,我再Round之后居然会变为12.50(而实际上应该是12.49).
但定义为Currency类型之后就非常精确了.
可以用下面比较笨一点的方法:1)在Query的Sql属性中添加 select * from table
2)Activite属性设为true
3)双击Query控件,添加所有字段
4)把要显示的字段的DisplayFormat属性写:'#.##'
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
arect :TRect ;
begin
Case DataCol of
3,4,5,6,7:
if Length(adoquery2.Fields[DataCol].AsString) <= 0 then
begin
ARect := Rect ;
ARect.Right := ARect.Right - 3 ;
DrawText(DBGrid1.Canvas.Handle,'0',-1,Arect,DT_SINGLELINE or DT_RIGHT or DT_VCENTER) ;
end ;
end;
end;
这是自动填充0的过程,你在这里做相应的判断和修改应该能达到你的目的。
e是float 返回的是string
在ms-sql 中可以用to_char函数