3

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

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

4

2 回答 2

3

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

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

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

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

于 2013-04-16T06:06:15.860 回答
1

确实没有办法刷新以获取新数据。但是,如果您使用IBObjects进行数据库访问,则可以使用该TIBOTable.InvalidateBookmark方法使其仅刷新特定行。这比调用Refresh刷新整个数据集要快得多。

查看文档,不幸的是,TIBTable 似乎没有任何可比性。

于 2013-04-15T22:20:10.730 回答