- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access where条件式について)
Access where条件式について
このQ&Aのポイント
- Accessのwhere条件式についてマクロで抽出する方法について解説します。
- フォームからのID番号のレポート表示において、レコードソースをクエリに変更した場合にうまく動作しない問題についても説明します。
- OSはWindows XP、Accessのバージョンは2003です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
二つのテーブルに同じ名前のフィールドがある場合は テーブル名で修飾して、どちらのものかを明示的に 指定します。下記参照 テーブルB.ID=~ AND テーブルC.フィールドD=~ 最初の質問で[テーブル]![ID]となっていたのと同じ ですが、!はAccess独特の表記で、他のDBシステムでは ピリオドになります。[]はテーブル名やフィールド名に 予約語や空白などが含まれている場合に、その効果を 打ち消すために使います。今回の例のような場合には 予約語や特殊記号のない名前なので[]は不要です。また、 フィールド名が一意であれば修飾の必要はありません。
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1416)
回答No.1
WHERE句の条件式は現実にあるオブジェクト名を 使わなければなりません。 「マスターテーブル」というテーブルに「ID」と言う フィールドがある以上、レコードソースがクエリに 代わっても、各オブジェクト(テーブルやフィールド) の名前は変わらないので、元のままの名前を使います。 クエリ内でエイリアス(別名)を定義した場合は別名を 使います。以下はその例です。 SELECT ID As RepoId FROM マスターテーブル As Master 上記SQLを持つクエリをXXXとします。IDはReportId、 マスターテーブルはMasterという別名になっています。 条件式は下記の様に変わります。 [Form]![ID]=[Master]![ReportId] つまり、クエリ名は出てきません。エイリアスを定義 していないなら、名前は元のままです。
補足
そうなんですね。 ご回答ありがとうございます。 それでは例えば複数のテーブルからデータを取り出したクエリをレコードソースにしたレポートをwhere条件で指定したい場合などはどうしたら良いのでしょうか? 例えばレポートAはテーブルBとテーブルCからデータを取り出したクエリXがあります。 テーブルBとテーブルCは互いにサブIDでリレーションの関係にあり、クエリでテーブルBのIDとテーブルCのフィールドDを表示するとしたら、このクエリXをwhere条件でID指定する場合、どのように記述したら よろしいのでしょうか?