数据无法更新,提示:Unable to resolve record. Table name not found.(80分)

  • 主题发起人 主题发起人 chngoing
  • 开始时间 开始时间
C

chngoing

Unregistered / Unconfirmed
GUEST, unregistred user!
正在学习midas,我用的是interbase5.0,win98,DCOM,连接ib用ibx,现在碰到一个问题是:当我在客户端程序中用ClientDataSet1.ApplyUpdates(-1)时,应用程序服务器端的数据集不会更新,仍然保持原样。但是如果我把服务端换为paradox表时,则能顺利更新。不知道什么原因!!请各位指教
在OnUpdateError中捕获到错误提示:
Unable to resolve records. Table name not found.
客户端的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
tmp : integer;
begin
DCOMConnection1.Connected := True;
ClientDataSet1.active := True;
ClientDataSet1.First;
for i := 1 to ClientDataSet1.RecordCountdo
begin
ClientDataSet1.Edit;
tmp := ClientDataSet1.FieldByName('Salary').asInteger;
tmp := tmp + 1;
ClientDataSet1.FieldByName('Salary').asInteger:= tmp;
ClientDataSet1.Next;
end;
ClientDataSet1.ApplyUpdates(-1);
//参数换成0也不行。
end;
设置DataSetProvider的ResolveToDataSet等于True 或等于 False 都一样没效果
设置DataSetProvider的UpdateModule 等于 UpWhereChanged 或等于 UpWhereAll也同样没效果。
 
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
tmp : integer;
begin
DCOMConnection1.Connected := True;
ClientDataSet1.active := True;
ClientDataSet1.First;
for i := 1 to ClientDataSet1.RecordCountdo
begin
ClientDataSet1.Edit;
tmp := ClientDataSet1.FieldByName('Salary').asInteger;
tmp := tmp + 1;
ClientDataSet1.FieldByName('Salary').asInteger:= tmp;
ClientDataSet1.Next;
clientdataset1.post;<<要加这一句吧
end;
ClientDataSet1.ApplyUpdates(-1);
//参数换成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.RecordCountdo
begin
ClientDataSet1.Edit;
tmp := ClientDataSet1.FieldByName('Salary').asInteger;
tmp := tmp + 1;
ClientDataSet1.FieldByName('Salary').asInteger:= tmp;
clientdataset1.post;<<位置放错了,edit后需要post的
ClientDataSet1.Next;

end;
ClientDataSet1.ApplyUpdates(-1);
//参数换成0也不行。
end;
 
你看一下是不是字段名和表名与数据库中的大小写不一致。
有的数据库如果不一致的话,就不可以。
 
在DatasetProvider的OnGetTableName事件中
procedure TForm1.DataSetProvider1GetTableName(Sender: TObject;
DataSet: TDataSet;
var TableName: String);
begin
TableName:='xx ';(xx为你要更新的表名)
end;
 
多人接受答案了。
 
后退
顶部