更新前、更新後のイベント

  BeforeUpdate と AfterUpdate



この二つのイベントは、レコードの更新の前後に発生し、BeforeUpdate では更新を意図的にキャンセルできます。イベントは、実際は BeforeInsert と AfterInsert とも関連しており、発生順序は以下のようになります

BeforeInsert --> BeforeUpdate --> AfterUpdate --> AfterInsert

BeforeInsert は新規レコードに最初の文字を入力したときに発生し(マクロまたは Visual Basic コードでコントロールの値を設定しても、これらのイベントは発生しません)、AfterInsert は更新されたレコードが新規レコードであるときに発生します

以下は、特定のボタンをクリックした時のみレコードを更新する例です。

  
Dim bUpdate

' *********************************************************
' 初期処理
' *********************************************************
Private Sub Form_Load()

' -----------------------------------------------------
' 更新可能フラグ OFF
' -----------------------------------------------------
    bUpdate = False

End Sub

' *********************************************************
' 更新コントロール
' *********************************************************
Private Sub Form_BeforeUpdate(Cancel As Integer)

' -----------------------------------------------------
' 更新ボタンをクリックして更新確認した時のみ更新可能
' -----------------------------------------------------
    If Not bUpdate Then
        Cancel = True
    End If
     
    bUpdate = False
    
End Sub

' *********************************************************
' 修正・新規更新
' *********************************************************
Private Sub 更新_Click()
    
    Dim strKey1
    
    If MsgBox("更新しますか?", vbOKCancel Or vbDefaultButton2 Or vbQuestion) = vbOK Then
        
' -------------------------------------------------
' 新規用事前処理 @@ 要変更
' -------------------------------------------------
        If 処理モード = 1 Then
            strKey1 = Me.コード.Value
            Me.コード.ControlSource = "資格コード"
            Me.コード.Value = strKey1
        End If
    
' -------------------------------------------------
' 更新用編集 @@ 要変更
' -------------------------------------------------
        
        
' -------------------------------------------------
' 更新実行
' -------------------------------------------------
        bUpdate = True
        On Error Resume Next
        DoCmd.RunCommand acCmdSaveRecord
        If Err.Number <> 0 Then
            MsgBox (Err.Description)
        End If
        On Error GoTo 0
    
' -------------------------------------------------
' 新規用後処理
' -------------------------------------------------
        If Me.コード.ControlSource <> "" Then
            Me.コード.ControlSource = ""
        End If

' -----------------------------------------------------
' 現在のキーでリセット
' -----------------------------------------------------
        コード_AfterUpdate
    
    End If

End Sub
  











  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