帮我看看这个问题能不能解决呀?
--------------------------------------------------------------
三层中主从表的提交方式------求最佳方式(集事务性﹐同步性)
本来去年写过一些三层的程序﹐现在拿出来看了一下﹐
感觉而些不足。我以前的从表的提交是没有问题的﹐只是主从表的提交﹐
我感觉有些问题﹐我以前的方式是﹕
**************************************************
if CDSmaster.State in [dsInsert,dsEdit] then
begin
CDSMaster.Post;
if CDSmaster.ChangeCount>0 then
begin
applyupdata(CDSMaster,Maintable,keyfield);
CDSMaster.MergeChangeLog;
end;
****以上是先提交主表*****
然后在主表的afterpost里写入﹕
if CDSsub.State in [dsEdit,dsInsert] then
CDSsub.Post;
if CDSsub.ChangeCount > 0 then
begin
applyupdata(CDSsub,subtable,keyfield);
CDSsub.MergeChangeLog;
end;
*******************采用这种方式提交从表**********
当然﹐我在里面的有设置好主从的关联字﹐以及在中间层提交时﹐
我在单表的提交中设置了事务的激活。
**************************************************
现在问题﹕
从代码中可以看出﹐我是POST后﹐还保存在内存中﹐就先真正提交了从表﹐
然后再提交主表。问题如下﹕
1﹐如果从表提交成功﹐再提交主表﹐而此时主表提交失败﹐那数据表中不是有从表没有主表数据﹐多了一些垃圾数据﹗
2﹐如果从表提交失败﹐主表一样也会提交﹐当然﹐这个我可以控制它。(不算大问题)
求最好的三层的主从提交方式﹐当然﹐我所有的提交﹐不是用clientdataset.applyupdate
我采用的是送clientdataset.data到中层﹐进行处理提交。
-----------------------------------------------------------------------------
待你的好消息呀!