最近我做了一个com+ 的小程序。功能是用客户端程序调用中间的数据更新模块,然后再用中间的数据更新模块调用数据模块,由数据模块对数据库进行更新。
问题:我的查询正常,但更新数据时总是出错,例如:我修改查询数据的第一条记录的第一个字段的值,然后点击更新后发现是修改的最后一条记录,并且最后一条记录的第一个字段是我修改的值,其余的字段值都变成第一条记录的值了。并且不能进行删除,但添加正常。
各个控件的属性已设置。数据模块用:adoconnection,adoQuery,Datasetprovider
数据模块接口:ImtsTextUpdate
数据更新方法:TestMyUp
procedure TmtsTextUpdate.TestMyUp(var vDatas: OleVariant;
  iMaxErrors: Integer; var iErrorCount: Integer);
var OwnerDatas:OleVariant;
begin
  try
    dspUPworker.ApplyUpdates(vDatas,iMaxErrors,iErrorCount,OwnerDatas);
    setcomplete;
  except on E:exception do
  begin
    setabort;
  end;
  end;
end;
数据更新模块用:dcomconnection
数据模块接口:ImtsTestUpdate
数据更新方法:UpdateMy
procedure TmtsTestUpdate.UpdateMy(var vDatas: OleVariant;
  iMaxError: Integer; var iErrorCount: Integer);
var serverObj:Iappserver;
  QwnerDatas:OleVariant;
begin
  try
    dcomcupdate.AppServer.TestMyUp(vDatas,iMaxError,iErrorCount);
    setcomplete;
  except on E:exception do
  begin
    setabort;
  end;
  end;
end;
客户端:DBgrid,Clientdataset,DataSource
数据更新按钮:Button2
procedure TForm2.Button2Click(Sender: TObject);
var Udate:ImtsTestUpdate;
  iMaxError,iErrorCount:integer;
  vDatas:OleVariant;
begin
  vDatas:=clientdataset1.Data;
  Udate:=ComtsTestUpdate.CreateRemote('jjj');
  Udate.UpdateMy(vDatas,iMaxError,iErrorCount);
  clientdataset2.Data:=vDatas;
end;