三层结构,服务器clientdataset提交数据时为什么总是产生新的,而不是更新呀,我的query,dsp,clientdataset都是动态创建的 ( 积分

  • 主题发起人 主题发起人 ex3206
  • 开始时间 开始时间
E

ex3206

Unregistered / Unconfirmed
GUEST, unregistred user!
三层结构,服务器clientdataset提交数据时为什么总是产生新的,而不是更新呀,我的query,dsp,clientdataset都是动态创建的 ( 积分: 200 )<br />服务端:
procedure TMTSLogic.UpdateInfo(var IS_OK: Integer;
var sErrMsg: WideString;
vBabyInfo: OleVariant;
var vModify: OleVariant);
var
ErrorCount:integer;
Cltds:TClientDataSet;
Query:TAdoQuery;
Dsprd:TDataSetProvider;
dYZ :do
uble;
begin
ErrorCount:=0;
//用于在更新过程中记录发生错误的次数
IS_OK:=-1;
//返回本次操作是否成功
sErrMsg:='';
//若发生错误返回错误信息
Try
Query := TAdoQuery.Create(Nil);
Dsprd := TDataSetProvider.Create(Nil);
Cltds := TClientDataSet.Create(Nil);
Query.Connection := cnSQL;
Dsprd.DataSet := Query;
Dsprd.Options := [poAllowCommandText];
Dsprd.ResolveToDataSet := True;
Cltds.SetProvider(Dsprd);
Query.SQL.Add('select * from BasicInfo where ID=-1');
Cltds.CommandText := 'select * from BasicInfo where ID=-1';
Try
if not VarIsEmpty(vBabyInfo[0]) then
begin
Cltds.XMLData := vInfo[0];
Cltds.First();
while not Cltds.Eofdo
begin
case Cltds.UpdateStatus of
usInserted , usModified:
begin
Cltds.Edit();
Cltds.FieldByName('日期').AsDateTime :=
LGlobal.ExpectDate(Cltds.FieldByName('期').AsDateTime);
Cltds.Post();
end;
end;
Cltds.Next();
end;
Cltds.ApplyUpdates(0);
end;
Finally
Cltds.Free;
Query.Free;
Dsprd.Free;
end;

if ErrorCount<>0 then
begin
SetAbort();
Exit;
end;
IS_OK := 0;
SetComplete;
Except
On E:Exceptiondo
begin
SetAbort;
sErrMsg:=E.Message;
end;
end;
end;

客户端就是对对数据赋值,
可是修改了现有的数据,传回后,总是产生一个新的记录,而不是修改已有的纪录
请指点 谢谢
 
后退
顶部