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

master and detail table後能在detail 的table移上下筆嗎?

尚未結案
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-05 17:40:05 IP:210.201.xxx.xxx 未訂閱
1小弟用master detail table後想用detail的table移到上一筆或下一筆不行, 難道只有用master table移才能帶動detail table嗎? 2又master detail table要如何新增資料呢? 「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/04/05 17:45:02
chih
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-05 18:21:37 IP:61.217.xxx.xxx 未訂閱
如果只是Detail要下一筆的話不是在DBGrid下移動就可以了嗎??還是你要另外作一各下一筆的Button給Detail使用ㄋ??
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-05 18:36:05 IP:210.201.xxx.xxx 未訂閱
引言: 如果只是Detail要下一筆的話不是在DBGrid下移動就可以了嗎??還是你要另外作一各下一筆的Button給Detail使用ㄋ?? 小弟是用delphi7 用bde 資料庫 用ttable 在table1設為master table table2設detail table 再用2個dbgrid各連table1 table2 再compile 執行程式則 table2不知因是不是detail的關係而只能看到跟table1 master相 對應的那一筆 而且要新增也不行只能用table1新增才行 也不能上下移 那這樣子對資料庫而言只能查資料而以功能大大降低 小弟想在(table1 和table2)master detail時同時新增同索引的資料不知如何是好? 再請教如果我有a,b兩棟大樓 table1是大樓資料 table2是住戶資料 此時如想說選b棟大樓就show出各b大樓的房間編號 再選房間編號時就show出這房間編號的所有成員資料如 甲 12歲 小學 乙 30歲 **公司 丙 26歲 家庭主婦 若不用master detail 就不能得相對應的值難道只有用query查table1的房間號碼再locate table2相同的房間號碼 再用query查到此房間的所有成員資料再 show到dbgrid中嗎?(小弟是覺得這樣做會很麻煩且有很多bug產生) 不知大家如何做法,請教此時應如何做呢?
「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/04/05 18:39:41 發表人 - huangeider 於 2003/04/05 19:00:22
chih
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-05 22:55:07 IP:61.216.xxx.xxx 未訂閱
小弟是用delphi7 用bde 資料庫 用ttable 在table1設為master table table2設detail table 再用2個dbgrid各連table1 table2 再compile 執行程式則 table2不知因是不是detail的關係而只能看到跟table1 master相 對應的那一筆 而且要新增也不行只能用table1新增才行 也不能上下移 那這樣子對資料庫而言只能查資料而以功能大大降低 Master_Detial本來就是應該同時新增或修改或刪除,不然就失去了M_D的意義了吧?? 小弟想在(table1 和table2)master detail時同時新增同索引的資料不知如何是好? 同時先增可以考慮在Table先設定好.不知道你用哪種資料庫? 再請教如果我有a,b兩棟大樓 table1是大樓資料 table2是住戶資料 此時如想說選b棟大樓就show出各b大樓的房間編號 再選房間編號時就show出這房間編號的所有成員資料如 甲 12歲 小學 乙 30歲 **公司 丙 26歲 家庭主婦 若不用master detail 就不能得相對應的值難道只有用query查table1的房間號碼再locate table2相同的房間號碼 再用query查到此房間的所有成員資料再 show到dbgrid中嗎?(小弟是覺得這樣做會很麻煩且有很多bug產生) 不知大家如何做法,請教此時應如何做呢? 這樣要不要考慮用master->detail->detailㄋ?
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-07 09:11:33 IP:210.201.xxx.xxx 未訂閱
引言: 小弟是用delphi7 用bde 資料庫 用ttable 在table1設為master table table2設detail table 再用2個dbgrid各連table1 table2 再compile 執行程式則 table2不知因是不是detail的關係而只能看到跟table1 master相 對應的那一筆 而且要新增也不行只能用table1新增才行 也不能上下移 那這樣子對資料庫而言只能查資料而以功能大大降低 Master_Detial本來就是應該同時新增或修改或刪除,不然就失去了M_D的意義了吧?? 小弟想在(table1 和table2)master detail時同時新增同索引的資料不知如何是好? 同時先增可以考慮在Table先設定好.不知道你用哪種資料庫? 小弟用bde建的資料*.db的副檔名 再請教如果我有a,b兩棟大樓 table1是大樓資料 table2是住戶資料 此時如想說選b棟大樓就show出各b大樓的房間編號 再選房間編號時就show出這房間編號的所有成員資料如 甲 12歲 小學 乙 30歲 **公司 丙 26歲 家庭主婦 若不用master detail 就不能得相對應的值難道只有用query查table1的房間號碼再locate table2相同的房間號碼 再用query查到此房間的所有成員資料再 show到dbgrid中嗎?(小弟是覺得這樣做會很麻煩且有很多bug產生) 不知大家如何做法,請教此時應如何做呢? 這樣要不要考慮用master->detail->detailㄋ? [green]你是說三個table中兩個設成mastersource?
「堅持」從洗馬桶做起 Aric
chih
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-07 09:27:27 IP:211.74.xxx.xxx 未訂閱
畫面應該是.. M->大樓資料..(text) D1->房間號碼..(DBGrid) D2->D1房間所屬的成員資料.(DBGrid)RIGHT?? 這樣就是master->detail1->detail2
引言:你是說三個table中兩個設成mastersource?
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-07 13:28:44 IP:210.201.xxx.xxx 未訂閱
引言: M->大樓資料..(text) D1->房間號碼..(DBGrid) D2->D1房間所屬的成員資料.(DBGrid)RIGHT?? 這樣就是master->detail1->detail2 但detail2只能show 一筆成員資料啊 一個房間有多筆成員耶
[/quote] 「堅持」從洗馬桶做起 Aric
chih
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-07 13:33:30 IP:211.74.xxx.xxx 未訂閱
你把所有Table格式跟SELECT語法貼上來
引言: 但detail2只能show 一筆成員資料啊 一個房間有多筆成員耶 「堅持」從洗馬桶做起 Aric
發表人 - chih 於 2003/04/07 13:34:42
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-07 14:30:42 IP:210.201.xxx.xxx 未訂閱
引言: 主要欄位如下 table1 : 大廈編號 房屋數目 001 2 002 2 table2: 大廈編號 房屋編號 001 a001 001 a002 002 b001 002 b002 table3: 房屋編號 成員名稱 a001 aric a001 lulu a002 john a002 joe a002 stark b001 polo b001 gigi b002 yuki 這樣要怎麼連才能show 出 1選 大廈編號 001 後出現所有這大廈的房屋a001 a002 2選 房屋a002 時出現所有a002的成員 john 和 joe 小弟之前用table2 設mastersource table1 ,indexfield 為 大廈編號 table3 設mastersource table2 ,indexfield 為 房屋編號 因之前都只有一筆資料所以可以設masterdetail且只能秀一筆 但有兩筆資料在同一索引時就不會設了像大廈編號001有兩個房屋編號001 跟 002 小弟語意表達不清實在抱歉 < face="Verdana, Arial, Helvetica"> 「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/04/07 14:37:28
chih
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-07 14:41:19 IP:211.74.xxx.xxx 未訂閱
table1 ->DataSource1 table2->DataSource2,MasterSource->DataSource1,MasterField->大廈編號 table3->DataSource3,MasterSource->DataSource2,MasterField->房屋編號 table2跟table3都使用DBGrid來顯示資料..這樣不知道清不清楚ㄋ??TRY TRY SEE
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-07 20:30:14 IP:210.201.xxx.xxx 未訂閱
引言: table1 ->DataSource1 table2->DataSource2,MasterSource->DataSource1,MasterField->大廈編號 table3->DataSource3,MasterSource->DataSource2,MasterField->房屋編號 table2跟table3都使用DBGrid來顯示資料..這樣不知道清不清楚ㄋ??TRY TRY SEE chih 兄你誤會我的意思 master detail我會連 只是要show 出像 選 大廈編號002 就在一個dbgrid顯出所有 房屋編號(a001 a002) 選房屋編號就在 一個dbgrid顯出所有成員 這樣做法是不是只能用query呢?因用master detail連的話detail只能show出 一筆record耶?
「堅持」從洗馬桶做起 Aric
chih
版主


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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-07 20:39:29 IP:61.217.xxx.xxx 未訂閱
oh..了解..那你可以把大廈編號,跟房屋編號用combox讓user挑選, 這樣就可以用locate在Table尋找資料了,就可以秀出你要的多筆資料了..
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-07 21:14:35 IP:210.201.xxx.xxx 未訂閱
引言: 再請教 這樣master detail的功能不就很不好用了 請教有很多人用這個功能嗎? 還是根本就沒什麼人用(小弟不瞭解業界 想瞭解一下 還望賜教 謝謝) < face="Verdana, Arial, Helvetica"> 「堅持」從洗馬桶做起 Aric
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-04-07 22:57:30 IP:218.16.xxx.xxx 未訂閱
不會罷..甚會只出一筆記錄... 從新做一次罷 :    Table1 : 大廈編號 最好有 index, 但不是必要 連到 DataSources1, 再連到 DBGrid1    Table2: 大廈編號 必定要有 index 連到 DataSources2, 再連到 DBGrid2 Master Sources 選 DataSources1 按 Master Field 的 [...],選好 大廈編號 的 index (應是 primary key) Detail Field 及 Master Field 均選好 大廈編號 ,按 ADD,按 OK    現在應該已經連好 Table1 及 Table2,試行一次,在 Master 按那兩個記錄應均有兩個 Detail 在 DBGrid2 內    Table3l 房屋編號 必定要有 index 連到 DataSources3. 再連到 DBGrid3 Master Sources 選 DataSources2 按 Master Field 的 [...],選好 房屋編號 的 index (應是 primary key) Detail Field 及 Master Field 均選好 房屋編號 ,按 ADD,按 OK    
再run 程式結果應是這樣 :
DBGrid1              DBGrid2                DBGrid3
大廈編號 房屋數目    大廈編號 房屋編號      房屋編號 成員名稱
  001        2          001     a001          a001     aric
  002        2          001     a002          a001     lulu    若你在 DBGrid2 內按 A002,應變成 :
