DataSetProvider怎么得到客户端传来的数据集(看清楚了!)(150分)

  • 主题发起人 主题发起人 hntangwei
  • 开始时间 开始时间
H

hntangwei

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,小弟送分来了!
   我想在RDM的DataSetProvider中得到客户端的传来的
 改变后的数据。。我要的只是改变后的那一部分数据。
我顼在知道在BeforeUpdata的时候可以得到一个数据集,
 但它是一个跟ClientDataSet中Delta一佯的数据集,一个修改
过的数据会有两条记录,我在那个地方才能得到只是一条呢(修改后的那条)
 BTW.小弟用d5了,d4中Provider已经没有了,另外,d4 中
ClintdataSet.Provider.xxx,在D5中ClientDataSet已经没有
Provider这个接口了。所以,各位可不能用这个来回答哦!  
 
在更新数据库之前编辑Delta数据包
在Provider把更新后的数据传递到远程数据库服务器之前,可以通过OnUpdateData事件对这些数据进行编辑。
type TProviderDataEvent = procedure(Sender: TObject;
DataSet: TClientDataSet) of object;
property OnUpdateData: TProviderDataEvent;
在这个事件中,可以使用TClientDataSet的属性和方法对Delta数据包中的数据进行编辑,然后把编辑后的数据更新到数据库中。其中,最有用的是UpdateStatus属性,它代表当前数据包中数据的状态。可能有的值有:

参数 含义
usUnmodified 记录没有被改变
usModified 记录已经发生改变
usInserted 已经插入了记录
usDeleted 已经删除了记录

比如:下面的事件在每个新记录的相应字段插入当前的日期
procedureTMyDataModule1.Provider1UpdateData(Sender: TObject;
DataSet: TClientDataSet);
begin
with DataSetdo
begin
First;
while notEofdo
begin
if UpdateStatus = usInserted then
begin
Edit;
FieldByName('DateCreated').AsDateTime := Date;
Post;
end;
Next;
end;
end;
 
接受答案了.
 
后退
顶部