プロが教えるわが家の防犯対策術!

こんばんは。
現在、条件に当てはまるデータの一覧を
表記させるものをACCESSで作っております。
ACCESSは2000を使っております。

今はクエリの作成まで進んでいるのですが、
抽出条件が非常に長くなっており
データシートビューに切り替えようとしたら
「式が複雑すぎます。」とメッセージが出ました。

EXCELでは関数式だと長くて拒否されるものでも
VBAを使えばできたりするので、
こちらもVBAなどを利用すれば回避できる問題なのでしょうか?

ACCESSは基本的な流れで簡単なものを作れる程度ですので、
どうすれば良いものなのか全く見当もつきません。

何か良い方法があればご助言下さい。
また、それに関して良書があれば合わせて教えて下さい。
宜しくお願いします。

A 回答 (4件)

クエリ内のテーブルやネストしたクエリ等の結合が原因だと思いますが。


例えば集計クエリとテーブルをリレーションし結合していて集計したクエリの値を使っている場合など。
結合されている各結合を再確認してください。

その様な結合のクエリでなければあとは内容を見ないと判りません。

この回答への補足

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

補足日時:2006/01/05 20:24
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/05 20:30

支障がなければ、クエリーのデザインモードにて


「表示」-「SQLビュー」からSQLを教えてください。
どのようなクエリーでどこに問題があるかがすぐわかると思います。

おそらく複数テーブルを指定しているのではないでしょうか?

中で使用しているすべてのフィールド名にテーブル名を修飾してみてください。少し整理されるといいでしょう。

この回答への補足

回答ありがとうございます。
テーブルは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個ほど続いておりました。

補足日時:2006/01/05 20:11
    • good
    • 1

複雑なクエリーは、単純なものに分けて、抽出を繰り返すと判りやすいです。

二番目以降はデザインビューで作成する際、対象としてテーブル以外に、前段階で作成したクエリーを指定します。

欠点はクエリーの数が増えすぎて管理しにくくなることです。名称を xxxx1、xxxx2、xxxx3、. . . .などとするか。クエリーの替わりに VEW を使うと良いでしょう。

この回答への補足

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

補足日時:2006/01/05 20:10
    • good
    • 0

そのクエリーは、一度でも保存されましたか?


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

この回答への補足

早速の回答ありがとうございます。
クエリは保存してあります。
一度保存して開いているので、こちらが書いた論理式を簡素なものに変換してくれています。
(その代わり9列程増えましたが)

ご指摘通り「パフォーマンスの最適化」を行ってみましたが、
変わらず「式が複雑すぎます」のメッセージが表示されます。

補足日時:2006/01/02 08:02
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A