🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

2048閲覧

accessを使い学生の健康診断管理票をつくりたい。

bubobo_bubon

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/02/04 06:15

前提・実現したいこと

ACCESSを使い学生の健康診断の記録をとり、
毎年過去記録も記載した一覧を出力するまでの一連の物を作りたいです。
(フォームで入力ー>レポート出力)

試したこと

氏名テーブル:氏名ID、氏名、現学年
診断テーブル:診断ID、氏名ID、診断日、身長、体重〜〜(などの測定値たくさん)

リレーションは氏名テーブルの[氏名ID]と診断テーブルの[氏名ID]を1対多で組んでいます。

入力はフォームを利用しソースを氏名テーブルとしサブフォームで診断テーブルを入れることで特に問題なくできています。

しかし下図は拾ってきたイメージ例ですが、このように
・同一年に複数回身体測定を行う
・診断は毎年行う
・これらを毎年、過去分も入れて出力する。
というレポートの作り方がわかりません。

一回分だけであれば単純にテーブルから引っ張ってくれば完結しますが
年齢によって過去診断を受けた回数もかわり一律にレコードの数を1増やすようなこともできません。

VBAはさっぱりわからないのでできるだけ使わず、近い形式のものでもよいので
なにか良いお知恵をお借りしたいです。
よろしくおねがいします。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/04 06:34

たぶん本当にサッパリであればどんなアドバイスをもらったとしても吸収しきれないサッパリ状態から変わらないと思うので、業者に依頼されるか、何かしら手を付けられるくらいになるまで簡単なところから学習するか、いずれかにしたほうが良いかと思います。
guest

回答2

0

ベストアンサー

レポートでも、レポートにサブレポートを埋め込むことができるので、
メインレポートは、氏名テーブルにして、
サブレポートは、「身長、体重、胸囲」「内科検診」「尿検査」「歯科検診」の各データをそれぞれ表示するものを4つ作成して、メインレポート上に配置すればいいでしょう。

サブレポートで各データを横並びにするには、[ページ設定]-[レイアウト]で「列数」を表示したい列数に設定します。
例えば、「身長、体重、胸囲」ならデータ6列ですので 6 にします。
データのテキストボックスは縦に並べます。

言葉だけでは伝わりにくいですが、とりありず上記をヒントにできるところまでやってみてください。


ざっくりとサンプルを作成してみました。画像をアップしておきますので、イメージを掴んでください。
とりあえずサンプルではサブレポートは「身長、体重、胸囲」だけです。それができたら「内科検診」「尿検査」「歯科検診」も同じようにできると思います。

メインレポート
メインレポート
氏名テーブルの項目を配置して、
サブレポート用の項目名(ラベル)や罫線(直線コントロール)もメインレポートの方に配置しておきます。

サブレポート
サブレポート
フィールドだけを縦に並べます。レポートの幅は1列分の幅にします。
ページ設定-レイアウトの列数を6に設定しておきます。

メインレポート上にサブレポートを配置
メインレポート上にサブレポートを配置
サブれイートの「リンク親フィールド/リンク子フィールド」は「氏名ID」にしておきます。(自動でなっているかも)

プレビュー
イメージ説明

投稿2021/02/04 06:55

編集2021/02/04 11:40
hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bubobo_bubon

2021/02/06 02:01

とてもわかり易く解説いただき、ありがとうございます。 列数というのがあったんですね、参考になりました。 他の皆様もこの場をお借りしてお礼申し上げます。
guest

0

一回分だけであれば単純にテーブルから引っ張ってくれば完結しますが

横並びにするにはクロス集計クエリーを使用したりします。

後は回数が一律では無いので、サブレポートを使用するか、そのレポートのレイアウトに合わせたテーブルを定義して、そのテーブルにクエリーでデータを埋め込むとかだと思います。

投稿2021/02/04 06:45

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問