2011-04-14 85 views
1

我有一個數據庫(在Access .mdb文件保存),記錄的工作人員,以及任何他們有沒有例如假日,疾病,培訓課程,開始和結束日期以及丟失生產時間的小時數。編輯詳細記錄的DBGrid

然後,我有一個綁定到「主」ADO查詢的dbgrid,查找所有符合日期範圍,部門,搜索字符串名稱的選定條件的所有員工,總結丟失的生產時間的小時數。

我有綁定到包含不存在記錄的「細節」 ADO表另一個DBGrid中。

希望的效果是,詳細dbgrid應該只包含Absence表中與主記錄中選擇的行匹配的記錄(「master」Staff和「detail」缺勤表包含一個常見的EmployeeID字段)。

雖然我可以實現這一點使用動態創建的ADO查詢,每次用戶移動到不同的主人員記錄時更改查詢,我希望使用詳細DBGrid作爲我的主要方法刪除,更新和添加額外的缺席記錄,並在網格查找中完成;因此用戶可以選擇記錄類型而無需記住該類型的代碼。

我也想在此詳細地網格中的變化被反映在主DBGrid的概要。

我已經此使用鏈接作爲MasterDetail到人員查詢的細節ADOTable,但需要有過濾設置爲True,和控制代碼的onfilterevent實現;但隨着數據庫規模的增大,這種情況越來越慢。

有什麼我可以做些什麼來改善這樣的表現,或將我不得不有詳細的DBGrid純粹只讀,並且所有缺勤記錄通過另一種形式或面板中輸入?上Making the Table a Detail of Another Dataset

ADOTable2.MasterSource := DataSource1; 
ADOTable2.MasterFields := 'EmployeeID'; 


+0

你有鏈接主數據集和詳細數據集嗎?因爲DbGrid的詳細信息應該反映精確數據集 – Najem 2011-04-14 15:57:19

+0

是的,但我需要在ADOTable詳細信息表上使用onfilterevent,因爲我也需要過濾日期範圍。最大的問題是,隨着表格變大,使用這種方法非常緩慢。同樣使用AfterPost將細節記錄寫入細節表後,我可以獲得新的小時數,這意味着我必須使用BookMark返回選定的主記錄,並且在使用查詢作爲當多個用戶更新數據庫時,返回的數據集可能會有所不同。 – robert 2011-04-15 08:16:52

回答