' *********************************************************' 更新コントロール' *********************************************************
Private Sub Form_BeforeUpdate(Cancel As Integer)
' 更新ボタンをクリックして更新確認した時のみ更新可能
If Not bUpdate Then
Cancel = True
End If
bUpdate = False
End Sub
' *********************************************************' 修正・新規更新' *********************************************************
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