關係型資料庫設計遵循正規化原則,主表(如職工表)僅存外鍵(單位編號),詳細資料放在從表(單位表)。但使用者習慣直接選「單位名稱」而非背編號。Delphi 3 提供查找字段機制,單記錄編輯用 TDBLookupComboBox,多記錄網格編輯用 DBGrid Lookup Field,兩種模式各有適用場景。
此控件同時連結兩個資料源:
DataField = DWBH // 職工表的單位編號
DataSource = DataSource1 // 職工表資料源
KeyField = DWBH // 單位表的單位編號
ListSource = DataSource2 // 單位表資料源
ListField = DWMC // 顯示單位名稱
運行時點擊下拉箭頭,即可從單位名稱清單選擇,自動寫入對應編號至職工表。
DBGrid 需在主表 Table1 動態新增一個 Lookup 字段,步驟稍繁但功能更強:
Table1DWBH.Visible = False 隱藏編號。Table1DWMC,屬性:
Table1DWMC.DisplayLabel = '單位名稱'| 場景 | 推薦控件 | 理由 |
|---|---|---|
| 單筆表單編輯(Master/Detail) | TDBLookupComboBox | 輕量、直觀、適合 Detail 區塊 |
| 試算表式批量編輯、瀏覽大量記錄 | DBGrid Lookup Field | 支援排序、過濾、多欄同時編輯 |
| 需顯示多欄資訊(如編號+名稱+電話) | DBGrid + Lookup Field | 可設 ListField 為多欄組合 |
查找字段是 Delphi 資料庫開發的經典神技,善用它能讓介面既符合正規化設計,又貼近使用者直覺操作習慣。