撰寫 Master-detail 資料表關聯時的注意事項:
- 如果資料庫本身不支援 Cascading delete, 自己要記得做。
- 如果 master table 的 Key Field 是採用電腦自動編號, 應使用程
式自動編號, 而不要依賴資料庫的 AutoInc 形態的欄位。
- Master table 的 Key Field 應該是儲存以後就不能修改, (否則
detail table 將失去關連)
- 當 master table 新增一筆資料時, 必須將這筆資料儲存之後才允許
新增 detail 細項, 以免在網路多人環境下易造成 Key Violation.
- Master table 經常會有一個 (以上) 的加總欄位, 其值是 detail
table 某欄位的總和, 欲實作此欄位, 必須在每次 detail table 的
AfterPost 之後自行加總, 再將總和丟給 master table. 加總的方
法: 可利用一迴圈或是一個 TQuery, 若為 server based 資料庫,
可利用 trigger 為之 (每當 detail table 有 Insert 或 Update
等動作時就重新加總。
- DisableControls 會切斷 Table 與 DataSource 之間的連接, 而
Detail Table 是透過 MasterSource 屬性來取得資料, 所以在處理
Master-Detail Table 時不可使用 DisableControls. 如果要加快
顯示速度 (例如: TDBGrid), 應尋求其他的方法解決。
               (
geocities.com/huanlin_tsai)