パソコンから恋愛まで、みんなの知識、みんなで教えて!

OKWave

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Access2016 サブフォームへのデータ取込み

メインフォームに入力したコードによって、マスターに登録してある複数のレコードデータをサブフォームに取り込みたいのですが。

例:
メインフォームに献立コード(例えばカレーのコード)を入力すると、献立マスター(献立によって材料と使用量が登録してある)の材料(じゃがいも、人参、玉ねぎ、牛肉、ルー)と使用量がサブフォーム(今回5件のデータ)に入力されるような処理を行いたいのですが、ご教授願えませんでしょうか。もしVBAが必要ならばそれでもお願いしたいと思います。
メインとサブフォームのリンク親子フィールドは年月日にしています。

お手数おかけいたしますがよろしくお願いいたします。

投稿日時 - 2018-02-19 11:57:24

QNo.9430545

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.8

献立明細の食材IDの食材マスタ へのルックアップ設定の次は
リレーションシップです。流れは
【データベースツール】→【リレーションシップ】→【リレーションシップの空白部で右クリック】→【テーブルの表示】
→【献立マスタ】→【追加】→【献立明細】→【追加】→【閉じる】→【献立マスタのIDを献立明細の献立マスタIDへドラッグ】
→【リレーションシップを閉じる】
回答No.5の添付画像参照

これでテーブル設計は完成です
ルックアップ定義とリレーションシップが完成すると
これだけで、
献立マスタテーブルを開くとレシピ登録が出来ます 画像添付
-------------------------------------------------------------------------
回答No.5で年月日は理解できませんと回答しましたが、食事履歴(食事記録)の仕組みが目的ですね
その為には、食事履歴、食事明細と食事種別マスタ(朝食、昼食、夕食)のテーブルを追加します

食事種別マスタ
・ID 主キー オートナンバー型
・食事種別名 テキスト型

食事履歴
・ID 主キー オートナンバー型
・日付 日付/時刻型
・食事種別ID 数値型 食事種別.IDをルックアップ

食事明細
・ID 主キー オートナンバー型
・食事履歴ID 数値型 食事履歴.IDへ リレーションシップ 
・食品名ID 数値型 食材マスタ.IDをルックアップ
・数量 数値型
----------------------------------------------------------------------------------------

投稿日時 - 2018-02-25 17:23:22

ANo.7

テーブルに同意 有難うございます
テーブルをデザインモードにすると一つ一つフィールドのプロパティーの定義項目が沢山あります
ここで設定したプロパティーは次ステップのフォーム、レポートに反映されます。
ここではVBAは使いませんので丁寧に定義して下さい。

少しピックアップしておきます。
・規定値   :数値項目は原則 0 に、(数値以外のレコードが1つでもあると集計不能zになる)
・インデックス:献立名等重複登録を避けるため ここで、はい(重複なし)
・ふりがな  :例えば献立名を入力すると、ここで定義したふりがな項目にフリガナで入る
 これはルックアップ、コンボボックスでプルダウンリストをふりがな順にすることができる

次は献立明細の食材IDにルックアップを定義の流れです
【献立明細 右クリック】→【デザインビュー】→【食材ID】
→【ルックアップタグ】
→【表示コントロールの右端】→【コンボボックス】→【値集合ソースの右端】→【食材マスタ】
→【列数 2 食材テーブルのIDと食材名】
→【列幅 0 1番目のID表示幅を 0 非表示】→【リスト行数 任意】
 ※ 食材の登録件数が多くなるとプルダウンの表示順を読み順に出来ますが省きます

投稿日時 - 2018-02-23 11:59:04

お礼

丁寧にご指導頂いてありがとうございます、

ルックアップの定義は、勉強になりました、重ねてありがとうございます。

今回は、本当にありがとうございました。

投稿日時 - 2018-02-23 18:05:09

ANo.6

回答No.5の献立マスタ献立明細、食材明細の3つのテーブルをソースデータとして作成したフォームが添付画像です。
献立名の左端の▶のある献立名の食材名がサブフォームに表示せれています。
※お気付きですか
 フォーム上にはID,〇〇IDのフィールドがありません。
 IDをオートナンバー型にし、リレーションシップを設定したことにより    ACCESSにお任せになります。

投稿日時 - 2018-02-22 12:48:57

ANo.5

>メインフォームに入力したコードによって、マスターに登録してある複数のレコードデータをサブフォームに取り込みたいのですが。
失礼ですがフォームとテーブルの違いをご存知無いようですね。

