在DBGrid中有a,b,c三个字段,为了能在表格中输入a,b后立即在c中显示计算值,我使用OnCalcFields计算c的值。现在的问题是设置adoquery的locktype为lbbatchoptimistic,cursortype为
ctstatic。在调用batchupdate后a,b,c的值无法在数据库中同时更新,似乎c的值比a,b的更新慢一步,这是为什么呢??请各位达人多指教

解决方案 »

  1.   

    我觉得在OnChange或onValidateprocedure TForm1.ADOQuery1cccChange(Sender: TField);
    begin
      Sender.DataSet.FieldByName('c').AsFloat :=
        Sender.DataSet.FieldByName('a).AsFloat +
        Sender.DataSet.FieldByName('b).AsFloat ;
    end;
    其中a、b字段共用这一个过程
      

  2.   

    to: season713(痛苦的猪)
    你有什么不明白的呢?
    你在程序中试一下,即可知道!
    如选择ADOQuery1中的A和B字段,然后在其OnChange事件中写代码!
    procedure TForm1.ADOQuery1aChange(Sender: TField);
    begin
      Sender.DataSet.FieldByName('c').AsFloat :=
        Sender.DataSet.FieldByName('a).AsFloat +
        Sender.DataSet.FieldByName('b).AsFloat ;
    end;
    即在a,b 字段值改变的时候自动计算c的值:
      

  3.   

    试了一下,可以在ADOQuery的beforepost中解决问题