通过 VBA 中的操作查询获取受影响的记录数
Getting the number of affected records by an action query in VBA
我想知道在 VBA 期间将特定数量的新数据行插入 table 时是否可以选择 MS Access 使用的变量 运行时间。
MS 访问通知的屏幕截图(德语):
MS Access 在这里通知我,在 运行ning VBA 脚本的中间,2327 个新数据行被添加到 table。我不是程序员,但我觉得这个变量必须存储在某个地方(至少是临时的)。
有谁知道如何在 window 出现时 pick/access 这个数字,然后将其存储到 VBA 整数中以供将来进一步使用?
更新:
基本上,我有一个必须每天通过导入文件更新的主数据库。
第一步是检查已经存在的数据集,因此这些数据集只会通过更新查询进行更新。
UPDATE ReiseMaster
INNER JOIN Update_Import
ON(ReiseMaster.Col1 = Update_Import.Col1)
SET ReiseMaster.Col2 = Update_Import.Col2,
ReiseMaster.Col3 = Update_Import.Col3;
然后,在第二步中,主数据库中不存在的新数据集将被插入其中,其中包含它们包含的所有信息。这是 SQL-Query,它负责在 VBA 过程中追加新的数据行:
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"命令。
使用DAO,很容易得到执行查询后受影响的记录数。
您可以只使用 Database.RecordsAffected
属性:
Dim db As DAO.Database
Set db = CurrentDb 'Required, don't use CurrentDb.Execute else this won't work
Dim strSQL as String
strSQL = "UPDATE ReiseMaster INNER JOIN Update_Import" 'and the rest of your query
db.Execute strSQL, dbFailOnError 'Execute the query using Database.Execute
Dim recordsAffected As Long
recordsAffected = db.RecordsAffected 'Get the number of records affected
但是,这不允许您在提交查询之前看到它。要查看它并显示提示,您可以使用事务(简短示例 ),如果用户不选择提交,则回滚事务。
我想知道在 VBA 期间将特定数量的新数据行插入 table 时是否可以选择 MS Access 使用的变量 运行时间。
MS 访问通知的屏幕截图(德语):
MS Access 在这里通知我,在 运行ning VBA 脚本的中间,2327 个新数据行被添加到 table。我不是程序员,但我觉得这个变量必须存储在某个地方(至少是临时的)。
有谁知道如何在 window 出现时 pick/access 这个数字,然后将其存储到 VBA 整数中以供将来进一步使用?
更新:
基本上,我有一个必须每天通过导入文件更新的主数据库。
第一步是检查已经存在的数据集,因此这些数据集只会通过更新查询进行更新。
UPDATE ReiseMaster
INNER JOIN Update_Import
ON(ReiseMaster.Col1 = Update_Import.Col1)
SET ReiseMaster.Col2 = Update_Import.Col2,
ReiseMaster.Col3 = Update_Import.Col3;
然后,在第二步中,主数据库中不存在的新数据集将被插入其中,其中包含它们包含的所有信息。这是 SQL-Query,它负责在 VBA 过程中追加新的数据行:
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"命令。
使用DAO,很容易得到执行查询后受影响的记录数。
您可以只使用 Database.RecordsAffected
属性:
Dim db As DAO.Database
Set db = CurrentDb 'Required, don't use CurrentDb.Execute else this won't work
Dim strSQL as String
strSQL = "UPDATE ReiseMaster INNER JOIN Update_Import" 'and the rest of your query
db.Execute strSQL, dbFailOnError 'Execute the query using Database.Execute
Dim recordsAffected As Long
recordsAffected = db.RecordsAffected 'Get the number of records affected
但是,这不允许您在提交查询之前看到它。要查看它并显示提示,您可以使用事务(简短示例