Access 2000 登録・修正・削除

  General



  
' =========================================================
' 処理モードコンボボックス -> 2:更新,1:新規
'
' 閉じるボタンは使用不能
' レコード移動ボタンは表示しない
' キー項目が変更されたら更新モードにリセット
' 対象レコードが無い場合は Section 非表示
' 削除は通常不可にしておいて、更新時のみ解除する
' =========================================================
Dim bUpdate
  



  Form_BeforeUpdate



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

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



  Form_Load

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

' -----------------------------------------------------
' 更新可能フラグ OFF
' -----------------------------------------------------
    bUpdate = False
    
' -----------------------------------------------------
' フィルタ初期適用(レコード選択無し)
' -----------------------------------------------------
    Me.FilterOn = False
    Me.Filter = "学籍番号 is NULL"
    Me.FilterOn = True
    
' -----------------------------------------------------
' 明細表示 OFF
' -----------------------------------------------------
    Me.Section(0).Visible = False
    
' -----------------------------------------------------
' ボタン初期状態
' -----------------------------------------------------
    Me.更新.Enabled = False
    Me.キャンセル.Enabled = False
    Me.終了.Enabled = True
    Me.新規レコード.Enabled = False
    Me.削除.Enabled = False
    
' -----------------------------------------------------
' 表示エリアクリア
' -----------------------------------------------------
    Me.資格名.Value = ""
    Me.学生名.Value = ""
    
' -----------------------------------------------------
' 削除不能
' -----------------------------------------------------
    Form.AllowDeletions = False

End Sub
  



  更新_Click

  
' *********************************************************
' 修正・新規更新
' *********************************************************
Private Sub 更新_Click()
    
    Dim strKey1, strKen2
    
    If MsgBox("更新しますか?", vbOKCancel) = vbOK Then
        
' -------------------------------------------------
' 新規用事前処理
' -------------------------------------------------
        If 処理モード = 1 Then
            strKey1 = Me.資格コード.Value
            strKey2 = Me.学籍番号.Value
            Me.資格コード.ControlSource = "資格コード"
            Me.学籍番号.ControlSource = "学籍番号"
            Me.資格コード.Value = strKey1
            Me.学籍番号.Value = strKey2
        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 = ""
            Me.学籍番号.ControlSource = ""
        End If

' -----------------------------------------------------
' 現在のキーでリセット
' -----------------------------------------------------
        学籍番号_AfterUpdate
    
    End If

End Sub
  



  削除_Click

  
' *********************************************************
' 削除更新
' *********************************************************
Private Sub 削除_Click()

' -----------------------------------------------------
' 一時的に削除可能にする
' -----------------------------------------------------
    Form.AllowDeletions = True
    
' -----------------------------------------------------
' 削除実行
' -----------------------------------------------------
    bUpdate = True
    On Error Resume Next
    DoCmd.RunCommand acCmdDeleteRecord
    If Err.Number <> 0 Then
        MsgBox (Err.Description)
    End If
    On Error GoTo 0
    
' -----------------------------------------------------
' 削除不能に戻す
' -----------------------------------------------------
    Form.AllowDeletions = False
    
' -----------------------------------------------------
' 現在のキーでリセット
' -----------------------------------------------------
    学籍番号_AfterUpdate

End Sub
  



  学籍番号_AfterUpdate

  
' *********************************************************
' キー項目処理
' *********************************************************
Private Sub 学籍番号_AfterUpdate()

' -----------------------------------------------------
' キー変更は修正モードへ強制リセット
' -----------------------------------------------------
    Me.処理モード.Value = 2
    
' -----------------------------------------------------
' 表示エリア設定
' -----------------------------------------------------
    Me.学生名.Value = Me.学籍番号.Column(1)
    
' -----------------------------------------------------
' 新規レコードボタン初期設定
' -----------------------------------------------------
    Me.新規レコード.Enabled = False
    
    If Not IsNull(Me.資格コード.Value) And _
        Not IsNull(Me.学籍番号.Value) Then
' -------------------------------------------------
' キーが入力されている場合
' -------------------------------------------------
        Me.Undo
        Me.FilterOn = False
        Me.Filter = "学籍番号 = " & Me.学籍番号.Value
        Me.Filter = Me.Filter & " and 資格コード = " & Dd(Me.資格コード.Value)
        Me.FilterOn = True
        
        Me.Section(0).Visible = IsRec(Me)
        If Not IsRec(Me) Then
            Me.新規レコード.Enabled = True
        End If
    Else
