循環参照エラーを回避してテーブルとクエリで同じフィールド名を付ける

[Access 2016/2013/2010/2007]

クエリの演算フィールドに、式の中で使用しているフィールドと同じ名前を付けたいと思ったことはないでしょうか。

図1を見てください。演算フィールドでUCase関数を使用して、[Lastname]フィールドの文字列を大文字に変換しています。「Lastname: UCase([Lastname])」のように、演算フィールドにもとのフィールド名と同じ「Lastname」という名前を付けてクエリを実行すると、「クエリ定義のSELECTで指定されている別名 'Lastname' が循環参照を発生させています。」というエラーメッセージが表示されます。

図1 式の中で使用しているフィールド名を演算フィールドのフィールド名にすると、循環参照エラーになる。

このエラーは、演算フィールドに「Lastname大文字」「Lastname2」など、もとのフィールドと異なる名前を付ければ解決します。しかし、「いい別名が思い付かない」「もとの名前のほうがしっくりくる」なんていうケースも少なくないでしょう。そこで、ここではもとのフィールド名と同じ名前を付ける2通りの方法を紹介します。

スポンサーリンク

見掛け上のフィールド名を変更する方法 …[標題]プロパティを利用

見掛け上「Lastname」と表示すればいいだけなら、[標題]プロパティを使う手があります。「Lastname2」などと別名を付けて、フィールドを選択し、[F4]キーを押します。プロパティシートが表示されるので、[標題]プロパティに「Lastname」と入力します(図2)。

図2 「Lastname2: UCase([Lastname])」と入力して、「F4」キーを押し、[標題]に「Lastname」と入力する。

図3は上のクエリの実行結果です。フィールド名として「Lastname2」ではなく「Lastname」が表示されます。このクエリを基にフォームやレポートを作成すると、[Lastname2]テキストボックスの付属ラベルにも「Lastname」と表示されます。

図3 クエリのデータシートに、フィールド名として「Lastname」と表示された。

なお、実際のフィールド名は「Lastname2」なので、別のクエリでこのフィールドを演算に使用するときは、「Name: [Firstname] & " " & [Lastname2]」のように「Lastname2」を使用しましょう。

実際のフィールド名を変更する方法 …テーブル名を明記

演算フィールドの実際のフィールド名を「Lastname」にしたい場合は、式の中のフィールド名の前にテーブル名を付加しましょう(図4)。

図4 「Lastname: UCase([T_顧客]![Lastname])」と入力する。

図4ののクエリを実行すると、図5のようになります。

図5 クエリのデータシートに、フィールド名として「Lastname」と表示された。

実際のフィールド名が「Lastname」になるので、別のクエリでこのフィールドを演算に使用するときは、「Name: [Firstname] & " " & [Lastname]」のように「Lastname」を使います。

スポンサーリンク

関連記事