• 締切済み

ACCESSでクエリを作成したら「式が複雑すぎます。」の表記が…

こんばんは。 現在、条件に当てはまるデータの一覧を 表記させるものをACCESSで作っております。 ACCESSは2000を使っております。 今はクエリの作成まで進んでいるのですが、 抽出条件が非常に長くなっており データシートビューに切り替えようとしたら 「式が複雑すぎます。」とメッセージが出ました。 EXCELでは関数式だと長くて拒否されるものでも VBAを使えばできたりするので、 こちらもVBAなどを利用すれば回避できる問題なのでしょうか? ACCESSは基本的な流れで簡単なものを作れる程度ですので、 どうすれば良いものなのか全く見当もつきません。 何か良い方法があればご助言下さい。 また、それに関して良書があれば合わせて教えて下さい。 宜しくお願いします。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

クエリ内のテーブルやネストしたクエリ等の結合が原因だと思いますが。 例えば集計クエリとテーブルをリレーションし結合していて集計したクエリの値を使っている場合など。 結合されている各結合を再確認してください。 その様な結合のクエリでなければあとは内容を見ないと判りません。

Miyabi_
質問者

お礼

抽出条件でレコードを絞ってから、計算をしようと考えていましたが、 それでは条件式が非常に長くなるので 計算した結果の値を抽出条件にかけた方が 非常に条件式が簡単になるのでそちらの方を試したいと思います。 皆様、回答ありがとうございました。

Miyabi_
質問者

補足

回答ありがとうございます。 集計はまだしておりません。

noname#21550
noname#21550
回答No.3

支障がなければ、クエリーのデザインモードにて 「表示」-「SQLビュー」からSQLを教えてください。 どのようなクエリーでどこに問題があるかがすぐわかると思います。 おそらく複数テーブルを指定しているのではないでしょうか? 中で使用しているすべてのフィールド名にテーブル名を修飾してみてください。少し整理されるといいでしょう。

Miyabi_
質問者

補足

回答ありがとうございます。 テーブルは2つ使っていました。 参照するフィールドがやたら多いです。 (([X]![a]<>"H") Or ([Y]![z] ="a'")) And (([X]![b]<>"H") Or ([Y]![z] ="b'")) And         … And (([X]![m]<>"H") Or ([Y]![z] ="m'")) And (([X]![n]<>"H") Or ([Y]![z] ="n'")) と14個ほど続いておりました。

noname#182251
noname#182251
回答No.2

複雑なクエリーは、単純なものに分けて、抽出を繰り返すと判りやすいです。二番目以降はデザインビューで作成する際、対象としてテーブル以外に、前段階で作成したクエリーを指定します。 欠点はクエリーの数が増えすぎて管理しにくくなることです。名称を xxxx1、xxxx2、xxxx3、. . . .などとするか。クエリーの替わりに VEW を使うと良いでしょう。

Miyabi_
質問者

補足

回答ありがとうございます。 何回か抽出を繰り返して作成もしてみましたが、 一定量の条件を入れると同じ現象が起こりました。

  • hypweb
  • ベストアンサー率0% (0/0)
回答No.1

そのクエリーは、一度でも保存されましたか? 無駄な(重複していたり簡素化できる)条件を指定していても、一度保存するとある程度ですが最適化してくれます。 あとは、「ツール」⇒「解析」⇒「パフォーマンスの最適化」を実行して、該当のクエリに対する指摘を参考にしてみると良いでしょう。

Miyabi_
質問者

補足

早速の回答ありがとうございます。 クエリは保存してあります。 一度保存して開いているので、こちらが書いた論理式を簡素なものに変換してくれています。 (その代わり9列程増えましたが) ご指摘通り「パフォーマンスの最適化」を行ってみましたが、 変わらず「式が複雑すぎます」のメッセージが表示されます。

関連するQ&A