在宏中循环 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+F11、Alt+F1)
另外,能否请您发布您的查询的 SQL?
【讨论】:
以上是关于在宏中循环 3 个操作查询,直到第 4 个选择查询不返回任何记录的主要内容,如果未能解决你的问题,请参考以下文章