1

我有一个数据库(保存在 Access .MDB 文件中),记录员工以及他们缺勤的情况,例如假期、疾病、培训课程、开始和结束日期以及失去的生产时间。

然后,我将一个 dbgrid 绑定到一个“主”ADO 查询,该查询查找所有满足日期范围、部门、名称搜索字符串的选定标准的所有员工,总结了生产时间损失的小时数。

我有另一个 dbgrid 绑定到包含缺勤记录的“详细”ADO 表。

所需的效果是详细 dbgrid 应该只包含缺勤表中与主记录中选择的行匹配的那些记录(“主”员工和“详细”缺勤表都包含一个公共 EmployeeID 字段)。

虽然我可以使用动态创建的 ADO 查询来实现这一点,每次用户移动到不同的主员工记录时都会更改查询,但我希望使用详细 DBGrid 作为删除、更新和添加其他缺勤记录的主要方法,完成网格内查找;因此用户可以选择记录类型,而无需记住该类型的代码。

我还希望此详细网格中的更改能够反映在主 dbgrid 的摘要中。

我已经使用作为 MasterDetail 链接到 Staff Query 的详细信息 ADOTable 实现了这一点,但需要将过滤设置为 True,并在代码中控制 onfilterevent;但是随着数据库大小的增加,这变得越来越慢。

我可以做些什么来提高这种性能,还是我会被迫将详细 dbgrid 设置为纯只读的,并且所有缺席记录都通过另一个表单或面板输入?

4

1 回答 1

1

有关使表成为另一个数据集的详细信息的 更多信息

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


我还希望此详细网格中的更改能够反映在主 dbgrid 的摘要中。
编辑详细信息表并发布任何更改后,您可以使用AfterPost事件重新计算摘要。

于 2011-04-14T16:03:27.763 回答