主從複合結構(Master/Detail)是基於"一對多"的關係,在一個資料庫表中提供詳細的資訊,而這個表是通過另一個資料庫表的外來關鍵字訪問相關記錄的。基於主從複合結構,我們可以在瀏覽一個表中的資料時,同時給出另一個表中與這個記錄相關的所有記錄資訊。Borland C++Builder提供了TTable 和TQuery類型的資料庫控制項,可以方便地實現資料庫表的Master/Detail關係,本文即以BCB中內建的樣本資料庫BCDEMOS為例來說明如何採用不同方法實現資料表的主從複合結構關係,以資料瀏覽功能為例:即在瀏覽主要資料表Customer.db(客戶資訊)記錄的同時,顯示從資料表Orders.db(客戶定單資訊)中與其相關的所有記錄的詳細資料。
TTable控制項相關的基本屬性簡介如下:DatabaseName:設定要開啟的資料庫別名或資料庫目錄路徑;TableName:設定所要關聯開啟的資料庫表檔案名稱;Active:設定為true時資料庫表檔案自動開啟,否則需要用代碼在程式中開啟資料表。TQuery控制項的基本屬性:DatabaseName:設定要開啟的資料庫別名或資料庫目錄路徑;SQL:Tstring類型,所要執行的SQL資料查詢語句,可以直接在對象觀察器(Object Inspector)中雙擊開啟SQL屬性進行編輯,Active:設定為true時自動開啟查詢資料庫表檔案,否則需要用代碼在程式中開啟查詢資料表。兩者與M/D相關的屬性將在下邊結合樣本加以解釋。
一、TTable控制項關聯主、從表實現Master/Detail關係報表
Master/Detail關係最簡單的實現方法是用兩個TTable控制項分別與主表及從表關聯。分別起名為TableMaster和TableDetail,設定TableMaster的DatabaseName為BCDEMOS,TableName為Customer.db;設定TableMaster的DatabaseName為BCDEMOS,TableName為Orders.db。如此即可分別關聯上主從資料表。