正在学习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;
客户端的代码如下: 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;
改为ClientDataSet1.ApplyUpdates(-1);看看
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 //*以上带标记三个记录总保持不变