料理のレシピですね
このような機能の設定はテーブルの役割です。
テーブルは献立マスタ、献立明細、食材マスターの三つのテーブルかと
・献立マスタ
 ID 主キー オートナンバー型
 献立名 テキスト型 インデックスで重複なし
 備考 テキスト型
・献立明細
 ID 主キー オートナンバー型
 献立マスタID
 食材ID 数値型 ★食材マスタをルックアップ定義
 数量
・食材マスタ
 ID 主キー オートナンバー型
 食材名 テキスト型 インデックスで重複なし
 献立マスタID 数値型
 数量 数値型
各テーブルの関連付け(リレーションシップ)は添付の通り全て1:∞になっています

>メインフォームに献立コード(例えばカレーのコード)を入力すると
 コンポボックスが使えるのでコードは必要ありません。

>献立マスター(今回5件のデータ)に入力されるような処理を行いたいのですが
 使用食材の件数は何件でも対応できます。

>もしVBAが必要ならばそれでもお願いしたいと思います。
 今回 必要ないですが、
 食材マスターに成分(蛋白質、脂肪、炭水化物、塩分)等の項目の集計に
 VBAが必要になります

テーブルデザインでのコンポボックスですが
献立明細テーブルの食材IDに定義するステップを記述します
献立明細テーブル右クリック→デザインビュー→食材ID→下段のルックアップタグ
→表示コントロールの右端のV→コンポボックス→値集合ソース→食材マスタ
→列数を2→列幅を0→リスト行数任意

>メインとサブフォームのリンク親子フィールドは年月日にしています。
 理解できません

投稿日時 - 2018-02-21 20:02:06

お礼

実際に作成して下さってありがとうございます、また画像まで添付して下さいましてありがとうございます。
おっしゃられるとおり、テーブルは、
・献立マスタ
・献立明細
・食材マスタ
です。
ご教授頂いた事を参考にもう一度作成致します、ありがとうございました。

投稿日時 - 2018-02-22 19:46:38

ANo.4

季節によって素材の種類や分量を変えたいのであれば、献立メニューの素材の所で、季節とか月とかを持たせて、メニューを選ぶときに季節や月を選ばせて変えればいいと思います。

投稿日時 - 2018-02-19 19:37:05

お礼

返事が遅くなりましてすみませんでした。

おっしゃられる通り、季節、月を持たせる事で何とか出来そうです、
もう一度、テーブル設計から見直してみます。
ありがとうございました。

投稿日時 - 2018-02-21 19:24:36

ANo.3

じゃがいも、にんじん、肉・・・と材料から考えると、最終的にカレーになるのか、肉じゃがになるのか・・・ってことで、考えたと思いますが、難しいですね。

分類で分けると良いと思います。で、VBAが必要ならーってことですが、技術論をどうするか? の質問サイトなので、がんばって作って、なぜ3が4になるんだ? ってのは無料でも良いと思いますが、この件は有料で良いと思いますよ。

投稿日時 - 2018-02-19 16:10:02

ANo.2

課題は、テーブル設計の適正化。それ以上でも、それ以下でもないと思いますよ。

投稿日時 - 2018-02-19 15:26:05

ANo.1

テーブルの構成が分からないと何とも言えませんが、献立なら、献立のメニューのテーブルがあり、メニューのIDで素材テーブルとメニューの分量のテーブルが紐づいているとすると、素材テーブルと分量のテーブルでビューを作り、そのビューをサブフォームにするのが楽なのではないでしょうか。

投稿日時 - 2018-02-19 15:18:50

補足

早速のご回答ありがとうございます。
同じカレーでも季節によって、若干材料や分量が変わりますので、素材テーブルなどのマスターを変える事のないようにデータをサブフォームに取り込んで、そのデータからいらない材料を削除したり、分量を変えたりしたいのですが。

テーブルのイメージを追記させて頂きます。

【献立マスター】
献立ID、献立名、食材、分量
1、カレー、じゃがいも、10
1、カレー、にんじん、10
1、カレー、玉ねぎ、10
1、カレー、カレールー、20
2、八宝菜、白菜、30
2、八宝菜、ニンジン、10
2、八宝菜、玉ねぎ、10
2、八宝菜、いか、10
2、八宝菜、たけのこ、10

----------------------------------------
【献立表のフォーム】
年月日、献立ID、献立名

【献立表詳細のフォーム】(献立表のサブフォーム、年月日でリンク)
食材、分量

献立表のフォームに献立名なりIDを入力すると、献立表詳細のフォームに献立マスターからそれぞれの食材、分量が入ってきてほしいのですが、テーブル設計がおかしいでしょうか。

よろしくお願い致します。

投稿日時 - 2018-02-19 19:22:26