線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1153
推到 Plurk!
推到 Facebook!

向各位请教一个COM+环境下的主从表更新问题,还望赐教。

缺席
lssoft2004
一般會員


發表:4
回覆:3
積分:1
註冊:2004-03-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-12 23:04:17 IP:218.66.xxx.xxx 未訂閱
我在COM 组件中利用两个TAdoQuery构造了一个主从关系,并通过一个TDataSetProvider和一个TClientDataSet使用接口方法向客户端提供数据: 如: procedure GetMDData2(var VData: OleVariant); begin try CDSmaster.Active:=False; VData:=CDSmaster.Data; SetComplete; except SetAbort; end; end; 在客户端使用一个TClientDataSet和一个二级TClientDataSet(使用TDataSetField字段)接收数据,能够正确的运行. 如: begin ClientDataSet2.DataSetField:='Adoqry1';//使用了TDataSetField字段 ClientDataSet1.Data:=Fmts.GetData;//由COM 组件返回数据 end; 但是在更新时出现了问题: 用于更新的TDataSetProvider作了如下设置 ResolveToDataSet = True Options = [poFetchBlobsOnDemand, poCascadeDeletes, poCascadeUpdates, poAllowMultiRecordUpdates, poAllowCommandText, poRetainServerOrder] 更新用的接口方法如: procedure UpdateDataMD2(VData: OleVariant); begin try CDSmaster.Active:=True; CDSmaster.Data:=VData; CDSmaster.ApplyUpdates(-1); SetComplete; except SetAbort; end; end; 1.只能更新主表 2。从表总是不能被更新 3.当从表数据有修改等时,主表的更新不被存盘. 请各位帮助看看,在此先谢各位了!!!!
pcplayer99
尊榮會員


發表:142
回覆:738
積分:591
註冊:2003-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-14 12:00:33 IP:218.18.xxx.xxx 未訂閱
ResolveToDataSet = True 这样一来,你就是让 TADODataSet来帮你更新,而不是让 TDataSetProvider 来帮你更新。 TDataSetProvider 来帮你更新呢,它就直接支持 master /detail 表的更新。 而ADO不支持 master/detail 的更新。 另一方面,如果你的数据是 join 来自多个表,则:TDataSetProvider不能支持一次提交就自动更新多个表,而ADO则支持。
JustinShen
中階會員


發表:22
回覆:104
積分:80
註冊:2003-09-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-04 22:53:11 IP:221.225.xxx.xxx 未訂閱
请各位大大帮帮忙吧, 对于NestDataSet的数据获取和更新我知道在borland网站上有可以参照的 http://bdn.borland.com/article/0,1410,20847,00.html看看吧。 Justin Shen
------
====================
我为一切作努力!
Justin Shen

系統時間:2017-10-18 17:13:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!