【发布时间】:2019-05-15 11:54:13
【问题描述】:
我想知道在 VBA 运行时向表中插入特定数量的新数据行时,是否可以选择 MS Access 正在使用的变量。
MS Access 通知的屏幕截图(德语):
在这种情况下,MS Access 会在此处通知我,在运行 VBA 脚本的过程中,正在向表中添加 2327 个新数据行。我不是程序员,但我觉得这个变量必须存储在某个地方(至少是临时的)。
有没有人知道如何在该数字出现时从窗口中选择/访问它,然后将其存储到 VBA 整数中以供将来进一步使用?
更新:
基本上,我有一个必须每天通过导入文件更新的主数据库。
在第一步中,检查已经存在的数据集,因此只能通过 UPDATE-Query 进行更新。
UPDATE ReiseMaster
INNER JOIN Update_Import
ON(ReiseMaster.Col1 = Update_Import.Col1)
SET ReiseMaster.Col2 = Update_Import.Col2,
ReiseMaster.Col3 = Update_Import.Col3;
然后,在第二步中,主数据库中不存在的新数据集将插入其中,其中包含它们包含的所有信息。这是负责在 VBA 过程中追加新数据行的 SQL 查询:
INSERT INTO ReiseMaster ([Col1],[Col2],[Col3])
SELECT [Col1],[Col2],[Col3] FROM Update_Import
WHERE NOT EXISTS(SELECT 1 FROM ReiseMaster
WHERE Update_Import.[Col1] = ReiseMaster.[Col1]);
我正在努力确定手术后新数据集的数量,这实际上已经由 MS Access 本身以某种方式确定(请参阅弹出窗口)。所以我的想法是只使用 MS Access 已经确定的数字。
所有 SQL 查询都存储在一个字符串中,并由“DoCmd.RunSQL”命令运行。
【问题讨论】:
-
我倾向于认为它无法访问。
-
可能不是,但根据提供的信息我们不可能说。如果代码正在做一些事情来追加记录,那么它更有可能从代码的操作中提取信息。但是由于您不提供minimal reproducible example,因此无法知道...
-
如果您使用
DoCmd语句插入数据,这些提示会自动生成,并且无法从中提取数据。相反,您可以重写代码以使用 DAO,然后您可以自己获取受影响的记录数,显示提示并保留信息。 -
我已经更新了我上面的帖子,通过添加 SQL 查询和它们将由 DoCmd.RunSQL 语句运行的提示来满足预期。感谢cmets直到现在,所以基本上没有可能直接获取该值,而是我必须使用DAO自己计算数量,对吗?
-
@Xalion 好吧,你必须停止通过 DoCmd 执行查询,并使用 DAO 执行它。请指定是否要显示提示(例如当前显示的查询),然后我可以提供一个提供预期行为的答案(提示是一些额外的工作)。还请考虑将您的问题的标题调整为 如何在 VBA 中获取受操作查询影响的记录数,以便将来的访问者更容易找到
标签: vba variables ms-access insert store