最新トピック
1
17 日前
排他制御 17 日前
2
1 ヶ月前
Hatena様にご質問 1 ヶ月前
6
3 ヶ月前
モジュールでカレントフォームのコントロールを使うには 3 ヶ月前
7
4 ヶ月前
日付のテキストボックスからフォームが開けません 4 ヶ月前
9
4 ヶ月前
レポートにおける数値の間隔を広げる方法 4 ヶ月前
12
4 ヶ月前
リストボックスから複数選択しそれをテーブルに格納したい 4 ヶ月前
11
5 ヶ月前
SQLの型が一致ませんエラー 5 ヶ月前
タグリスト
Markdown テーブル生成
Accessのテーブルやクエリのデータを貼り付ける場合は下記で、Markdown書式のテーブルに変換して貼り付けてください。
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の入門サイトなどで学習してください。