Microsoft Access 掲示板

Access サブフォームについての質問

6 コメント
views
4 フォロー

下記のaccess解説動画の中で理解が出来ない部分があったので質問をさせてください。

アクセスの使い方・データベース初心者入門講座【たった1動画で全てが分かるAccessの教科書】
https://www.youtube.com/watch?v=70CTB0U0Thg

45:42からのサブフォームとリレーションシップの項で、「会員マスタ」のIDと「T_購入履歴」の会員名をリレーションシップで関連付けていますが、両フィールドは共通フィールドではありません。
ですが、この状態で「会員マスタ」をメインフォーム、「T_購入履歴」をサブフォームとして作成すると「会員マスタ」の氏名と「T_購入履歴」の会員名が関連した状態で表示されるのはなぜでしょうか?

ao
作成: 2021/09/15 (水) 23:58:11
通報 ...
1

動画の下記でルックアップウィザードで「会員マスタ」の「担当者」から「T_担当者マスタ」の「担当者名」をルックアップするように設定しています。

09:14 リレーションシップ

これにより、「会員マスタ」の「担当者」で入力するとき、泥ぷダウンリストから担当者名を選択できるようになります。
またルックアップウィザードで関連付けると自動でリレーションシップも設定されることを説明しています。

動画からの切り抜き
画像1

上の画像をみると、「T_担当者マスタ」の「担当者CD」と「会員マスタ」の「担当者」が結合されています。

動画では説明されてませんが、このようにルックアップウィザードで関連付けると、
「会員マスタ」の「担当者」の「T_担当者マスタ」の「担当者CD」と同じデータ型(数値型)になります。
ところがテーブルを開いてみると、数値ではなくテキストで名前が表示されています。
これは、「担当者」には表示上は担当者名が表示されるが実際に格納されている値は「担当者CD」だからです。

これは最初は直感的に理解しずつらい部分ですので、動画の通りにテーブルを作成して、ルックアップウィザードで関連付ける作業をしてみるといいでしょう。
その上で、テーブルデザインビューでその「担当者」フィールドのプロパティ設定がどうなっているか確認するといいでしょう。とくにルックアップの設定をよく見てみましょう。

『「会員マスタ」のIDと「T_購入履歴」の会員名をリレーションシップで関連付け』も上記と同様の設定がされているのだと思います。

動画ではその辺の説明が省略されているので誤解を生みやすいですね。
「T_購入履歴」の「会員名」フィールドは私なら「会員ID」という名前にしますね。
誤解を生む原因になりますので。

3
りんご 2021/09/16 (木) 06:31:31 c564b@0e907 >> 1

「会員マスタ」の「担当者」の「T_担当者マスタ」の「担当者CD」と同じデータ型(数値型)になります。

 たぶん、短いテキスト型で組んであります。微妙ですよね。
動画9:50付近、左詰めだから、T_担当者マスタの担当者CDフィールドは短いテキスト型?
動画11:23付近、ルックアップウィザード完了したのに、会員マスタテーブルの担当者フィールドが短いテキスト型から数値型に変わらない?
 ルックアップウィザードは、会員IDや商品CDを暗記入力するのは大変。会員氏名や商品名で入力出来たら便利よねって感じでイメージしているのですが。実際、どうですか?実務でも頻繁に使われるのでしょうか?

6

この動画、ちょっとおかしい部分が目につきますね。まあ、全て解説していたら時間がどれだけあっても足りないのでしょうがないですが。

私の場合はテーブルで直接入力することはないので、テーブルにはルックアップは設定しない場合が多いかな。
入力フォームの方でコンボボックスで設定すれば同じことができますし、状況に合わせていろいろ工夫できますので。
例えば、下記のようにどちらでも入力できるようにしたりします。

コードでも名称でも入力できるコンボボックス - hatena chips

2
りんご 2021/09/16 (木) 06:03:46 c564b@0e907

 たぶん、ルックアップウィザードが使われている。購入履歴テーブルの会員名フィールドに、例えば、太郎と表示されていたとしよう。会員マスタテーブルの氏名フィールドに関連しているように思えるかもしれない。が、実は中身は何某かの数字である。何処からきたのか?そう、会員マスタテーブルのIDフィールドと関連している。

会員マスタ
ID氏名
1太郎
2花子
   
   ーーーーーーーー
           
T_購入履歴
取引CD会員名
P-0001太郎(中身は、1)
P-0002花子(中身は、2)
4
りんご 2021/09/16 (木) 07:29:46 c564b@0e907 >> 2

 メイン/サブフォームといえば、クエリからフォームを作ってサブフォームウィザードに設定する、と覚えています。皆さん、どうでしょう?
 メインフォームで氏名を選んだのに、サブフォームで会員名や会員IDなどを重複表示する、意味があるのと思ったり、サブフォーム連結クエリにリンクフィールドを残しておけば、問題ないんじゃないと思ったり、参照整合性が設定されてないじゃんと思ったり、もやもやしました。

5

回答ありがとうございます。
やはりルックアップウィザードが使われているんですかね、、、?
動画内だとリレーションシップで結合しているだけなのでわかりずらいですね