Form.AfterDelConfirm イベント (Access)

AfterDelConfirm イベントは、削除とレコードが実際に削除されたことをユーザーが確認した後、または削除が取り消されたときに発生します。

構文

AfterDelConfirm (Status)

expressionForm オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
状態 必須 整数型 (Integer) レコードが削除されたかどうかを示す組み込み定数。 acDeleteOK は、削除が成功したことを示します。 acDeleteCancel は、Visual Basic で削除が取り消されたことを示します。 acDeleteUserCancel は、削除がユーザーによって取り消されたことを示します。

注釈

このイベントが発生したときに、マクロまたはイベント プロシージャを実行するには、" AfterDelConfirm /削除後確認" プロパティをマクロ名または "[Event Procedure]"/"[イベント プロシージャ]" に設定します。

削除された直後のレコードは、一時的なバッファーに保存されます。

Microsoft Access データベースでは、レコードが実際に削除されるか、削除が取り消された後に、 AfterDelConfirm イベントが発生します。 BeforeDelConfirm イベントが取り消されない場合、 AfterDelConfirm イベントは、 削除を確認するダイアログ ボックスが表示された後に発生します。 また、 AfterDelConfirm イベントは、 BeforeDelConfirm イベントが取り消された場合にも発生します。 AfterDelConfirm イベント プロシージャでは、削除に関するステータス情報が返されます。 たとえば、 AfterDelConfirm イベントに関連付られているマクロまたはイベント プロシージャを使用すると、レコードの削除の影響を受ける集計を再計算できます。

Access プロジェクト (.adp) では、レコードまたはレコードが実際に削除される前に AfterDelConfirm イベントが発生します。 Microsoft SQL Serverで不要なトランザクションを開かないようにするために、トランザクションを開く前に削除の確認を求めるメッセージが表示されます。 削除を確認すると、Access はSQL Serverでトランザクションを開き、DELETE ステートメントを発行してレコードまたはレコードを削除し、フォームの Delete イベントを発生させます。 削除の確認を求められたときに [いいえ] を選択した場合、レコードを削除するSQL Serverでトランザクションが開かなくなり、フォームの Delete イベントは発生しません。

Delete イベントを取り消すと、 AfterDelConfirm イベントは発生せず、 削除を確認するダイアログ ボックスも表示されません。

注:

[!メモ] [ Access のオプション] ダイアログ ボックスの [ 編集] タブの [ 確認] で [ レコードの変更] チェック ボックスをオフにした場合は、 AfterDelConfirm イベントは発生せず、 削除を確認するダイアログ ボックスも表示されません。

Delete イベントが発生したときに実行されるマクロやイベント プロシージャを使って、レコードが削除されないようにしたり、特定の条件を満たす場合にだけレコードが削除できるように制限したりできます。 Delete イベントを使用して、レコードが削除される前に確認を求めるダイアログ ボックスを表示することもできます。

レコードを削除すると、削除されたレコードの後の次のレコードにフォーカスが移動し、そのレコードの Current イベントが発生し、そのレコードの最初のコントロールの Enter イベントと GotFocus イベントが続きます。

その後、 BeforeDelConfirm イベントが発生し、Access に削除の 確認 を求める [削除の確認] ダイアログ ボックスが表示される直前に発生します。 ダイアログ ボックスに応答 (削除を確定またはキャンセル) すると、 AfterDelConfirm イベントが発生します。

一度に複数のレコードを削除することもできます。 この場合、各レコードが削除されるたびに Delete イベントが発生します。 これにより、 Delete のマクロまたはイベント プロシージャで、各レコードが実際に削除される前にレコード内のデータにアクセスして、各レコードを削除するかどうか選択できます。 複数のレコードを削除する場合、削除した次のレコードに対する Current イベント、およびそのレコードの最初のコントロールに対する Enter イベントと GotFocus イベントは、すべてのレコードが削除されるまで発生しません。 つまり、 Delete イベントは選択した各レコードに対して発生しますが、他のイベントは選択したすべてのレコードが削除されるまで発生しません。 また、AfterDelConfirm イベントも、選択したすべてのレコードが削除されるまで発生しません。

次の例では、 BeforeDelConfirm イベント プロシージャを使用して、 削除を確認するダイアログ ボックスを非表示にし、レコードが削除されたときにカスタム ダイアログ ボックスを表示する方法を示します。 また、 AfterDelConfirm イベント プロシージャを使用して、削除が正常に行われたかどうか、または Visual Basic あるいはユーザーにより取り消されたかどうかを示すメッセージを表示する方法も示します。

Private Sub Form_BeforeDelConfirm(Cancel As Integer, _ 
 Response As Integer) 
 ' Suppress default Delete Confirm dialog box. 
 Response = acDataErrContinue 
 ' Display custom dialog box. 
 If MsgBox("Delete this record?", vbOKCancel) = vbCancel Then 
 Cancel = True 
 End If 
End Sub 
 
Private Sub Form_AfterDelConfirm(Status As Integer) 
 Select Case Status 
 Case acDeleteOK 
 MsgBox "Deletion occurred normally." 
 Case acDeleteCancel 
 MsgBox "Programmer canceled the deletion." 
 Case acDeleteUserCancel 
 MsgBox "User canceled the deletion." 
 End Select 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。