定义TDATASET
的FIELD就可以了

解决方案 »

  1.   

    双击TDATSET(query table proc ETC)
    后加入FIELD
    选中某个FIELD后设置其属性
    EDITFORMAT和DISPFORMAT
    好象是 #######.00 or 00000.00
    自己试下吧!
      

  2.   

    在没有保存到数据库之前,我如何得到DBGRID中字段的值
      

  3.   

    还是在table的beforepost时手动判断运行那个字段的值的有效性吧!
      

  4.   

    可是我在提交的时候写了这样的语句:
    procedure TFrm_Gz.Tb_GzBeforePost(DataSet: TDataSet);
    var i:integer;
    begin
       for i:=0 to dbgrid.Columns.Count-1 do
       begin
          if length(dbgrid.Columns[i].Field.Asstring)>9 then
          begin
             showmessage('sfs');
             exit;  
        end;
       end;end;
    可是我如果输入多于number(8,2)的记录的时候,系统就报错,根本不执行上面的事件
      

  5.   

    那要在oncellexit事件中处理了 
      

  6.   

    在oncellexit事件中也是不行,请各位老兄帮忙啊,我这个问题已经困惑好长时间了
      

  7.   

    cobi,在DBGRID中没有oncellexit事件,仅有ColExit事件啊
      

  8.   

        DBGrid控件不宜作输入界面,一般只用来做显示界面,输入界面用EDIT控件等来实现,通过他们的OnExit事件来判断输入的数据格式是否正确,好的方式是在提交时逐一判断;  
        如果一定要用DBGrid控件,可以考虑该控件的OnColExit事件。
      

  9.   

    我现在就是用的是OnColExit事件
      

  10.   

    可在field中的onvalidate事件中
    if myfieldbyname('Myfield'').asfloat>99999999.99 then
       raise exception.create('数据益出');
      

  11.   

    提示错误信息是out of bounds
      

  12.   

    双击TDATSET(query table proc ETC)
    后加入FIELD
    选中某个FIELD后在其OnSetText事件中控制输入,
    在其OnGetText事件中控制显示
      

  13.   

    gxdmm(笑石头)的方法可以,在OnGetText事件中这样写:
    begin
      Text := F(Table.FieldByName('field').AsString);//其中F是转换函数,把输入的值
                                               //转换成(8.2)的格式,需要自己写。
    end;