【问题标题】:Make persistent a DAO recordset in a class module在类模块中持久化 DAO 记录集
【发布时间】:2009-08-08 00:58:01
【问题描述】:

作为一组递归任务的一部分,我正在为子结果过滤 DAO 记录集。我正在尝试加快例程的速度,并且可以看到每次实例化类对象时都会重新打开记录集。这一步发生了数百次。没有办法重复使用吗?这里的关键词是坚持,不是吗?

我尝试在 Instantiate 事件中设置记录集,或者在函数中设置。我尝试使用静态(而不是暗淡或私有)来声明记录集。我还摆弄了如何声明和设置类对象。

我知道一个常见的解决方案是为每个调用更改为特定的 SQL 源,但是生成记录集的查询本身很慢,所以我认为这没有帮助。是的,基表是最佳索引的。

我很高兴发布代码,但这足以让您提供任何提示吗?

【问题讨论】:

  • 请注意,索引 Yes/No aka Booklean 字段也有助于提高性能。例如,在包含 2000 条记录的作业表上索引“是/否”字段会在查询中产生很大的性能差异,该查询还包含具有 80 万条记录的表。
  • 我将索引放置在有排序/过滤器的地方......所以如果一个 Y/N 字段将被排序或过滤,那么它会得到一个索引。你的意思是它有助于索引一个 Y/N,即使它没有进入查询处理?还是您只是说 Y/N 需要像任何其他字段一样建立索引,如果它是查询处理的一部分?

标签: ms-access vba class


【解决方案1】:

记录集本身是否只需要创建一次,然后过滤多次?

如果是这样,您可以将记录集作为参数传递给对其进行过滤的类方法/函数吗?这样记录集就可以创建一次。

【讨论】:

  • 啊哈!这可能就是我需要的。我会给它一个通行证(可以这么说)。
  • 一周后:所以让我对这个答案进行投票并接受它。这很好,因为我的方法中的错误(这是一个愚蠢的错误)代价高昂,纠正它是一种很大的解脱。
猜你喜欢
  • 2013-08-14
  • 2017-01-22
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
相关资源
最近更新 更多