当我们运行一个更新查询时,我们得到提示,说'这些许多记录器将被更新。你想继续'是否有可能将提示消息中的值捕获到一个变量中,即将要更新的记录数量。如何从Access VBA中的更新查询提示中获取值?
回答
如果运行代码查询,您可以使用记录受影响的属性:
Dim db As Database
Set db=CurrentDB
db.Execute "Some SQL here"
db.RecordsAffected
如果你使用一个交易,你可以回滚。
是的,你可以得到的通过RecordsAffected
属性更新的记录数:
Function RowsChanged(updateQuery As String) As Long
Dim qry As QueryDef
Set qry = CurrentDb.QueryDefs(updateQuery)
qry.Execute
RowsChanged = qry.RecordsAffected
End Function
你可以叫你的更新查询的名称,这个函数来获取行的数量更新:
Dim numRows as long
numRows = RowsChanged("UpdateQuery")
帕特里克袖口提出这个功能:
Function RowsChanged(updateQuery As String) As Long
Dim qry As QueryDef
Set qry = CurrentDb.QueryDefs(updateQuery)
qry.Execute
RowsChanged = qry.RecordsAffected
End Function
我不underst以及为什么在分配QueryDef变量来执行查询时可能会直接执行CurrentDB.Execute而无需初始化(或清除)任何对象变量。
很显然,参数查询需要使用QueryDef方法,因为在执行参数之前必须将值分配给参数。但没有参数,没有理由使其变得比必要更复杂。使用像这样的通用函数不能处理参数查询,它似乎设计错误。
而且,当然,它也应该使用dbFailOnError,以便您不会收到意外的结果(dbFailOnError与QueryDef.Execute协同工作,就像它与CurrentDB.Execute一样)。在那种情况下,真的需要一个错误处理程序。
而不是每次执行SQL时都要编写错误处理程序,您可以这样做。下面的函数返回的RecordsAffected,并会从错误中正确恢复:
Public Function SQLRun(strSQL As String) As Long
On Error GoTo errHandler
Static db As DAO.Database
If db Is Nothing Then
Set db = CurrentDB
End If
db.Execute strSQL, dbFailOnError
SQLRun = db.RecordsAffected
exitRoutine:
Exit Function
errHandler:
MsgBox Err.Number & ": " & Err.Description, vbExclamation, "Error in SQLRun()"
Resume exitRoutine
End Function
它也可以用来代替DoCmd.RunSQL(你只需要调用它,并忽略返回值)。事实上,这个函数完全是为了用作DoCmd.RunSQL的全局替换而设计的。
我将上面的代码复制/粘贴到Access 2003中的一个新模块中。当我运行它时,出现“Error in SQLRun(),424:Object required”。对于SQLRun = dbLocal.RecordsAffected。 – 2008-12-10 00:29:08
- 1. 如何从Microsoft Access VBA中的SQL查询获取数据?
- 2. 在MS Access VBA中使用选择查询更新查询
- 3. 如何从SQL查询中获取值?
- 4. 如何在Access中使用子查询执行更新查询?
- 5. 如何在VBA/Access中查询设计的查询结果debug.print
- 6. 如何从Excel中的VBA查询Microsoft Access数据库字段
- 7. Django/Python:如何从模型查询集中获取最新值?
- 8. 如何在Access中编写VBA以运行更改查询
- 9. 获取Excel VBA MS Access查询来追加或显示数组查询?
- 10. mvc4如何从控制器中的tolist查询中提取值
- 11. 如何使用Word VBA中使用Access-VBA定义的函数的Access查询?
- 12. 从Access 2007中的查询获取Excel 2007中的表数据
- 13. MS Access更新查询要求参数值 - 查询取决于选择查询
- 14. 无法从更新查询中的变量中获取结果
- 15. 从Mysql查询中提取值
- 16. 从查询查询中更新查询
- 17. 如何从php中的SQL查询中获取一个值?
- 18. 如何从Grails中的SQL查询中获取字符串值?
- 19. 如何从NHibernate中的子查询中获取值?'
- 20. 使用VBA模块在Access中从窗体获取文本值
- 21. MS Access更新查询
- 22. MS Access查询更新CONCAT
- 23. 无法在android中更新查询之后从表中提取值
- 24. 刷新MS Access查询(VBA代码)
- 25. 从ListView中的EditText获取更新值
- 26. 如何从MySQL查询中的字符串提取数值?
- 27. VBA Excel - ACCESS中的更新记录
- 28. 如何从Access CommandButton中提取图像?
- 29. 如何获取在.net中查询更新的行数.net
- 30. 如何查询以获取Mongoose中的最后更新日期
谢谢你的工作 – tksy 2008-12-05 14:21:04