• 締切済み

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

  • Access2003 削除クエリで式1フィールドがドンドン作成される

    Access2003で削除クエリを作成しました。 抽出条件に「Aフォーム」内のトグルボタン「チーム1」(オプショングループ名=商品区分)をクリックした時に、[商品番号]が100より小さいものを、トグルボタン「チーム2」をクリックした時には、[商品番号]が100以上のものを抽出するよう入力しました。 【クエリデザインビューの状態↓】 フィールド  | [商品番号] | AA: [forms]![Aフォーム]![商品区分] 抽出条件 | < 100   | 1 または  | >= 100  | 2 一応上記で削除クエリは思うように実行できたのですが、このクエリを閉じてまた開くとフィールドAAと同じ内容で『式1:』フィールドが作成されてしまいます。また閉じて開くと、同じ内容で『式2:』が、次は『式3:』が…とドンドンと作成されてしまいます。 Access2003以外のAccessでは「式」フィールドは増えなかったです。 この『式~:』フィールドが勝手に作成されないようにするには、どうすればいいのでしょうか?もしくは、最初の削除クエリの作り方がおかしいのでしょうか? 教えて頂きたく、よろしくお願いします。

  • Accessのクエリで。

    Accessのクエリで。 お世話になります。 Accessのクエリにて、デザインビューで色々抽出 条件を入力していて、#から始まる物を抽出しようとした所 (LIKE "#*")、数字の行のみしか抽出できない状態です。 どの様にしたら、#から始まる文字の行を抽出出来ますでしょうか。 ご教授下さいます様、宜しくお願い致します。

  • ACCESSでVBAから選択クエリの抽出条件を指定したい

    選択クエリの抽出条件はデザインビューの「抽出条件」欄に直接条件式を書き込むのが普通だと思いますが、この条件式をVBAで記述することは出来るでしょうか? DoCmd.RunSQL ではアクションクエリしか実行できないようだし、 DoCmsOpenQuery では引数に抽出条件を指定することが出来ないし困っています。

  • accessのクエリのフィールドで式入れて並び替えする方法

    アクセスの初心者ですですが、本を見ながらですがようやくVBAを使えるようになりました。レベルはその程度です。 標記のとおり、クエリのフィールドに式を入れたら並び替えができなくなりました。式は以下のとおりです。 ●●●: IIf([●●●]>=14,[●●●]*0,[XXX]+(14-[●●●])) データシートビューにすると、XXXの小窓が出てきます。 フォームでもテーブルでもレポートでも並びかえができました。 クエリの式は並び替えができないものなんでしょうか? なければ結構ですが、なにか方法があったり、使い方が間違って いるなら教えてください。 よろしくお願いします。

  • アクセスのクエリ抽出について

    アクセスで、テキストデータを開き クエリウィザードからフィールドの抽出条件として 文字が含まれているものと文字が含まれていないものと それぞれ抽出したいのですが Likeの式から抽出出来るのでしょうか? なにかの文字を含んでるデータに対しては 抽出できるのですが、うまく抽出出来ません。 下記のようなイメージで抽出したいと思ってます。 例 データ合計5件    "00000001234-23 " "12345672-1-2 " "" "55145672-1-3-2 " ""    データあり3件    "00000001234-23 " "12345672-1-2 " "55145672-1-3-2 "    データなし2件    "" "" 宜しくお願いします。

  • アクセスのクエリで困ってます。

    契約日から6ヶ月めの日付をだして、さらにその日を検索したいんですが・・・ テーブルに契約日のデータがあります。 クエリで、    フィールドに6ヶ月: DateSerial(Year([竣工金入金日]),Month([竣工金入金日])+7,Day([竣工金入金日]))    抽出条件にBetween [開始日] And [最終日] としました。 抽出条件を入れなければ正常に値がでましたが、 抽出条件を入れると  ”式が正しく入力されていないか、複雑すぎるために評価出来ません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にして下さい。” という、エラーメッセージが出てしまいます。 解消する方法を教えて下さい。

  • ACCESSでクエリの式の内容を一覧にしたい

    ACCESSの質問です。初心者です。 ひとつのクエリにフィールドが200以上あり、その中に式がたくさん(私にとっては・・・)あります。 式の内容を変更したりメンテするのに、クエリの内容をすべて一覧で見る方法か、または、EXCEL等に吐き出して見る方法はありますでしょうか? 現在、クエリのフィールド名と式の内容を1フィールド毎にEXCELに貼り付けて管理しています。 たとえば・・・ (1)ID (2)数量 (3)単価 (4)売上:数量*単価 (5)消費税:数量*単価*0.05    ・    ・ といった具合にクエリの内容が延々と200以上続いています。実際には複数の条件式が入ったりして、もっと複雑な計算をしています。 これを、一覧の形で見るか、またはEXCEL等に吐き出した形で見たいのです。 どなたか教えてください。 よろしくお願いします。

  • Access2010「クエリが複雑すぎます」

    お世話になります。 ユニオンクエリAがあり、そのクエリを使用してクエリB(テーブルや別のクエリとも紐付け)を作成しました。問題なく抽出できます。  <クエリB>  ユニオンクエリA ----→ クエリX              |               ---→ テーブル1              |               ---→ テーブル2              |               ---→ テーブル3 新たにユニオンクエリAを使って、クエリCを作成したところ「クエリが複雑すぎます」と表示されてしまいます。いくつかのテーブル/クエリと紐付けていたので、一つずつ取っていったところ、最終的にはユニオンクエリA一つでもエラーが出てしまいます。単純な選択クエリです。 クエリBは同じユニオンクエリAを使い、複数のクエリとテーブルとを紐付けているのにも関わらずエラーとなりません。。 どのようなことが考えられますでしょうか。 Accessを起動し直したり、端末自体も再起動しましたが状況変わらずでした。 また、ユニオンクエリA単体を開いても問題無く抽出されます。 ご教授の程、宜しくお願い致します。

  • access2007 クエリで抽出

    初心者です。クエリで抽出したのですが、一部のデータが抜け落ちます。抽出条件のフィールドはテキスト型で、元のテーブルでコピペで統一しましたが、同じデータが抜け落ちます。削除してやり直しても同様でした。重複クエリを作成するとこのフィールドが重複して出てきます。どこを直したらいいのか見当がつきません。よろしくお願いします。

  • MySQLでクエリにクエリできますか

    Access 2003を使っています。クエリに対し、さらにクエリでデータを抽出するといったことをしたりします。 話し変わって、MYSQLのような本格RDMSを学ぼうと思っています。そこで、ふと思ったのですが、クエリに対し、クエリすることはできるんでしょうか?ビューに対し、ビューするといったほうが正しいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL