在数据库里浮点型数据用ADOQUERY显示到DBGRIDE中,怎样做到小数点后只有两位?(100分)

  • 主题发起人 主题发起人 geyufly
  • 开始时间 开始时间
G

geyufly

Unregistered / Unconfirmed
GUEST, unregistred user!
在数据库里一张表用ADOQUERY显示到DBGRIDE中,那么表中的浮点数怎样做到显示的时候
小数点后只有两位,现在显示出来是小数点后7、8位,怎么办啊???
帮帮我啊
 
add all fields 对应的字段点击设置属性
displayformat 0.00
access 可以 select format(fieldname,0.00)
 
TNumericField(query.fieldbyname('amount')).displayformat:='#,##0.00';
 
在DBGrid的DrawColumnCell事件中加入:

with TDBGrid(Sender) do
begin
{格式化浮点数显示}
if(DataSource.DataSet.IsEmpty = true) then else
if(Column.Field.AsString = '') then else
if(Column.Field.DataType <> ftFloat) then else
if(Column.Field.IsNull <> true) then
begin
vRect := Rect;
vText := PChar(format('%.2f',[StrToFloat(Column.Field.AsString)]));
vRect.Right := vRect.Right -2;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, vText, StrLen(vText), vRect, DT_RIGHT or DT_SINGLELINE);
// Canvas.TextOut(Rect.Right-Canvas.TextWidth(strtmp)-2, Rect.Top+1, strtmp);
end;
end;

包你满意,给分吧!
 
Field.DisplayFormat=#0.00
要格式化的Field的DisplayFormat屬性設為#0.00
 
leehq的代码有问题,他的方法只不过是重画了Grid而已,并且很费时,语句不够简练。
没有括号的地方偏有括号,不该用“=”的地方偏用。
正确方法如下:
在与Grid相关的DataSet中的OnAfterOpen中添加如下限制代码
TNumericField(qryOne.Fields.FindField('one')).DisplayFormat := '#0.00';
注意必须进行强制转换,DisplayFormat属性只有TDateTimeField、TNumericField、
TAggregateField、TSQLTimeStampField才有。
以上做法本人已调试通过。

 
提问题的人好象没动静啊!
 
用Richard3000的方法:
Field.DisplayFormat=#0.00
要格式化的Field的DisplayFormat屬性設為#0.00

最方便最有效!
 
多人接受答案了。
 
to YFeral:
1.如果不加这些判断的话,会出现错误,我是根据实际添加的;
2.你的代码局限性很大,设置起来非常麻烦;
 

Similar threads

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