在宏中循环 3 个操作查询,直到第 4 个选择查询不返回任何记录

Posted

技术标签:

【中文标题】在宏中循环 3 个操作查询,直到第 4 个选择查询不返回任何记录【英文标题】:Looping 3 action queries in a macro until the 4th select query returns no records 【发布时间】:2012-10-03 01:55:31 【问题描述】:

我有一个名为“macro_workorder_receipt”的 Access 2007 宏,它运行一堆查询。我希望有人指导我如何在下面列出的查询中循环查询 #2 和 #3 和 #4 ,直到选择查询 #1 不返回任何记录。一旦查询 #1 停止返回记录,我希望宏跳过查询 #2 并查询 #3 和 #4 并继续运行下一个未循环的宏操作。此外,如果任何查询 #2、#3 或 #4 失败(可能是由于数据库超时,因为另一个用户锁定了表或抓取了我的事务 ID(主键),然后我才能将其附加到链接的表),那么该失败的查询应该在继续下一个查询之前重新运行(以防止不匹配的记录)。也应该有100个循环的限制,所以我不会超载数据库服务器。

    (选择查询)“qryAuto_issue_primary_key_generator” “qryAppend_autoissue_part_ID_to_sysadm_inventory_trans” “qryMktbl_tbl_dynamic_autoissue_data_with_append_status” “qryUpdt_tbl_dynamic_autoissue_data_with_append_status”

我不知道 VBA,所以如果使用常规宏操作执行循环不可行,有人可以提供 VBA 代码来复制和粘贴吗?

【问题讨论】:

对于您正在尝试做的事情,在我看来,创建 VBA 宏会更有效,并且可能在执行流程上更具逻辑性。虽然 Visual 宏可能更容易在视觉上遵循。 我知道您说过要循环查询,但是您在循环时在做什么? 循环只对几条记录执行操作查询,应该只需要几秒钟。我想限制循环不超过 100 个循环,以防有损坏的数据导致无限循环并减慢我的数据库服务器 那么为什么不写一个只更新 100 条记录的查询呢?你想达到什么目的?当您说循环查询时,您的意思是多次运行它吗? 宏通常需要循环大约 5 次,但有时我需要循环最多 50 次,如果需要追加的记录很多。 100 个循环限制是在查询由于技术困难而失败的情况下,例如如果其他人抓住了我的主键,或者表被其他用户锁定,或者数据损坏...... 【参考方案1】:

实际上,最简单的方法是使用 vba。

我通常做的是将记录集嵌套到循环中。

我可以帮你写代码,但你必须做功课。

所以,首先阅读有关“记录集”的 Access 帮助(Alt+F11Alt+F1

另外,能否请您发布您的查询的 SQL?

【讨论】:

以上是关于在宏中循环 3 个操作查询,直到第 4 个选择查询不返回任何记录的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 3在宏中使用宏?

在宏中使用 Objective C API 登录静态库

在宏中使用用户在表单中输入的信息

在宏内部使用变量内部数据集名称时,SAS语法错误22和200

无法在宏中使用 self,因为宏扩展忽略标记“self”

如何从选定的 Excel 工作表单元格中在宏中添加时间戳