當我們運行一個更新查詢時,我們得到提示,說'這些許多記錄器將被更新。你想繼續'是否有可能將提示消息中的值捕獲到一個變量中,即將要更新的記錄數量。如何從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. 如何使用VBA從Access模糊查詢中獲取結果?
- 3. 在MS Access VBA中使用選擇查詢更新查詢
- 4. 如何從SQL查詢中獲取值?
- 5. 如何在Access中使用子查詢執行更新查詢?
- 6. 如何在VBA/Access中查詢設計的查詢結果debug.print
- 7. 如何從Excel中的VBA查詢Microsoft Access數據庫字段
- 8. 更新查詢,如何從其他表中獲取列名稱
- 9. Django/Python:如何從模型查詢集中獲取最新值?
- 10. 如何在Access中編寫VBA以運行更改查詢
- 11. 如何獲取VBA函數以將當前查詢用作Access中的參數?
- 12. 如何在Excel中查詢和更新Access中的表格
- 13. 如何使用Word VBA中使用Access-VBA定義的函數的Access查詢?
- 14. django - 如何從值中獲取鍵值查詢集的值()
- 15. mvc4如何從控制器中的tolist查詢中提取值
- 16. 獲取Excel VBA MS Access查詢來追加或顯示數組查詢?
- 17. 如何在ms access vba中更新多值組合框?
- 18. 在VBA/Access中更改記錄時從當前記錄中獲取值
- 19. Mysql:無法從查詢中的選擇查詢中提取值
- 20. 如何獲取在PostgreSQL中的更新...返回查詢在Doctrine DBAL中的值
- 21. 從Access 2007中的查詢獲取Excel 2007中的表數據
- 22. MS Access更新查詢要求參數值 - 查詢取決於選擇查詢
- 23. 無法從更新查詢中的變量中獲取結果
- 24. 從SQL查詢列表中提取值
- 25. 從Mysql查詢中提取值
- 26. 從SELECT WHERE IN查詢中提取值
- 27. 如何在ASP.NET中獲取提示值?
- 28. 如何從Grails中的SQL查詢中獲取字符串值?
- 29. 如何從NHibernate中的子查詢中獲取值?'
- 30. 如何從php中的SQL查詢中獲取一個值?
謝謝你的工作 – tksy 2008-12-05 14:21:04