我用ADOQuery从一个表里抓出来的数据显示在DBgrid中。然后对某个字段的数值做修改,我怎么能得到这个数值修改了多少呢?比如有三个字段A、B、C。我需要得到的结果是A、B、C+(A-B),并且要在DBGrid中体现出来可以么?。这个用DBGrid.fields[3].value:=???来做可以么?

解决方案 »

  1.   

    双击ADOQuery,增加一个Calculated的字段,然后在该字段的OnGetText事件中处理你的表达式(比如:C+(A-B))。
    好久没有用了,好像是这样的,试试吧!
      

  2.   

    用计算字段可以:
    好像是:
    ADOQuery1C.value := ADOQuery1C.value+(ADOQuery1A.value+ADOQuery1B.value);
      

  3.   

    ADOQuery.sql.text= 'select a, b, c  from biao  '
    DBGrid.columns[3].fields=C+(A-B)
    或者 ADOQuery.sql.text= 'select a, b, c+(A-B)as d  from biao  '
      

  4.   

    谢谢,如果对A字段进行了改动,怎么能得到这个改动的值是多少,即A(修改)-A(原来)。
      

  5.   

    先建一个临时表T2,复制原表T1,这样保留了原始记录ADOQUERY1的SQL:
    SELECT T2.*, T2.A-T1.A AS A_ADD, T2.B-T1.B AS B_ADD, T2.C-T1.C AS C-ADD FROM T1,T2 
    WHERE T2.ID=T1.ID将后面几个计算字段的READONLY=TRUE在DBGRID中显示这个ADOQUERY1,当有修改时,触发ADOQEURY1的AFTEREDIT事件,在事件中关闭再打开这个ADOQUERY1就可以了
      

  6.   

    但是我现在这个在dbgrid中修改的值取不出来啊,因为我还没有保存