2017-07-03 160 views
1

有沒有辦法從MS Access中運行操作查詢時彈出的「警告」中捕獲(通過vba)的信息?vba中的捕獲操作查詢警告(MS Access)

如:當更新查詢運行時,我想捕獲要更新的記錄數量,並將其與我的代碼中的另一個變量進行比較。

如果可能的話,我想保持警告設置爲關閉!我想我正在查看是否有任何方法來自定義動作查詢警告。首先十分感謝!

+0

https://support.office.com/zh-cn/article/Turn-action-query-confirmation-messages-on-or-off-e58e4bba-9d54-4b9d-b962-9eca048e5335 – y4cine

回答

2

使用Execute ADO的方法(請參閱回答@邁克爾Z.)或DAO:

Dim db As DAO.Database 

Set db = CurrentDb 
db.Execute "SELECT * INTO someschema.sometable FROM someschema.anothertable", dbFailOnError 
MsgBox db.RecordsAffected 

Querydefs也有RecordsAffected財產。避免使用DoCmd.RunSQL命令。

+0

爲什麼我應該避免使用DoCmd.RunSQL命令?感謝您的反饋 – DrL

+0

因爲您需要抑制錯誤消息並且無權訪問RecordsAffected屬性。錯誤抑制會影響整個應用程序,如果您不能啓用它,例如錯誤,即使表單/報告/查詢構建器也不會問您保存 –

0

我相信你正在尋找DoCmd.SetWarnings False

https://msdn.microsoft.com/VBA/Access-VBA/articles/docmd-setwarnings-method-access

爲了獲得影響你必須像這樣運行的查詢行。

Dim recordsAffected As Long 
cn.Execute "SELECT * INTO someschema.sometable FROM someschema.anothertable", _ 
      recordsAffected 
MsgBox recordsAffected 
+0

還需要聲明和設置cn對象變量? – June7

+0

是的,但我數字OP應該已經有了。我會稍微更新答案。 –