Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Access 2013)
Accessでの体重管理
投稿日時: 18/05/24 12:24:21
投稿者: Office3

初めて質問させていただきます。
Acccessで体重の管理を行いたく、以下のようなテーブルとクエリを作成しました。
 
T_基本情報(テーブル)

ID	オートナンバー型
氏名	短いテキスト
年齢	数値型
性別	短いテキスト

 
T_体重(テーブル)
体重ID	オートナンバー型
ID	数値型
測定日	日付/時刻型
体重	数値型

 
Q_体重(クエリ)
フィールド:	氏名		年齢		性別		体重	測定日
テーブル:	T_基本情報	T_基本情報	T_基本情報	T_体重	T_体重

これらを基に以下のようなフォームを作りたいと思っています。
 
ヘッダー:氏名、年齢、性別
詳細:[ここで西暦を選択]
[(選択した西暦)/1月] [該当する体重]
[(選択した西暦)/2月] [該当する体重]
[(選択した西暦)/3月] [該当する体重]
[(選択した西暦)/4月] [該当する体重]
(以下、12月まで)
 
その際、フォームの詳細をどのように作成していいか分からず、困っております。
テーブルやクエリの設計から間違っているという場合もあるかと思いますので、それも含めて解決策を教えていただければと思い質問いたしました。
説明が分かりにくい点が多くあると思いますが、よろしくお願いいたします。

回答
投稿日時: 18/05/24 14:35:23
投稿者: Suzu

引用:
詳細:[ここで西暦を選択]

 
これは、ヘッダーに置くべき項目では?
 
詳細セクションに表示されるレコード毎に 選択できるコンボボックスを配置するのですか?
具体的にどの部分が判らないのでしょうね。・・
 
条件もいまいち。。
入力はしません。抽出だけしたいです。という条件で。。
 
とりあえず、クエリを変えます。
 
Q_体重
-----------------------------------------------------------------------------------
SELECT
    T_基本情報.氏名, T_基本情報.年齢, T_基本情報.性別,
    T_体重.体重, T_体重.測定日
FROM T_基本情報 INNER JOIN T_体重 ON T_基本情報.ID=T_体重.ID
WHERE
    IF(
        ISNULL(FORMS![F_体重]![cmb_年]),
        TRUE,
        FORMAT([T_体重].[測定日],"YYYY") = FORMS![F_体重]![cmb_年]
    )
-----------------------------------------------------------------------------------
 
 
フォーム名を 『F_体重』とします。
-----------------------------------------------------------------------------------
選択する年を表示し、抽出する年を選択するコンボボックスを「cmb_年」として
コンボボックスの値集合ソースを、
 
SELECT FORMAT([T_体重].[測定日],"YYYY") AS 年
FROM T_体重
 
さらに、コンボボックスの更新後処理に再クエリを設定。
-----------------------------------------------------------------------------------

投稿日時: 18/05/24 16:22:58
投稿者: Office3

ご回答ありがとうございます。
わからない箇所が自分でもはっきりしていないため、掴みどころのない質問になってしまいましたが、いただいた回答をもとにクエリやフォームを作成し、実現したいことが完璧にではありませんができました。
ありがとうございます。
 
SQLの理解が不十分なので、そのあたりを再度勉強してみたいと思いました。
 
また質問することがあるかもしれませんが、その際はよろしくお願いいたします。

回答
投稿日時: 18/05/24 22:41:52
投稿者: hatena
投稿者のウェブサイトに移動

メイン/サブフォーム形式にするのがいいと思います。
 
サブフォームを含むフォーム (一対多のフォーム) を作成する - Access
https://support.office.com/ja-jp/article/%E3%82%B5%E3%83%96%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E5%90%AB%E3%82%80%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0-%E4%B8%80%E5%AF%BE%E5%A4%9A%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0-%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-ddf3822f-8aba-49cb-831a-1e74d6f5f06b
 
Accessのフォームのメイン/サブフォームとは | できるネット
https://dekiru.net/contents/378/img/3787012.png
 
 
上記等を参考に下記のようにメイン/サブフォーム形式のフォームを作成します。
 
 
------------------------------------↓メインフォーム
ヘッダー:氏名、年齢、性別
 
------------------------------------↓サブフォーム
[ここで西暦を選択]       フォームヘッダー
------------------------------------
[測定日 (yyyy/mm) ] [体重   ] 詳細セクション
 
 
[ここで西暦を選択] はコンボボックスとして、下記のように設定します。
 
名前 cb西暦
値集合ソース SELECT DISTINCT Year([測定日]) FROM T_体重 ORDER BY Year([測定日]) DESC;
 
このコンボボックスの更新後処理のイベントプロシージャを下記のように設定します。
 
Me.Filter = "測定日 BetWeen #" & cb西暦 & "/01/01# AND #" & cb西暦 & "/12/31#"
Me.FilterOn = True

投稿日時: 18/05/26 09:57:48
投稿者: Office3

hatena 様
ご回答ありがとうございます。
お礼が遅くなってしまいました。すみません。
 
様々な方法をご提示いただき、とても参考になります。
教えていただいた方法を参考にしながら、自分でも色々と試してみたいと思います。
参考URLも活用いたします。
ありがとうございました。

トピックに返信