Access のフォームにレコードへの変更を保存するようにユーザーに求める方法

元の KB 番号: 197103

ヒント

基本的なマクロ、コーディング、相互運用性のスキルが必要です。

概要

フォームの次のレコードに移動するか、フォームを閉じると、現在のレコードに加えた変更が自動的に保存されます。 この記事では、BeforeUpdate イベント プロシージャを使用して、Microsoft Access が続行する前に保存操作を確認するように求めるメッセージを表示する方法について説明します。

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

詳細情報

注意

この例の手順に従う場合は、サンプル データベースのNorthwind.mdbを変更します。 Northwind.mdb ファイルをバックアップし、データベースのコピーに関する次の手順に従います。

この例では、[顧客] フォームの BeforeUpdate イベント プロシージャを使用して、Microsoft Access がレコードを保存する前に変更を確認するようにユーザーに求めます。

  1. サンプル データベース Northwind.mdbを開き、[デザイン] ビューで [顧客] フォームを開きます。

  2. フォームのプロパティを次の BeforeUpdate イベント プロシージャに設定します。

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    
     ' This procedure checks to see if the data on the form has
     ' changed. If the data has changed, the procedure prompts the
     ' user to continue with the save operation or to cancel it. Then
     ' the action that triggered the BeforeUpdate event is completed.
    
     Dim ctl As Control
    
     On Error GoTo Err_BeforeUpdate
    
     ' The Dirty property is True if the record has been changed.
     If Me.Dirty Then
       ' Prompt to confirm the save operation.
       If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _
               "Save Record") = vbNo Then
          Me.Undo
       End If
     End If
    
    Exit_BeforeUpdate:
     Exit Sub
    
    Err_BeforeUpdate:
     MsgBox Err.Number & " " & Err.Description
     Resume Exit_BeforeUpdate
    End Sub
    
  3. [ デバッグ ] メニューの [ 北風のコンパイル] をクリックします。

  4. [ ファイル ] メニューの [ Save Northwind]\(Northwind の保存\) をクリックします。

  5. [ ファイル ] メニューの [閉じる] をクリック し、Microsoft Access に戻ります

次に、レコードを変更し、別のレコードに移動するか、フォームを閉じると、現在のレコードを保存することを確認するメッセージが表示されます。 [いいえ] をクリックすると、レコードがリセットされ、操作は通常どおり続行されます。