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

Master-Detail 中 Detail 資料的排序

 
xgray
一般會員


發表:12
回覆:14
積分:10
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-12 22:20:28 IP:61.223.xxx.xxx 未訂閱
我是使用 Paradox,我用兩個 TTable 做 Master-Detail,在 Detail 資料表中中有 PK、FK,Primary Index 是內定的 PK,Secondary Index 是 FK,另一個 Secondary Index 是 FieldTwo,我現在所找出來的 Detail 資料的排序欄位是 FK 那個欄位,我想要讓它用 FieldTwo 去 Order,所以我將 Detail TTable 的 IndexName 在執行過程中設為 FieldTwo 的 Index,可是這樣卻讓我的 Detail 資料跑不出來。 是因為 Detail 中的資料 Order 一定得照 FK 的那個 Index 嗎?還是有其它的方法可以讓我的 Detail 的資料照我想要的某個欄位去排序呢?因為我的 Master 和 Detail 的資料是查詢之後的暫存資料檔,所以想要在資料全部新增後再去排序,如果不行的話,看來就得在新增前先將資料排好了,不知各位前輩們可否指點一下.....謝謝!!
xgray
一般會員


發表:12
回覆:14
積分:10
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-14 18:32:02 IP:61.223.xxx.xxx 未訂閱
唉,來個自問自答吧,如果 Deatil 是用 TTable 的話,其排序方式一定是用 Forgien Key,參考自 Huanlin's Delphi Page....看來我得另想辦法了....
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-14 21:27:03 IP:192.168.xxx.xxx 未訂閱
引言: 唉,來個自問自答吧,如果 Deatil 是用 TTable 的話,其排序方式一定是用 Forgien Key,參考自 Huanlin's Delphi Page....看來我得另想辦法了....
個人覺得Delphi內附的Master Detail自動關聯做得很沒有效率,速度很慢,彈性又小,最好拆掉Master與Detail的DataSource關聯,寫在Master TAble的OnScroll事件中去Open Detail的Table(用TQuery),就可以下Order by自由定義排序,我試過如此做在SQL級資料庫的還境下反而更快,在Paradox下速度也還可以! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
xgray
一般會員


發表:12
回覆:14
積分:10
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-14 23:01:27 IP:61.223.xxx.xxx 未訂閱
引言: 個人覺得Delphi內附的Master Detail自動關聯做得很沒有效率,速度很慢,彈性又小,最好拆掉Master與Detail的DataSource關聯,寫在Master TAble的OnScroll事件中去Open Detail的Table(用TQuery),就可以下Order by自由定義排序,我試過如此做在SQL級資料庫的還境下反而更快,在Paradox下速度也還可以! ~~~Delphi K.Top討論區站長~~~
嗯,謝謝站長提供的另一個方法,我會試看看的.........
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-29 14:41:10 IP:61.230.xxx.xxx 未訂閱
我的作法是使用 TQuery 來做 Master-Detail 假設 Master Table 的欄位如下:
No        varchar(4)
Name      varchar(40)
Detail Table 的欄位如下:
No        varchar(4)
ItemNo    varchar(2)
ProdNo    varchar(4)
Qty       float
Price     float
QueryMaster 的 SQL 敘述如下:SELECT * FROM MasterTable QueryDetail 的 SQL 敘述如下:SELECT * FROM DetailTable WHERE No=:No ORDER BY ItemNo 請注意紅色部分,因為參數名稱 No 與 Master Table 中的 No 欄位名稱相同所以在 QueryMaster 捲動時,就會自動將 No 欄位的值帶入 No 參數中 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
Kimmy
一般會員


發表:10
回覆:17
積分:5
註冊:2002-05-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-07-04 10:57:37 IP:203.149.xxx.xxx 未訂閱
引言: 請注意紅色部分,因為參數名稱 No 與 Master Table 中的 No 欄位名稱相同所以在 QueryMaster 捲動時,就會自動將 No 欄位的值帶入 No 參數中
自動將 No 欄位的值帶入 No 參數中...可是我寫時不會自動帶入呢... 那請問一下是不是要在QueryMaster 捲動時寫入detail.ParamByName('NO').AsString:=master.FieldByName('NO').AsString;嗎,是要在寫在AfterScroll還是BeforeScroll呢..... delphi菜鳥留 發表人 - KIMMY 於 2002/07/04 10:58:36
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-07-04 12:55:01 IP:211.20.xxx.xxx 未訂閱
引言:
引言: 請注意紅色部分,因為參數名稱 No 與 Master Table 中的 No 欄位名稱相同所以在 QueryMaster 捲動時,就會自動將 No 欄位的值帶入 No 參數中
自動將 No 欄位的值帶入 No 參數中...可是我寫時不會自動帶入呢... 那請問一下是不是要在QueryMaster 捲動時寫入detail.ParamByName('NO').AsString:=master.FieldByName('NO').AsString;嗎,是要在寫在AfterScroll還是BeforeScroll呢..... delphi菜鳥留 發表人 - KIMMY 於 2002/07/04 10:58:36
只要將detail的daasource設向maser就可.......... @@~~飛翔在天際的精靈~~@@ 發表人 - andersonhsieh 於 2002/07/04 12:57:22
------
@@~~飛翔在天際的精靈~~@@
系統時間:2024-11-23 5:08:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!