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

請問Master_Detail如何在Detail只載入連結之資料

尚未結案
asupeduer
初階會員


發表:36
回覆:49
積分:27
註冊:2002-11-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-07 01:44:10 IP:203.203.xxx.xxx 未訂閱
標題好像很奇怪。 簡單的說 TableA //Customer TableB //Orders 將兩個Table做Master_Detail的關聯, TableA.Cust_NO = TableB.Cust_NO //TableA客戶編號=TableB客戶編號 但是如果Customers資料有五萬筆,平均一位客戶有十筆訂單, 在Form開啟時,又將TableA,TableB同時開啟,TableB要載入五十萬筆資料, 不論單機或網路都無法負荷。 當然我可以用預存程序將TableB //Orders 只在TableA的事件On scroll時 將TableB 重新提取資料(只提取TableB中,符合顧客編號的資料) 但是似乎麻煩許多。 說了這麼多,是想請問DataSet(ADOTable或Table)能否只設定Master_Detail 關聯,但在開啟時只提取TableB中與TableA有關聯的資料列row? //還請各位前輩指教 //------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------
------
//------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
computer18
一般會員


發表:1
回覆:11
積分:2
註冊:2002-03-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-07 10:11:46 IP:61.57.xxx.xxx 未訂閱
那你可否在clientdataset那邊先設個packetrecord = 100, 先提取個100比資料,然後在onscroll的時重提資料,這樣就不會一開始就load那麼多的資料進來
asupeduer
初階會員


發表:36
回覆:49
積分:27
註冊:2002-11-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-12 15:34:32 IP:203.203.xxx.xxx 未訂閱
很抱歉,因為我用的是adotable,不是多層次的clientdataset那個元件 也沒有packetrecord這屬性,雖然可以設MaxRecord指定一次提取資料列數, 但是無法提取所需要的資料列,所以目前仍無法解決。 //------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------
------
//------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-12 15:44:15 IP:211.74.xxx.xxx 未訂閱
一般常用的法來說...Order本身就會開二個Table..Order_M,Order_D.. 然後Cust_NO是在Order_M,用來Customer 做join以利帶出Cust_NAME.. 但看你第一篇的講法好像是相反.. 不知是否有特殊設計意義ㄋ???
引言: 很抱歉,因為我用的是adotable,不是多層次的clientdataset那個元件 也沒有packetrecord這屬性,雖然可以設MaxRecord指定一次提取資料列數, 但是無法提取所需要的資料列,所以目前仍無法解決。 //------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-12 16:12:53 IP:61.220.xxx.xxx 未訂閱
改用adoquery來做 就解決了ㄚ 利用sql去select 符合條件的資料 這樣做不是就可以了嗎 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
asupeduer
初階會員


發表:36
回覆:49
積分:27
註冊:2002-11-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-13 22:43:00 IP:203.203.xxx.xxx 未訂閱
感謝各位前輩︰ 其實T.J.B.大大說的沒錯呀,用ADOQuery、ADOProc、ADODataSet都可以。 只要寫程式碼,就可以選取出我要的資料。 只是懶的寫,但我想想關於ADOTable的原理,他是在On Open的事件後, 載入所有資料,再來判定Master的資料表中,哪些是屬於某甲顧客的訂單。 基本上,已經無法可以設定一次能提取哪些指定的資料。 (因為是先載入再做判定) 所以還是得用Select語法,指定要篩選出的資料,再傳回前端, 只是這樣實在有點麻煩,但好像也沒有更好的解決方案了。 或者會不會有人寫出另一種 ADOTable,這種ADOTable其實是Query, 並且在指定Master_Detail後,即可自動幫你編輯好SQL 語法, 且只傳回與Master Table關聯的資料列row。 小弟異想天開,看看就好 //------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------
------
//------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-06 12:10:31 IP:61.218.xxx.xxx 未訂閱
用ADODataSet ADODataSet1=主 ->DataSource1 ADODataSet2=明細 ->DataSource2 再設ADODataSet2 DataSource=DataSource1 IndexFieldName=銷貨單號 MasterFields=銷貨單號 這樣就會自動更新ADODataSet2=明細
richcomp
中階會員


發表:18
回覆:66
積分:51
註冊:2002-10-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-07 14:06:55 IP:61.177.xxx.xxx 未訂閱
引言: 用ADODataSet ADODataSet1=主 ->DataSource1 ADODataSet2=明細 ->DataSource2 再設ADODataSet2 DataSource=DataSource1 IndexFieldName=銷貨單號 MasterFields=銷貨單號 這樣就會自動更新ADODataSet2=明細
以上做法確實可行,我就是這麼做的,千萬別爲了方便直接用ADOtable,我看過明細表數據庫執行SQL為: select * from detail where detail_no=?,説明明細表中資料確實是單頭變化時重新取得
系統時間:2024-07-03 14:49:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!