' -------------------------------------------------
' キーは未入力
' -------------------------------------------------
        Me.Section(0).Visible = False
    End If
    
' -----------------------------------------------------
' ボタン状態の同期
' -----------------------------------------------------
    Me.更新.Enabled = Me.Section(0).Visible
    Me.削除.Enabled = Me.Section(0).Visible
    Me.キャンセル.Enabled = Me.Section(0).Visible

' -----------------------------------------------------
' 再表示
' -----------------------------------------------------
    Me.Refresh

End Sub
  



  資格コード_AfterUpdate

  
' *********************************************************
' キー項目処理
' *********************************************************
Private Sub 資格コード_AfterUpdate()
    
' -----------------------------------------------------
' キー変更は修正モードへ強制リセット
' -----------------------------------------------------
    Me.処理モード.Value = 2
    
' -----------------------------------------------------
' 表示エリア設定
' -----------------------------------------------------
    Me.資格名.Value = Me.資格コード.Column(2)
    
' -----------------------------------------------------
' 新規レコードボタン初期設定
' -----------------------------------------------------
    Me.新規レコード.Enabled = False
    
    If Not IsNull(Me.資格コード.Value) And _
        Not IsNull(Me.学籍番号.Value) Then
' -------------------------------------------------
' キーが入力されている場合
' -------------------------------------------------
        Me.Undo
        Me.FilterOn = False
        Me.Filter = "学籍番号 = " & Me.学籍番号.Value
        Me.Filter = Me.Filter & " and 資格コード = " & Dd(Me.資格コード.Value)
        Me.FilterOn = True
        
        Me.Section(0).Visible = IsRec(Me)
        If Not IsRec(Me) Then
            Me.新規レコード.Enabled = True
        End If
    Else
' -------------------------------------------------
' キーは未入力
' -------------------------------------------------
        Me.Section(0).Visible = False
    End If

' -----------------------------------------------------
' ボタン状態の同期
' -----------------------------------------------------
    Me.更新.Enabled = Me.Section(0).Visible
    Me.削除.Enabled = Me.Section(0).Visible
    Me.キャンセル.Enabled = Me.Section(0).Visible

' -----------------------------------------------------
' 再表示
' -----------------------------------------------------
    Me.Refresh

End Sub
  



  キャンセル_Click

  
' *********************************************************
' キャンセル処理
' *********************************************************
Private Sub キャンセル_Click()

    If Me.Dirty Then
        If MsgBox("編集をキャンセルしますか?", vbYesNo) = vbYes Then
            Me.Undo
            Me.Refresh
        End If
    Else
        MsgBox ("編集されていません")
    End If
    
End Sub
  



  終了_Click

  
' *********************************************************
' 終了
' *********************************************************
Private Sub 終了_Click()

    DoCmd.Close , , acSaveNo

End Sub
  



  新規レコード_Click

  
' *********************************************************
' 新規モード移行
' *********************************************************
Private Sub 新規レコード_Click()

' -----------------------------------------------------
' 処理モード変更
' -----------------------------------------------------
    Me.処理モード.Value = 1

' -----------------------------------------------------
' ボタン状態のセット
' -----------------------------------------------------
    Me.Section(0).Visible = True
    Me.更新.Enabled = True
    Me.キャンセル.Enabled = True
    Me.キャンセル.SetFocus
    
' -----------------------------------------------------
' 新規レコード挿入は一度のみ
' -----------------------------------------------------
    Me.新規レコード.Enabled = False
    
' -----------------------------------------------------
' 新規レコード挿入
' -----------------------------------------------------
    On Error Resume Next
    DoCmd.RunCommand acCmdRecordsGoToNew
    On Error GoTo 0
        
' -----------------------------------------------------
' セクション内の内容をクリア
' -----------------------------------------------------
    For Each Target In Me.Section(0).Controls
        On Error Resume Next
        Target.Value = Empty
        On Error GoTo 0
    Next

' -----------------------------------------------------
' 日付に対する初期値
' -----------------------------------------------------
    Me.資格取得年月.Value = Date
    
End Sub
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