データベース作成9 編集フォームの作成2
実践データベース作成の第9回目は編集フォームの作成Part2です。
前回は「検索フォーム」にコンボボックス、テキストボックスを追加し、プログラムを少し追加した「編集フォーム」を作成しました。
今回はテーブル内のデータを編集するプログラムを作成します。
・未入力データのチェック
・選択されているデータを検索
・テーブル内データの編集・更新
上記のような流れになります。
では、実際にVBAをどのように組み込んでいくのか説明します。
コマンドボタン(編集)のクリックイベント
コマンドボタンのイベントは「クリック時」になります。


コマンドボタンの「クリック時」には以下のプログラムを実行します。
1.各テキストボックス、コンボボックスが未入力(Null値)ではないか確認
2.「Find」を使用して編集する社員データを検索
2.「T_社員マスタ2013」を開き、レコードを編集・更新
実際のプログラムは以下のようになります。
プログラム例
Private Sub 編集コマンド_Click()
‘未入力の確認
If IsNull(Me.詳細名前) = True Then
MsgBox “名前が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細名前.SetFocus
Exit Sub
End If
If IsNull(Me.詳細性別コード) = True Then
MsgBox “性別が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細性別コード.SetFocus
Exit Sub
End If
If IsNull(Me.詳細所属部署コード) = True Then
MsgBox “所属部署が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細所属部署コード.SetFocus
Exit Sub
End If
If IsNull(Me.詳細入社日) = True Then
MsgBox “入社日が入力されていません!”, vbCritical, “未入力エラー”
Me.詳細入社日.SetFocus
Exit Sub
End If
‘編集処理
If MsgBox(“編集を行います。よろしいですか?”, vbQuestion + vbYesNo, “編集の確認”) = vbYes Then
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset
RS.Open “T_社員マスタ2013”, CN, adOpenStatic, adLockOptimistic
RS.Find “社員コード= ‘” & Me.詳細社員コード & “‘”
RS!名前 = Me.詳細名前
RS!性別コード = Me.詳細性別コード
RS!所属部署コード = Me.詳細所属部署コード
RS!入社年月日 = Me.詳細入社日
RS!更新日 = Date
RS.Update
MsgBox “編集が完了しました”, vbInformation, “編集完了”
RS.Close: Set RS = Nothing
CN.Close: Set CN = Nothing
End If
End Sub
プログラムの説明
1.未入力エラー処理
各テキストボックス、コンボボックスが未入力(Null値)の場合、警告メッセージを表示し、プログラムをその時点で終了させます。
未入力エラー処理の詳細はこちらを参照して下さい。

2.編集処理
(1)Yes/No型のメッセージボックスを表示し、Yesが選択された場合のみ編集処理を実行します。

(2)ADOを使用して「T_社員マスタ2013」を開きます。
(3)【Find】を使用して編集したい社員コードを条件にデータを検索します。
(4)データの更新を行います。
更新日フィールドには「今日の日付」(Date)を入力します。
実際には編集していないデータも同じ値を入力するプログラムになります。
(5)編集・更新が完了したメッセージを表示します。
いかがでしょうか?
これでコマンドボタンのクリック時イベントは終了です。
また、編集フォームの作成もこれにて完了になります。