Delphi - DB Refresh替代方案

时间:2013-04-15 22:14:20

标签: database delphi firebird

我在一个显示许多计算的软件中使用Delphi和Firebird DB,根据需要,我需要在其他相关表更新时存储和显示总数。

我目前正在为几个TIBTable组件使用refresh方法,以向用户显示这些计算的结果。考虑到这个多用户应用程序以及刷新使发布缓慢的事实,是否有任何替代刷新或更优化的方式?

2 个答案:

答案 0 :(得分:3)

对于客户端需要接收通知的多用户应用程序,一种选择是使用 Firebird events 为每次数据更改发送“广播”消息(SQL INSERT,UPDATE或删除)。

客户端可以“注册”(监听)特定的消息类型,每当Firebird服务器发送具有此类型的消息时,他们都会收到它,并运行客户端应用程序代码,在您的情况下会刷新用户界面对象显示总数。

虽然在许多简单的用例中这可以是一个充分的解决方案,但也存在一些限制。我最近在这里写了关于这个主题的博客:

(我是Delphi和Free Pascal中间件库的作者)

答案 1 :(得分:1)

为了获得新数据,我们无法再刷新。但是,如果您使用IBObjects进行数据库访问,则可以使用TIBOTable.InvalidateBookmark方法使其仅刷新特定行。这比调用Refresh要快得多,后者会刷新整个数据集。

看看the documentation,不幸的是,TIBTable似乎没有任何可比性。