简单问题:TdatasetProvider的OnUpdateData事件(50分)

  • 主题发起人 主题发起人 windwe
  • 开始时间 开始时间
W

windwe

Unregistered / Unconfirmed
GUEST, unregistred user!
在server端用TTable和Tdatasetprovider从远端数据库取出数据,发
给client,在本机的client中显示,并用ApplyUpdates向Server提交
修改的数据。以上情况的实现完全正常。
但是,如果在Server中的OnUpdateData事件中如下加入简单逻辑后
则显示“Field Value Required"错误,不止为何?
procedure TNewCom.DataSetProvider1UpdateData(Sender: TObject;
DataSet: TClientDataSet);
begin
with DataSetdo
begin
First;
while not Eofdo
begin
if UpdateStatus = usModified then
begin
Edit;
FieldByName('Price').Asfloat := 34.0;//此行是自己随意定义的逻辑
Post;
end;
Next;
end;
end;
end;

 
注意声明中的“DataSet: TClientDataSet”
dataset是实参,
自定义的逻辑当然不能通过修改dataset来实现,应另用tupdatesql等控件实现。
 
刚才想了一下,回答得有点问题,因为dataset其实还是可以直接对数据进行修改,
从出错信息看,应是一些不能为空是字段没有被赋值.
 
我想你可能是想自己修改内容,但TClientDataSet 在发送修改的数据时是封装在两个包内
修改前的原始数据是放在data包内,而修改的包是放在delta包内,修改的时候是根据data包
内的值来确定记录的,然后再把delta包内的新值写入,如果你要自定义修改的话,改delta 包好了
 
在beforeupdaterecord中修改deltaDS吧!
一定成功。
 
多人接受答案了。
 
后退
顶部