Form.BeforeDelConfirm イベント (Access)

BeforeDelConfirm イベントは、1 つまたは複数のレコードを削除してバッファーに格納した後、削除を確認するダイアログ ボックスが表示される前に発生します。

構文

BeforeDelConfirm (Cancel, Response)

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

パラメーター

名前 必須 / オプション データ型 説明
Cancel 必須 整数型 (Integer) 設定によって BeforeDelConfirm イベントが発生するかどうかが決まります。 引数 CancelTrue に設定すると、 BeforeDelConfirm イベントが取り消され、 削除を確認するダイアログ ボックスは表示されません。 このイベントが取り消されると、元のレコードが復元されますが、 AfterDelConfirm イベントは依然として発生します。 CancelTrue に設定すると、引数 Response は無視されます。 CancelFalse (0) に設定されている場合、既定では Response 引数の値が Access によって使用され、Delete イベントへの応答の種類が決定されます。
Response 必須 Integer レコードを削除するかどうかを確認する [ 削除の確認 ] ダイアログ ボックスが Access に表示されるかどうかを決定する組み込み定数。 acDataErrContinue に設定すると、 削除を確認するダイアログ ボックスを表示せずに処理が続行されます。 引数 CancelFalse に設定し、引数 ResponseacDataErrContinue に設定すると、ユーザーへの確認なしでレコードが削除されます。 acDataErrDisplay に設定すると、 削除を確認するダイアログ ボックスが表示されます。 既定値は acDataErrDisplay です。

注釈

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

削除された直後のレコードは、一時的なバッファーに保存されます。 Access データベースでは、 BeforeDelConfirm イベントは Delete イベントの後で発生します (または、すべてのレコードが削除された後に複数のレコードを削除した場合は、各レコードに対して Delete イベントが発生します)。ただし、[ Delete Confirm ]\(確認の削除\) ダイアログ ボックスが表示される前に発生します。 BeforeDelConfirm イベントを取り消すと、バッファーから 1 つまたは複数のレコードが復元され、 削除を確認するダイアログ ボックスは表示されません。

Access データベースでは、レコードまたはレコードが実際に削除された後、または削除または削除が取り消された後に AfterDelConfirm イベントが発生します。 BeforeDelConfirm イベントが取り消されない場合、 AfterDelConfirm イベントは、 削除を確認するダイアログ ボックスが表示された後に発生します。 また、 AfterDelConfirm イベントは、 BeforeDelConfirm イベントが取り消された場合にも発生します。

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

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

注:

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

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

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

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

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

次の例では、 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 のサポートおよびフィードバックを参照してください。