在Delphi中更新Cell时,在Master-Detail视图中更新DBGrids

时间:2011-09-23 22:54:56

标签: delphi sql-server-2008 ado

我使用TADOConn和TADODataSet单位提取数据并连接到TDataSources和TDBGrids。我让DBGrids正确显示信息,详细视图中的编辑信息准确地反映在后备数据库中。

我想要的是让详细DBGrid中的字段更新导致两个数据集刷新,以便始终显示最新数据。

我尝试将刷新调用放在不同级别的数据库访问的几个事件处理程序中,但它们似乎都有类似(但不同)的重新进入问题。

到目前为止,我能够提出的最好的方法是通过调用详细信息DBGrid.onColExit事件刷新来更新Master视图。

如果我一起退出刷新调用,则直到下次运行应用程序时才会显示更新的信息。

有关如何实现这一目标的任何想法?我为什么这么做错了?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您暗示您在DBGrid中所做的更改会发布到数据库中,但不会显示在网格中或在其数据集中维护,您必须从数据库中取回它们。我使用的所有数据集组件都维护其数据副本,包括通过它传递给数据库的所有更改。如果您希望通过触发器或其他进程更改数据,则可能需要刷新数据。然后你将不得不处理当前记录位置丢失的可能性,即当前记录在数据库中被删除。

我会尝试使用Dataset.AfterPost事件来启动刷新。如果发生奇怪的事情,我会考虑使用Timer来延迟刷新。