DBGrid1              DBGrid2                DBGrid3
大廈編號 房屋數目    大廈編號 房屋編號      房屋編號 成員名稱
  001        2          001     a001          a002     john
  002        2          001     a002          a002     joe
                                              a002     stark
若你在 DBGrid1 內按 002,應變成 :
DBGrid1              DBGrid2                DBGrid3
大廈編號 房屋數目    大廈編號 房屋編號      房屋編號 成員名稱
  001        2          002     b001          b001    polo 
  002        2          002     b002          b001    gigi
是否這樣呢?
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-04-08 09:57:30 IP:210.201.xxx.xxx 未訂閱
引言: 不會罷..甚會只出一筆記錄... 從新做一次罷 : Table1 : 大廈編號 最好有 index, 但不是必要 連到 DataSources1, 再連到 DBGrid1 Table2: 大廈編號 必定要有 index 連到 DataSources2, 再連到 DBGrid2 Master Sources 選 DataSources1 按 Master Field 的 [...],選好 大廈編號 的 index (應是 primary key) Detail Field 及 Master Field 均選好 大廈編號 ,按 ADD,按 OK 現在應該已經連好 Table1 及 Table2,試行一次,在 Master 按那兩個記錄應均有兩個 Detail 在 DBGrid2 內 Table3l 房屋編號 必定要有 index 連到 DataSources3. 再連到 DBGrid3 Master Sources 選 DataSources2 按 Master Field 的 [...],選好 房屋編號 的 index (應是 primary key) Detail Field 及 Master Field 均選好 房屋編號 ,按 ADD,按 OK
再run 程式結果應是這樣 :
DBGrid1              DBGrid2                DBGrid3
大廈編號 房屋數目    大廈編號 房屋編號      房屋編號 成員名稱
  001        2          001     a001          a001     aric
  002        2          001     a002          a001     lulu    若你在 DBGrid2 內按 A002,應變成 :
