ここから本文です

Accessで住所録作成時、クエリと抽出条件の設定について 3つのテーブルを作成...

shi********さん

2018/5/618:05:08

Accessで住所録作成時、クエリと抽出条件の設定について

3つのテーブルを作成しました。

会社名テーブル
主キー 会社名ID
会社名

部門名テーブル
主キー 部門名ID
部門名
部門住所
会社名ID

担当者名テーブル
主キー 担当者名ID
担当者名
部門名ID


次に部門名テーブルの会社名IDをルックアップウィザードで会社名テーブルの会社名IDから値を取得するように設定、部門名IDも同様にしました。

次にクエリを作成しました(画像添付します)。フィールドには5個登録しました。
会社名ID(部門名テーブル)
部門名ID(担当者テーブル)
住所(部門名テーブル)
担当者ID(担当者テーブル)
担当者名(担当者テーブル)

次にこのクエリから、フォーム作成しました。
会社名IDと部門名IDはコンボボックスになっています。会社名を選択し、続いて部門名を選択しようとすると、部門名テーブルにあるすべての部門名が選択できるようになっています。

これを会社名に応じて絞り込みをしたいです。

フォームの部門名IDの値集合ソースからクエリビルダーを開き、会社名IDをフィールドに追加して、抽出条件に、forms!登録フォーム!会社ID と入力しましたが、上手くいきません(画像添付)。

間違っているところを教えて頂けますでしょうか。
お手数をお掛けしますが、よろしくお願いいたします。
(この後、Requeryについて調べようと思います)

担当者名,クエリ,部門名テーブル,担当者テーブル,Requery,コンボボックス,抽出条件

この質問は、zee********さんに回答をリクエストしました。

閲覧数:
36
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

zee********さん

リクエストマッチ

2018/5/621:50:21

>次に部門名テーブルの会社名IDをルックアップウィザードで会社名テーブルの会社名IDから値を取得するように設定、部門名IDも同様にしました。

これは現状では全く意味がありません。
テーブルを利用してデータ入力されるのであればこの方法で構いませんが、フォームを利用して入力を行われる場合、テーブル内でのルックアップウィザードは意味がありません。
普通に数値型に設定しておけばいいものです。


ここで作成されておられるクエリは、フォームのレコードソースだと思いますので、抽出条件を作成するのはここではありません。
このレコードソースを持つフォーム内にあるコンボボックスの抽出条件に、このフォーム内にある会社名を指定するテキストボックスなどを利用しそれを抽出条件とするのです。


行う必要があるのは、部門名のコンボボックスの集合値ソースで、会社名IDによって抽出することです。
フォームのレコードソースが記載のクエリであれば、抽出条件はこのままで問題ありませんが、部門名のコンボボックスがこのクエリである必要はありません。
部門名IDと会社名IDがあればよく、それ以外のフィールドは必要に応じてで構いません。会社名IDの抽出条件が設定されていればいいのです。

Forms![登録フォーム]![会社名ID]

こうすることで、会社名IDに一致した部門名のみが抽出されるのです。

ただし、会社名IDが変更された際に部門名のコンボボックスは開かれた際の内容で抽出されるため、変更が反映されません。
これを反映させるために、会社名IDフィールドのAfterUpdateで、部門名のコンボボックスに対してRequeryをかける必要があるということです。

質問した人からのコメント

2018/5/13 18:04:59

ご回答有り難うございました。
なかなか上手くいかず基礎的なことから学び直しております。

> テーブルを利用してデータ入力されるのであればこの方法で構いませんが、フォームを利用して入力を行われる場合、テーブル内でのルックアップウィザードは意味がありません。
普通に数値型に設定しておけばいいものです。

こちらの部分も参考になりました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる