Query1 UpdateSQL1 DataSource DBGrid 经过相应的设置后.
我想修改该表的某两列数据(这两列数据初始为空)
当我修改其中的某一列数据后(A列),点保存(Query1->ApplyUpdates(),Query1->CommitUpdates()),然后修改B列 ,点保存,可B列不能被保存.
请问这是为什么?我觉得很奇怪

解决方案 »

  1.   

    如果我先执行B列点保存,再执行A列点保存,那么A列就不能保存了
      

  2.   

    表   W  如下: 
    BIANH   MINGC       A       B 
    0001       甲             
    0002       乙 
    0003       丙 
    0004       丁 1,Query1这样设置   的 
        SQL:   select   *   from   W 
        UpdateObject:UpdateSQL1 
        DatebaseName:QW 
        CacheUpdate:true 
        Active:true 
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Query1->ApplyUpdates();
    Query1->CommitUpdates();
    }

    2,双击UpdateSQL1   
    Key   Fields:BIANH 
    Update   Fields:BIANH 
                                MINGC 
                                A 
                                B 
          点     General   SQL   然后OK 
    3,DataSource1   的DataSet:Query1 
    4,DBGrid1   的DataSource:   DataSource1 
    这样设置应该没有错吧 
    可问题就出来了: 
    如果先修改A 点保存,再修改B 点保存,最后是A列数据保存了,可B列的数据没有保存
    如果先修改B 点保存,再修改A 点保存,最后是B列数据保存了,可A列的数据没有保存
    这个问题好奇怪?请问是怎么回事
      

  3.   

    更新后是不是应该再刷新一下数据集?
    你用的是BCB+BDE+query吧,为什么不用ado
      

  4.   

    用ado?怎么用啊,能不能贴出来,我没有用过那个控件,如果可以,我把分全部给你了,谢谢
      

  5.   

    刷新数据是用
    Query1->Active=false;
    Query1->Active=ture;
    吗?
    按照我理解的:
    我这样修改Button 
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Query1->ApplyUpdates();
    Query1->CommitUpdates();
    Query1->Active=false;
    Query1->Active=ture;}
    可还是不行
      

  6.   

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Query1->Post;//替换成直接提交
    }