データベース作成

Access VBA データベース作成3 新規レコード取得 登録フォームの作成1

データベース作成3 登録フォームの作成1

実践データベース作成の第3回目は登録フォームの作成を行います。
作成したテーブル「T_社員マスタ2013」へ新規データを追加するプログラムがメインになります。
・テキストボックスやコンボボックスを設置し新規社員データの入力を行う。
・登録するコマンドボタンを設置しテーブルへ新規データを追加する。
上記のような流れになります。

まずはフォームを作成してみます。

フォームの作成

sakusei12
デザインは気にしないで下さい。。。
フォームの構成は・・・
社員コード・・・テキストボックス
名前・・・テキストボックス
性別・・・コンボボックス
所属部署・・・コンボボックス
入社日・・・テキストボックス
登録ボタン・・・コマンドボタン
以上になります。
また、各テキストボックスとコンボボックスは「非連結」にしておきます。

では、実際にVBAをどのように組み込んでいくのか説明します。

フォームイベント

フォームのイベントは「読み込み時」になります。

sakusei13
フォームの「読み込み時」には以下のプログラムを実行します。
1.性別マスタを使用して「性別コンボボックス」の作成
2.所属部署マスタを使用して「所属部署コンボボックス」の作成
3.社員マスタのレコード数を読み込み、新規の社員コードを取得
実際のプログラムは以下のようになります。

プログラムの例

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 ID As String

Set CN = CurrentProject.Connection

‘性別コンボボックスの作成
Set RS = New ADODB.Recordset

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

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

Do Until RS.EOF

Me.新規性別コード.RowSource = Me.新規性別コード.RowSource & “;” & RS!性別コード & “;” & RS!性別

RS.MoveNext
Loop

RS.Close: Set RS = Nothing

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

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

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

Do Until RS1.EOF

Me.新規所属部署コード.RowSource = Me.新規所属部署コード.RowSource & “;” & RS1!所属部署コード & “;” & RS1!所属部署名

RS1.MoveNext
Loop

RS1.Close: Set RS1 = Nothing

‘新規社員コードの取得
Set RS2 = New ADODB.Recordset
RS2.Open “T_社員マスタ2013”, CN, adOpenStatic, adLockOptimistic

If RS2.RecordCount > 0 Then
ID = Format(RS2.RecordCount + 1, “000”)
Me.新規社員コード = ID
Else
Me.新規社員コード = “001”
End If

RS2.Close: Set RS2 = Nothing
CN.Close: Set CN = Nothing

End Sub

プログラムの説明

性別コンボボックス及び所属部署コンボボックスの作成

(1)「Me.新規性別コード」を設定。
(2)ADOを使用して「T_性別マスタ」を開く。
(3)Do Loop処理を使用して「Me.新規性別コード」にデータを追加
(4)「Me.新規所属部署コード」も同様に作成します。
ADOの使用方法はこちらを参照して下さい。
コンボボックスの詳しい作成方法はこちらを参照して下さい。

新規社員コードの取得

新規社員コードの取得方法は、現社員数をカウントし、その値に+1を行うように作成しています。
(1)ADOを使用して「T_社員マスタ2013」を開く。
(2)【RS2.RecordCount】「T_社員マスタ2013」のレコード数をカウント
(3)【ID = Format(RS2.RecordCount + 1, “000”)】カウントしたレコード数に+1を行い、更にFormat関数を使用して値を「000」形式に変換(例:1→001)した後、変数「ID」に格納。変数「ID」はプログラムの冒頭で文字列(String)の設定がしてあります。
(4)【Me.新規社員コード = ID】「ID」の値を「Me.新規社員コード」に表示。
(社員のレコード数が「ゼロ」の場合は「001」となります)

いかかでしょうか?
これでフォームの「読み込み時イベント」は完了です。
次回は新規登録のプログラムを説明していきます。

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