正在学习midas,我用的是interbase5.0,win98,DCOM,连接ib用ibx,现在碰到一个问题是:当我在客户端程序中用ClientDataSet1.ApplyUpdates(0)时,应用程序服务器端的数据集不会更新,仍然保持原样,也没有什么错误提示。但是如果我把服务端换为paradox表时,则能顺利更新。不知道什么原因!!请各位指教
    
客户端的代码如下:     procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
    tmp : integer;
begin
    DCOMConnection1.Connected := True;
    ClientDataSet1.active := True;
    ClientDataSet1.First;
    for i := 1 to ClientDataSet1.RecordCount do begin
        ClientDataSet1.Edit;
        tmp := ClientDataSet1.FieldByName('Salary').asInteger;
        tmp := tmp + 1;
        ClientDataSet1.FieldByName('Salary').asInteger:= tmp;
        ClientDataSet1.Next;
    end;
    ClientDataSet1.ApplyUpdates(0);
end;

解决方案 »

  1.   

    在InterBase中,你的服务器应用程序对InterBase数据表有修改权限吗?
      

  2.   


    改为ClientDataSet1.ApplyUpdates(-1);看看
      

  3.   

    谢谢回答!
      pilicat(delphi迷):
         服务器的用户对ib拥有全部权限
      
      xiehua822(xiehua):
         发贴前就试过啦,不行!  现在我试着在服务端的 BeforeApplyUpdate中执行DataSetProvider.DataSet对应的IBQuery的关闭、再打开,结果有部分记录成功修改,但另外的却总保持原来的值,谁能帮帮啊??服务端BeforeApplyUpdate的代码:procedure TmyRDM.DataSetProvider1BeforeApplyUpdates(Sender: TObject;
      var OwnerData: OleVariant);
    begin
      if IBQuery.Active then IBQuery.Close;
      IBQuery.SQL.Clear;
      IBQuery.SQL.Add('SELECT salary FROM MyIBTable1');
      IBQuery.Open;
    end;原先Salary字段值:     执行后Salary的值:   1000                    1001   2000                    2001    3000                    3000  //*   4000                    4000  //*   5000                    5001   6000                    6000  //*以上带标记三个记录总保持不变
      

  4.   

    后来在OnUpdateError中捕获到错误提示:     Unable to resolve records.  Table name not found.到底是怎么回事!也没人来看看!!!!!