DBGrid1              DBGrid2                DBGrid3
大廈編號 房屋數目    大廈編號 房屋編號      房屋編號 成員名稱
  001        2          001     a001          a002     john
  002        2          001     a002          a002     joe
                                              a002     stark
若你在 DBGrid1 內按 002,應變成 :
DBGrid1              DBGrid2                DBGrid3
大廈編號 房屋數目    大廈編號 房屋編號      房屋編號 成員名稱
  001        2          002     b001          b001    polo 
  002        2          002     b002          b001    gigi
是否這樣呢? justmade兄 謝謝你詳細的解析 以上的結果是我希望做到的 在未設索引鍵前是以下的欄位(同一個欄位相同的資料可以有重複的情形) 以下的欄位就是未設索引前的狀態 但一但在Database Desktop裏做了索引後 1 table1 沒問題因大廈編號沒有重複值(001 和002 沒有重複) 2 table2 資料就剩 大廈編號 房屋編號 001 a001 002 b001 3 table3 剩下 房屋編號 成員名稱 a001 aric a002 john b001 polo (以上設索引之後的結果我知道是因索引不能重複的關係所以會變這樣子, 設完索引後自動把重複的索引欄刪除,所以重複的索引欄會剩一筆資料) 設完索引後再用chih 兄和 justmade所說的方法連master detail 因索引值都剩一筆故會變成如下的情況 DBGrid1 DBGrid2 DBGrid3 大廈編號 房屋數目 大廈編號 房屋編號 房屋編號 成員名稱 001 2 001 a001 a001 aric 002 2 002 b001 b001 polo 所以在 DBGrid2 內沒有 A002 可按因只剩一筆a001 若你在 DBGrid1 內按 002,應變成 : DBGrid1 DBGrid2 DBGrid3 大廈編號 房屋數目 大廈編號 房屋編號 房屋編號 成員名稱 002 2 002 b001 b001 polo 所以我在想master detail 的功能這麼不好有人會用嗎? 主要欄位如下(這是未設索引前的欄位) > < face="Verdana, Arial, Helvetica"> 「堅持」從洗馬桶做起 Aric
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-04-08 10:14:01 IP:218.16.xxx.xxx 未訂閱
Table2 的主索引可設成 大廈編號 房屋編號 (兩個欄位均打 *) Table3 的主索引可設成 房屋編號 成員名稱 那樣便不會重覆了 另外Table3 也可另開一個Auto Increasement ( )欄位做主索引,之後在 Secondary Index 加入以 房屋編號 做 index 而不要選 unique,在Table3 連 DataSources2 的 MasterKey 選好這個 index,也可以達到目的。
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-04-08 10:31:02 IP:210.201.xxx.xxx 未訂閱
引言: 解了我近一星期的困惑真是感恩啊 < face="Verdana, Arial, Helvetica"> 「堅持」從洗馬桶做起 Aric
系統時間:2024-07-03 4:19:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!