0

我想执行以下操作:

1)打开一个数据集(使用TMSQuery,SDAC DevArt组件)

2)将内容缓存到磁盘(想象一个切割者列表)

3)下次我需要打开数据集时,我将首先用缓存数据填充它,然后我将通过调用 TMSQuery.RefreshQuick 方法来刷新它。

通过这种方式,我计划大幅提高速度,因为我不需要检索在以前的应用程序运行中已经检索到的记录。

我怎样才能获得这个缓存?我有许多带有 TMSQuery 的数据模块,所以不知何故我希望有一个全局例程来检查每次我尝试打开 TMSQuery 时,如果该查询以某种方式被标记,我将尝试从缓存中恢复,调用 RefreshQuick,以防万一失败我将调用打开。

你能建议吗?

(我使用 Delphi 2009 和 SDAC 4.80)

4

2 回答 2

3

您可以为此使用TClientDataSetTDataSetProvider组件,以这种方式连接组件。

TMSQuery->TDataSetProvider->TClientDataSet

TClientDataSet是从磁盘持久化和检索数据的一个很好的替代方案。

有关 ClientDataset 的更多信息,请参阅这些链接

于 2010-10-07T10:58:22.017 回答
1

你可以做两件事:

  1. 创建 TMSQuery 组件的后代并覆盖 Open 函数(您使用 TMSQuery 搜索所有数据模块 .dfm 和 .pas 文件并替换为 TCachedTMSQuery)
  2. 绕行/挂钩 TMSQuery.Open(运行时修补)
于 2010-10-07T10:51:05.023 回答