三层结构中主从表更新最佳方案(300分)

  • 主题发起人 主题发起人 mcs51
  • 开始时间 开始时间
M

mcs51

Unregistered / Unconfirmed
GUEST, unregistred user!
在MIDAS中,对于主从表的增加,修改,删除有什么最好的方法?
 
本人是初学者!也是刚开始写三层!我是这样更新的:
在客户端把变化了的clientdataset1.delta送去服务端!
执行服务端的方法!即socketconnection1.appserver.fangfa(clientdataset1.delta);
然后在服务端分析clientdataset1.delta,分解成相应的sql执行!成功返回true,错就false
放弃使用applyupdate方法!它太多问题了!还请望其他高手的高见!
 
主从表的情况呢?
 
避免使用
 
三层中的主从表真是不太好办!问题多多!
 
大家的难处到底在哪里呢???
说来听听吧,
我好象没有遇到呢,
呵呵~~~~~~~~~~~~~
 
to msc51
方法也是一样的:
socketconnection1.appserver.fangfa(clientdataset1.delta,clientdataset2.delta);
 
是的,的确不好办,因为难点在于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;
解决这个问题的方法主要是找到主从表的特征,然后加以判断!!

 
希望富翁能够贡献一些代码,以方便我们学习呀?
 
有示范软件:
http://www.skycn.com/soft/12896.html
 
希望富翁能够贡献一些代码,以方便我们学习呀?
 
虽然麻烦点但能实现即可。
要建立主从关系有服务器端及客户端各应如何设置才能建立主从关系?
 
后退
顶部