單表瀏覽無法滿足真實業務。主明細模式讓多個關聯資料表同步呈現:主表存綜合資訊(如客戶基本資料),明細表存詳細紀錄(如該客戶所有訂單),透過共同鍵值(如 CustNo)自動同步篩選。
| 元件 | 關鍵屬性 | 設定值/說明 |
|---|---|---|
Table1 (主表) | TableName | CUSTOMER.DB |
DatabaseName | DBDEMOS | |
Active | True | |
DataSource1 | DataSet | Table1 |
AutoEdit | False(防誤改) | |
Table2 (明細表) | TableName | ORDERS.DB |
IndexFieldNames | CUSTNO(明細表索引鍵) | |
MasterFields | CUSTNO(主表關聯鍵) | |
MasterSource | DataSource1 | |
Active | True | |
DataSource2 | DataSet | Table2 |
DBGrid1 | DataSource | DataSource1(主表格) |
DBGrid2 | DataSource | DataSource2(明細格) |
DBNavigator1 | DataSource | DataSource1(控主表導航) |
使用者在 DBNavigator1 移動主表記錄指標時,Table2 依 MasterFields 自動篩選符合當前 CustNo 的訂單,DBGrid2 即時呈現該客戶所有訂單明細。
訂單本身又是項目明細的主表。Table3 連 Items.DB,設 IndexFieldNames := 'ORDERNO'、MasterFields := 'ORDERNO'、MasterSource := DataSource2。此時 Orders.DB 同時扮演「Customer 的明細」與「Items 的主表」雙重角色,形成主-明細-明細三層聯動。
| 層級 | Table | IndexFieldNames | MasterFields | MasterSource |
|---|---|---|---|---|
| 主表 | Table1 (Customer) | — | — | — |
| 第一明細 | Table2 (Orders) | CUSTNO | CUSTNO | DataSource1 |
| 第二明細 | Table3 (Items) | ORDERNO | ORDERNO | DataSource2 |
掌握此模式,即可構建任意深度的關聯資料瀏覽介面,無需撰寫一行 SQL。