Microsoft Access 掲示板

VBAで抽出して登録するまでのコードをご教示ください。 / 3

4 コメント
views
4 フォロー
3

VBAを使わずともアクセスの基本機能でできることです。
まずは基本機能を習得したうえで、それではできないことをVBAでするという設計にした方がいいでしょう。

その前にテーブルの設計におかしな部分がありますので、
下記のような設計としてください。

T_生徒テーブル
フィールド
 生徒番号 主キー
 名前
 年齢
 性別
 学校名

T_成績管理テーブル
 生徒番号
 日付
 国語
 数学
 英語

現状のフォームをもとに修正するなら下記の手順になります。

フォームのレコードソースを[T_成績管理テーブル]にします。

生徒番号のテキストボックスは右クリックして[コントロールの種類の変更]→[コンボボックス]でコンボボックスに変換します。
プロパティを下記のように設定します。

名前 cb生徒番号
コントロールソース 生徒番号
値集合タイプ テーブル/クエリ
値集合ソース T_生徒テーブル
連結列 1
列数 5
列幅 1cm;3cm;0cm;0cm;0cm
リスト幅 4cm

性別、年齢、学校名などのラベルは削除して、
テキストボックスを4つ配置して、コントロールソースをそれぞれ下記のように設定します。

=[cb生徒番号].Column(1)

=[cb生徒番号].Column(2)

=[cb生徒番号].Column(3)

=[cb生徒番号].Column(4)

これで、各テキストボックスから生徒番号を選択すると対応する名前、年齢、性別、学校名が表示されます。

国語、数学、英語のテキストボックスのコントロールソースも設定しておきます。

以上で、
最後のテキストボックス(英語)まで入力してEnterキーを押せば、
VBAなしに[T_成績管理テーブル]に登録されます。


りんごさんからも指摘がありますが、
本来は科目は縦に並ぶようにテーブル設計にすべきです。
そのような設計を「テーブルの正規化」といいます。

正規化されていないとデータベースの機能を活かせないので、正規化すべきですが、それを説明しだすと長くなるので、WEB検索して調べてみてください。

正規化の実例 - もう一度学ぶMS-Access

あと、Accessの基本機能、特に連結フォームについてもAccessの入門サイトなどで学習してください。

通報 ...