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

服务器端TADOQuery主从数据集动态存取数据

缺席
JustinShen
中階會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-05 09:44:21 IP:221.225.xxx.xxx 未訂閱
请教各位大大, 我遇到的项目中,由于服务器端数据表非常多而且未来有增长的可能,所以建立一个含有全部数据表和提供者的RemoteDataModule是不合适的。 因此,我试图全部使用TADOQuery来存取数据表,建立对应DataSetProvider的OnDataRequest事件,处理TClientDataSet传来的参数并重建对应的SQL Statement获取数据,同时根据数据字典的描述设置每个字段的ProviderFlags/DisplayLabel/DisplayWidth/CustomConstraints。从而保证数据显示的语言/数据输入的合法性校验(使用Regular)/数据更新。 我的方法在单一TADOQuery时全部测试正确无误;但作为主从数据集使用时仅仅获取主数据表时没有问题,一旦试图获取从表数据立刻会出现Record changed by an onther,此时并未到变更数据的环节。后来单独建立一对TADOQuery的主从数据集不做任何处理,在客户端取数据时仍然有这样的问题,不知道这是什么原因。我的程式如下: function TBaseServer.dspNestDataDataRequest(Sender: TObject; Input: OleVariant): OleVariant; var i: Integer; tmpStr: String; begin CheckLogin; PrePareNestQuery(Input); //处理传入的SQL if qryMaster.SQL.Text<>NestInput.MasterSQLStr then begin if qryDetail.Active then qryDetail.Close; if qryMaster.Active then qryMaster.Close; qryMaster.SQL.Text:=NestInput.MasterSQLStr; qryDetail.SQL.Text:=NestInput.DetailSQLStr; end else if qryDetail.SQL.Text<>NestInput.DetailSQLStr then begin if qryDetail.Active then qryDetail.Close; qryDetail.SQL.Text:=NestInput.DetailSQLStr; end; if not qryMaster.Active then qryMaster.Open; if not qryDetail.Active then qryDetail.Open; FieldValid.Clear; ChangeDisplayLabel(qryMaster); //bulid void stringlist for output to client ChangeDisplayLabel(qryDetail); //bulid void stringlist for output to client if frmSrvMain.FSettings.Debuging then Log; FieldValid.Add(NestInput.MasterSQLStr); FieldValid.Add(NestInput.DetailSQLStr); Result:=FieldVaidToVariant(FieldValid); //返回处理会的SQL Statement和每个字段的Regular end; Justin Shen 發表人 - JustinShen 於 2005/05/05 10:30:19 發表人 - JustinShen 於 2005/05/05 10:37:12 發表人 - JustinShen 於 2005/05/05 10:39:34
------
====================
我为一切作努力!
Justin Shen

JustinShen
中階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-05 15:33:36 IP:221.225.xxx.xxx 未訂閱
刚才看了别人的问题,忽然发觉我这个问题是同类的(),所以结贴了。
------
====================
我为一切作努力!
Justin Shen

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