是的,的确不好办,因为难点在于Provider更新记录时是一批批数据地更新,虽然我们也可以访问和修改从前台传过来的异动数据,但由于midas并不是每次都会把一个完整的主/从表结构回传到服务器端(因为有可能用户只修改从表,而不修改主表,这时回传到服务器端的只会是关于从表的数据,而没有主表),所以我们必须用一种通用的方法使得我们可以很准确地知道前台传过来的异动数据是属于主表还是从表,还是真正的主从表,从而对每一条异动记录进行加工!
本人有一个不算太好的办法,讲出来让大家指正一下,办法如下: 关于这个问题和你表的设计或许会有少少关系,我一般在主表,和从表中都加上主建(主表是SN,从表是SSN),当客户端要更新的时候,其实在Provider的BeforeUpdateRecord事件中已经给了我们必要去区分主表或从表的条件了,根据这些条件我们就可以用代码去实现更新主从表, 例如:
if (UpdateKind =ukModify)
and (Assigned(DeltaDS.FindField('DetailTableName'))) then
begin
//。。。。。。。对主表进行修改,因为只有主表才会包含有TDataSetField
end;
if (UpdateKind =ukModify)
and (Assigned(TClientDataSet(DeltaDS).DataSetField) ) then
begin
。。。。。。。对从表进行修改,因为只有从表datasetField 属性才不会为空
end;
解决这个问题的方法主要是找到主从表的特征,然后加以判断!!