全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1519
推到 Plurk!
推到 Facebook!

二個 tclientdataset 的 master/detail 關係

答題得分者是:speedup
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-05 03:29:35 IP:211.75.xxx.xxx 未訂閱
二個 TClientDataset 的 Matser/detail 是透過設定 設定對表身MasterSource和MasterField(表頭關聯欄位名稱,一個以上用分號隔開)和 IndexFieldNames,但我的資料是先透過 dcom 直接給予,如 cdsBillHead.Active:=false; cdsBillDetail.Active:=false; cdsBillDetail.MasterSource:=dsBillHead; cdsBillDetail.IndexFieldNames:='APPROVEDPOSNO'; cdsBillDetail.MasterFields:='APPROVEDPOSNO'; ERPDATA.MainControlObj.aDisp.LoadBill(BillData); cdsBillHead.Data:=BillData[0]; cdsBillDetail.Data:=BillData[1]; cdsBillHead.Active:=true; dsBillHead.DataSet:=cdsBillHead; 不知為什麼此時 cdsbilldetail 竟是為 eof 但如困我拿掉 cdsBillDetail.IndexFieldNames:='APPROVEDPOSNO'; cdsBillDetail.MasterFields:='APPROVEDPOSNO'; 則 cdsbilldetail 則有資料 各位大大不知我那裡沒設定 謝謝 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-06 12:40:45 IP:61.70.xxx.xxx 未訂閱
引言: 二個 TClientDataset 的 Matser/detail 是透過設定 設定對表身MasterSource和MasterField(表頭關聯欄位名稱,一個以上用分號隔開)和 IndexFieldNames,但我的資料是先透過 dcom 直接給予
沒這樣玩過, 如不好設定, 可改用Filter試試.
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-07 08:47:30 IP:210.243.xxx.xxx 未訂閱
試試先給值再設關聯
 cdsBillHead.Active:=false;
 cdsBillDetail.Active:=false;
 ERPDATA.MainControlObj.aDisp.LoadBill(BillData);
 cdsBillHead.Data:=BillData[0];
 cdsBillDetail.Data:=BillData[1];     dsBillHead.DataSet:=cdsBillHead;
 cdsBillDetail.MasterSource:=dsBillHead;
 cdsBillDetail.IndexFieldNames:='APPROVEDPOSNO';
 cdsBillDetail.MasterFields:='APPROVEDPOSNO';
混心雜欲 棄修身~唉 發表人 - speedup 於 2004/06/07 08:48:21
------
唉~
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-07 10:34:28 IP:211.75.xxx.xxx 未訂閱
dsBillHead.DataSet:=cdsBillHead; cdsBillDetail.MasterSource:=dsBillHead; cdsBillDetail.IndexFieldNames:='APPROVEDPOSNO'; cdsBillDetail.MasterFields:='APPROVEDPOSNO'; 這種方法我試過了,採用MasterSource,IndexFieldNames,MasterFields 的好處是 detail 在新增時,會自動代入主鍵值,如果用 Filter,就需自行處理主鍵值,如果是一支程式,那可能還好,無奈要做為所有 表單的祖先類別,就不能這樣做了,不知其他高手是否還有答案 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
t0922610976
一般會員


發表:11
回覆:16
積分:15
註冊:2003-09-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-25 15:46:11 IP:61.220.xxx.xxx 未訂閱
請參考 TDataSetField
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-25 15:59:48 IP:147.8.xxx.xxx 未訂閱
What is the dataset used in appserver? TADODataset, TTable?? And I think you need to set PacketRecords to 0 in both your master and detail client datasets.
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-06-27 00:52:46 IP:61.144.xxx.xxx 未訂閱
引言: 二個 TClientDataset 的 Matser/detail 是透過設定 設定對表身MasterSource和MasterField(表頭關聯欄位名稱,一個以上用分號隔開)和 IndexFieldNames,但我的資料是先透過 dcom 直接給予,如 cdsBillHead.Active:=false; cdsBillDetail.Active:=false; cdsBillDetail.MasterSource:=dsBillHead; cdsBillDetail.IndexFieldNames:='APPROVEDPOSNO'; cdsBillDetail.MasterFields:='APPROVEDPOSNO'; ERPDATA.MainControlObj.aDisp.LoadBill(BillData); cdsBillHead.Data:=BillData[0]; cdsBillDetail.Data:=BillData[1]; cdsBillHead.Active:=true; dsBillHead.DataSet:=cdsBillHead; 不知為什麼此時 cdsbilldetail 竟是為 eof 但如困我拿掉 cdsBillDetail.IndexFieldNames:='APPROVEDPOSNO'; cdsBillDetail.MasterFields:='APPROVEDPOSNO'; 則 cdsbilldetail 則有資料 各位大大不知我那裡沒設定 謝謝 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
换个方式,试试直接在SERVER端设置Master/Detail的关系,这样到Client端的Data,Detail的Data是Embeded在Master的Data里的。这样非常方便。
系統時間:2024-05-07 13:48:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!