2011-04-14 73 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

回答