繰り返す同じデータを効率よく入力するフォーム

TIPSメインへ戻る

概要説明

WAZA54の例のように、競技会の成績結果を記録するような場合について、[氏名]フィールドは[氏名ID]で会員テーブルに リンクしているときの使い方についての解説である。この場合は氏名フィールドには直接に入力できないため、 コンボボックスツールを利用することになる。

作成手順

  1. 基となるテーブルは[T_成績]とし、使用するフィールド名は[氏名][大会名称][種目] [クラス] [順位]です。

  2. 非連結のフォームを作成します。名前は[F_成績入力]です。
  3. フォーム上にコンボボックスを一つ、4つのテキストボックスを作成します。コンボボックスの名前をcmb__氏名①、テキストボックスは Txt_大会名称②、Txt_種目③、Txt_クラス④、txt_順位⑤ とします。
  4. コンボボックスの値集合ソースに次のように指定します。
    SELECT [MT_Kaiin].[会員ID], [MT_Kaiin].[氏名], [MT_Kaiin].[フリガナ] FROM MT_Kaiin ORDER BY [フリガナ];

    成績テーブル[T_成績]の[会員ID]は会員テーブル[MT_Kaiin]とリレーションシップがあり、会員テーブルの[会員ID]を 使用します。その為にSELECT文でコマンドボタンに表示します。

  5. また2つのコマンドボタンを作成し、名前をCmd_登録⑥、Cmd_閉じる⑦  とします。
  6. 登録ボタンに下のプロシージャを作成します。
    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

使用例

  1. レコードを入力したところです。コンボボックスの値はリストから登録選択しました。
  2. 登録ボタンをクリックした後、氏名のみが空白となり他は前の入力が保持されている。次は新しい名前データを入れ、 変更するコントロールの書き換えをするだけで済みます。
  3. テーブルを開くとデータが保存されています。
    [会員ID]は会員テーブルに保存されている[会員ID]が保存されています。

(この項終わり)