2

変更中の Microsoft Access アプリケーションでは、特定の vba 関数が次のメッセージを返します。

"Record is Deleted"  

これは、エラー番号と黄色の警告アイコンのないメッセージ ボックスに表示されます。

これは、従来のエラー処理 ("on error...") でトラップできるエラーではありません。DoCmd.setwarnings=false の影響も受けません。

このアイテムをトラップまたは処理する方法についてアドバイスを探しています。

4

2 に答える 2

2

On Error「レコードが削除されました」は実行時エラー 3167 であり、通常の処理でトラップできます。これは、次のような VBA コードで確認できます。

Sub foo()
Dim cdb As DAO.Database, rst As DAO.Recordset
Set cdb = CurrentDb
Set rst = cdb.OpenRecordset("SELECT * FROM Table1 WHERE ID=26", dbOpenDynaset)
MsgBox "Waiting..."
On Error GoTo foo_Error
Debug.Print rst!ID
On Error GoTo 0
rst.Close
Set rst = Nothing
Set cdb = Nothing
Exit Sub
foo_Error:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly, "Trapped Error"
End Sub

そのコードを実行し、MsgBoxが表示されている間に「その下からレコードを削除」すると、 のrst!参照がDebug.Print実行時エラー 3167 をトリガーし、それがOn Errorキャッチされます。

コードをチェックして、On Error単に. それはあなたが説明する行動を説明するでしょう。MsgBoxErr.Description

于 2013-08-07T01:26:48.767 に答える