我应用服务器上的代码是:
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'.
请教大家了!
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'.
请教大家了!
改为
procedure TTest123Server.ApplyUpdate(var CustVar: OleVariant);
DataSetProvider1.ApplyUpdates(CustVar,0,ErrCount);
改为
CustVar:=DataSetProvider1.ApplyUpdates(CustVar,0,ErrCount);
if not VarIsNull(CustVar) then--这里出错
ClientDataSet1.Reconcile(CustVar)
else begin
ClientDataSet1.Reconcile(CustVar);
ClientDataSet1.Refresh;
end;
这些代码去掉了,请问谁知道Reconcile的作用?
Reconcile的作用真如其帮助里所说!