2008年3月17日月曜日

Access で、二つ以上のテーブルからクエリを作成するとき、同じ名前のフィールドに気をつける

A テーブルは、

  • id : 主キー
  • cd : コード

B テーブルは、

  • id : 主キー
  • cd : コード
  • a_id : A テーブルの id を外部参照

 

A テーブルと B テーブルより、C クエリを作成した。

C クエリは、

  • B.id
  • B.cd
  • A.cd

このとき、B.cd と A.cd というように、 cd共通していた。 C クエリは問題なく動作した。

ここで、C クエリから C レポートを作成することにした。ウィザードを利用して、作成したところ、以下のようなエラーが表示された。

指定したレポートをプレビューできません。他のユーザがソース テーブルを排他モードで開いている可能性があります。

???

なんのこっちゃ (@_@;)

一度、レポートをデザインモードで開き、再度、プレビューで開いてみたら、今度は、

指定されたフィールド 'B.cd' が SQL ステートメントの FROM 句にある複数のテーブルを参照しました。

 

指定されたフィールド’○○○’がSQLステートメントのFROM句にある複数のテーブルを参照しました --Access Club Access 初・中級者 FORUM-- によると、

たとえば、Aテーブル、Bテーブル両方に[コード]フィールドがあったとき、
Select コード
From Aテーブル,Bテーブル
というようなSQLを実行した場合に上記のエラーが出ます。
最初の「コード」は、Aテーブル、Bテーブルどちらの[コード]を表示すれば
良いのか分からない(?)からです。

 

そこで、 C クエリを開き、SQL を表示させ、B.cd という指定を以下のように変更した。

B.cd as Bcd

クエリを GUI で作成する場合には、B.cd というフィールドの値を、 Bcd : B.cd というように指定すればよい。

これで、レポートのプレビューが開けるようになった。 ^^