我应用服务器上的代码是:
procedure TTest123Server.ApplyUpdate(CustVar: OleVariant);
var
  ErrCount:Integer;
begin
//
  DataBase1.StartTransaction;
  try
    if not VarIsNull(CustVar) then
    begin
      DataSetProvider1.ApplyUpdates(CustVar,0,ErrCount);
      Database1.Commit;
      if ErrCount>0 then
         abort;
    end;
  except
    Database1.Rollback;
  end;end;
在做客户端调用时,这样写的:
procedure Tdm.applayupdates;
var
  CustVar :  OleVariant;
begin
  ClientDataSet1.CheckBrowseMode;
  if ClientDataSet1.ChangeCount>0 then
     CustVar := ClientDataSet1.Delta
  else
     CustVar := NULL;
  DCOMConnection1.AppServer.ApplyUpdate(CustVar);
======以上都没有错
  if not VarIsNull(CustVar) then--这里出错
    ClientDataSet1.Reconcile(CustVar)
  else begin
    ClientDataSet1.Reconcile(CustVar);
    ClientDataSet1.Refresh;
  end;
//
end;报错信息:Project ClientTestPro.exe raise exception class EDBClient with message 'Mismatch in datapacket'.
请教大家了!

解决方案 »

  1.   

    procedure TTest123Server.ApplyUpdate(CustVar: OleVariant);
    改为
    procedure TTest123Server.ApplyUpdate(var CustVar: OleVariant);
          DataSetProvider1.ApplyUpdates(CustVar,0,ErrCount);
    改为
          CustVar:=DataSetProvider1.ApplyUpdates(CustVar,0,ErrCount);
          
          
      

  2.   

    好象调试成功了,但问题好象不是如yesxwl() 所说,我是将
      if not VarIsNull(CustVar) then--这里出错
        ClientDataSet1.Reconcile(CustVar)
      else begin
        ClientDataSet1.Reconcile(CustVar);
        ClientDataSet1.Refresh;
      end;
    这些代码去掉了,请问谁知道Reconcile的作用?
      

  3.   

    不好意思,这次算是弄懂了,原来真如yesxwl() 所说,谢谢yesxwl()!
    Reconcile的作用真如其帮助里所说!
      

  4.   

    不客气,先是吓了跳,后是松了口气,good luck for you!
      

  5.   

    楼上两位兄弟能不能留下你们的QQ或者MSN。在下有问题请教!