概要説明
WAZA54の例のように、競技会の成績結果を記録するような場合について、[氏名]フィールドは[氏名ID]で会員テーブルに リンクしているときの使い方についての解説である。この場合は氏名フィールドには直接に入力できないため、 コンボボックスツールを利用することになる。
作成手順
- 基となるテーブルは[T_成績]とし、使用するフィールド名は[氏名][大会名称][種目] [クラス] [順位]です。
- 非連結のフォームを作成します。名前は[F_成績入力]です。
- フォーム上にコンボボックスを一つ、4つのテキストボックスを作成します。コンボボックスの名前をcmb__氏名①、テキストボックスは Txt_大会名称②、Txt_種目③、Txt_クラス④、txt_順位⑤ とします。
- コンボボックスの値集合ソースに次のように指定します。
SELECT [MT_Kaiin].[会員ID], [MT_Kaiin].[氏名], [MT_Kaiin].[フリガナ] FROM MT_Kaiin ORDER BY [フリガナ];
成績テーブル[T_成績]の[会員ID]は会員テーブル[MT_Kaiin]とリレーションシップがあり、会員テーブルの[会員ID]を 使用します。その為にSELECT文でコマンドボタンに表示します。 - また2つのコマンドボタンを作成し、名前をCmd_登録⑥、Cmd_閉じる⑦ とします。
- 登録ボタンに下のプロシージャを作成します。
Private Sub txt_登録_Click()
'ADOレコードセットを開く
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection
' テーブル「T_成績」を開く
rs.Open "T_成績", cn, adOpenKeyset, adLockOptimistic
' 新しいレコードに移動
rs.AddNew
' テキストボックスのデータを入れる。氏名のみは[会員ID]により受け渡します。
rs!氏名ID = Me!cmb_氏名ID
rs!大会名称 = Me!txt_大会名称
rs!種目 = Me!txt_種目
rs!クラス = Me!txt_クラス
rs!順位 = Me!txt_順位
' 氏名のテキストボックスを空にする
Me!cmb_氏名ID = Null
' 新しいレコードに移動
rs.AddNew
' レコードセットを閉じる
Set rs = Nothing
Set cn = Nothing
End Sub
使用例
- レコードを入力したところです。コンボボックスの値はリストから登録選択しました。
- 登録ボタンをクリックした後、氏名のみが空白となり他は前の入力が保持されている。次は新しい名前データを入れ、
変更するコントロールの書き換えをするだけで済みます。
- テーブルを開くとデータが保存されています。
[会員ID]は会員テーブルに保存されている[会員ID]が保存されています。
(この項終わり)