【问题标题】:Conditional looping with ADO Recordset in VBA在 VBA 中使用 ADO 记录集进行条件循环
【发布时间】:2017-06-04 16:29:13
【问题描述】:

过去,我总是通过查询数据库、将其放到工作表上、排序、读入数组,然后循环创建文档来生成报告。我现在要做的是直接从记录集中生成报告。

我遇到的问题是在使用数组时我有一个绝对记录号,所以我可以检查前一条记录中的字段是否与当前记录中的相同。

使用记录集执行此操作的最佳方法是什么?将字段值存储在变量中?使用嵌套的 While 循环?获取总记录数并使用绝对位置来回移动(这似乎不是一个好主意)?

更新 记录集包含来自 20 家不同公司的多条记录。我按公司名称对查询进行排序,然后开始循环遍历它。然后我需要检查每条记录以查看它是否来自与以前相同的公司,如果不是为该公司创建新工作表。

【问题讨论】:

  • 其中一些似乎是合理的方法 - 为什么不尝试一种呢?
  • 我觉得这很可能是一个常见的任务,并且有人能够快速回答它。更重要的是,我有兴趣找出最好的方法是什么,这样我就不会得到有效但不应该出于任何原因使用的东西。
  • 如果不知道您需要如何构建报告的确切需求,就很难知道最佳方法是什么。如果您只需要跟踪一个或多个特定字段的值何时发生变化,那么使用变量来跟踪以前的值就可以了。
  • 我同意 Tim,使用变量来跟踪任何内容,这比在记录集上来回走要好。后者应该是最后的选择。
  • 阅读您的更新后,它非常适合 VBA 变量,我们称之为currentCompany。在 Recorset 的每次迭代中,只需 if rs.fields("company") <> currentCompany then ...create new WS

标签: vba excel ado


【解决方案1】:

我通常使用“Order By”子句在查询中进行排序。然后只需使用一个变量遍历排序的记录来跟踪当前排序顺序名称,并通过将当前记录名称字段与变量值进行比较来检测名称更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多