Delphi DBGrid中的可编辑详细记录

时间:2011-04-14 15:08:22

标签: delphi filter jet dbgrid

我有一个记录工作人员的数据库(保存在Access .MDB文件中),并且他们有任何缺席,例如假期,疾病,培训课程,开始和结束日期以及生产时间损失的小时数。

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

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

所需的效果是,详细信息dbgrid应该只包含Absence表中与主记录中选择的行匹配的记录(“master”Staff和“detail”Absence表包含一个公共EmployeeID字段)。

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

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

我使用详细的ADOTable作为MasterDetail链接到Staff Query,但需要将过滤设置为True,并控制代码中的onfilterevent;但随着数据库大小的增加,这种情况变得越来越慢。

我有什么办法可以改善这种性能,或者我是否会被迫将详细信息dbgrid视为纯粹只读,并且所有缺勤记录都是通过其他表单或面板输入的?

1 个答案:

答案 0 :(得分:1)

有关Making the Table a Detail of Another Dataset

的更多信息
ADOTable2.MasterSource := DataSource1;
ADOTable2.MasterFields := 'EmployeeID';


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