データベース作成

Access VBA データベース作成8 コンボボックスの選択データを表示 編集フォームの作成1

データベース作成8 編集フォームの作成1

実践データベース作成の第8回目は編集フォームの作成Part1です。
「T_社員マスタ2013」に登録されたデータから編集したいデータを検索し、データ内容を書き換えるフォームを作成します。前回までに作成した「検索フォーム」に編集ボタンを追加したスタイルになります。

sakusei22

編集フォームからの変更点は以下になります。
詳細データ表示の「性別」と「所属部署」をそれぞれテキストボックスからコンボボックスへ変更。それに伴い、各コンボボックスの隣にコンボボックスで選択されたデータの内容を表示するテキストボックスを配置しました。
例:性別コードで「0」を選択すると隣のテキストボックスに「男性」と表示される。
本来は今までのフォーム作成でも配置しておくべきであったものですが、うっかり忘れておりました・・・・。
そして、詳細データの内容を編集した後テーブルにデータを反映させる為に「編集コマンドボタン」のクリック時イベントにテーブル内容を編集するプログラムを組み込みます。
詳細データの内容から編集したい項目を直接変更し、テーブルデータを書き換えます。
また、いつものことですが追加したコンボボックスとテキストボックスは「非連結」にしておきます。

では、実際にVBAを組み込んでいきましょう。
今回は「編集フォーム」から追加されたプログラムを説明します。

・フォームの「読み込み時」イベント
編集用のコンボボックスが2つ追加されたので、このコンボボックスを作成します。
・コンボボックスの内容を表示するテキストボックス
検索結果リストの「クリック時」及び各コンボボックスの「更新後処理」にプログラムを記述します。
実際のプログラムは以下のようになります。

フォームの読み込み時のプログラム

Private Sub Form_Load()

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Dim RS1 As ADODB.Recordset
Dim RS2 As ADODB.Recordset
Dim RS3 As ADODB.Recordset

Set CN = CurrentProject.Connection

‘編集用性別コンボボックスの作成
Set RS2 = New ADODB.Recordset

Me.詳細性別コード.ColumnCount = 2
Me.詳細性別コード.ColumnWidths = “2.0cm;1.0cm”
Me.詳細性別コード.RowSource = “コード;性別”
Me.詳細性別コード.RowSourceType = “値リスト”

RS2.Open “T_性別マスタ”, CN, adOpenStatic, adLockOptimistic

Do Until RS2.EOF

Me.詳細性別コード.RowSource = Me.詳細性別コード.RowSource & “;” & RS2!性別コード & “;” & RS2!性別

RS2.MoveNext
Loop

RS2.Close: Set RS2 = Nothing

‘所属部署コンボボックスの作成
Set RS3 = New ADODB.Recordset

Me.詳細所属部署コード.ColumnCount = 2
Me.詳細所属部署コード.ColumnWidths = “2.0cm;1.0cm”
Me.詳細所属部署コード.RowSource = “コード;部署”
Me.詳細所属部署コード.RowSourceType = “値リスト”

RS3.Open “T_所属部署マスタ”, CN, adOpenStatic, adLockOptimistic

Do Until RS3.EOF

Me.詳細所属部署コード.RowSource = Me.詳細所属部署コード.RowSource & “;” & RS3!所属部署コード & “;” & RS3!所属部署名

RS3.MoveNext
Loop

RS3.Close: Set RS3 = Nothing
CN.Close: Set CN = Nothing

End Sub

プログラムの説明

「検索フォーム」作成時と同じプログラムです。
同じコンボボックスを新たに追加しただけのプログラムです。

検索結果リストの「クリック時」イベント

クリック時イベントに以下のプログラムを追加します。
SQL実行後の検索結果データをテキストボックスに表示するプログラムの下部に記述すれば動くはずです。

検索結果リストの「クリック時」のプログラム

Me.性別 = Me.詳細性別コード.Column(1)
Me.所属部署 = Me.詳細所属部署コード.Column(1)

また、「検索フォーム」では「性別」と「所属部署」を表示するようなプログラムにしていましたが今回は各コードを表示するようにプログラムを書き換えます。

Me.詳細性別コード = RS!性別コード
Me.詳細所属部署コード = RS!所属部署コード

プログラムの説明(Me.性別 = Me.詳細性別コード.Column(1))

各コンボボックスの2列目のデータをテキストボックスへ表示

コンボボックスの「更新後処理」

コンボボックスの更新後処理に検索結果リストのクリック時イベントと同じプログラムを記述するだけです。

 

sakusei22

ここまでいかがでしょうか?
今回は特に難しい処理はありません。前回で完成した「検索フォーム」少しだけプログラムを追加しただけです。
次回は編集(更新)プログラムを説明をしていきます。

こちらの記事もおすすめ!