ACCESSでクエリを保存すると、特定のフィールドにカッコが勝手についてしまいます。
恐らくこれを原因とするエラーもあり、困っております。
■状況1
「REF」というテーブルに「テーマ」という[短いテキスト]型のフィールドがあります。
次の操作をします。
1.新規クエリを開き、次のSQL文でクエリを保存して一旦クエリを閉じます。
SELECT テーマ
FROM REF;
2.SQLビューで開き直すと次のSQL文になります。
SELECT [テーマ]
FROM REF;
これだけです。
他のフィールドではこのような事が起こらないのですが、何故かこのフィールドだけカッコが付いてしまいます。
カッコを削除して保存し直しても保存する際にまたカッコが付いてしまうようです。
上記はSQLビューから作成しましたが、デザインビューで作成しても同様です。
なお、フィールド名に含まれる長音「ー」の指定ミスでは無いです。コピペして確認しました。(シフトJIS:815B)
長音を使用する事自体があまり良くないそうですが(後で知った)、
他テーブルの長音を含むフィールドではこのようなことは起こりませんでした。
■状況2
これだけなら問題無いのですが、次の様にするとエラー発生します。
ポイントは次の2つを含むクエリ。(次の例では「クエリ2」)
これが重なるとエラーが生じるようです。
- SELECT句で「強制カッコのフィールドを含むクエリ」のフィールドをワイルドカードで指定。
- 複数値フィールドと結合。
テーブル1:REF
フィールド:テーマ(短いテキスト型)、必要資格(整数型)
テーブル2:従業員
フィールド:従業員ID(長整数型)、名前(短いテキスト型)、保有資格(整数型、複数値)
クエリ1:
SELECT [テーマ], 必要資格
FROM REF;
クエリ2:
SELECT [クエリ1].*
FROM クエリ1 LEFT JOIN 従業員 ON [クエリ1].必要資格 = 従業員.保有資格.Value
WHERE 従業員.従業員ID=[TempVars]![UserID];
上記クエリ2を開くとエラーダイアログが発生します。
「'[クエリ1].[REF].[[テーマ]' のかっこの使い方が正しくありません。」
→ エラーをよく見ると「テーマ」フィールドの前カッコが2重についています。
なお、クエリ2のWHERE句は無くてもエラーが発生します。
ファイル起動時に[TempVars]![UserID]に従業員IDを取得してあるので、
ユーザーが自分に関係するテーマを抽出する事ができます。
一応、回避策が2つあります。下記いずれかで回避します。
- 「クエリ1」のSELECT句で「テーマ」フィールドを別名にする。例:「テーマ AS テーマ名」
- 「クエリ2」のSELECT句でワイルドカードを使わない。
■質問
この強制カッコの原因または回避策はありますでしょうか。