- ベストアンサー
Accessのクエリの検索条件にフォームのテキストボックスを指定したんですが…
WinXPのAccess2002です。 クエリの検索条件には、[]カッコを用いてフォーム上のテキストボックスを指定できますが、 Nullじゃないものを検索しようと、is not nullと 入力して、試験的にクエリを起動させたところ、 「式が複雑なので…」というメッセージが帰ってきました。 ですが、そのテキストボックスに値を直接指定(数字を入力 するフィールドなんですが、039とか555とか)すると、エラーも 起きずにクエリは実行してくれます。 "is not null"などの場合は、特別な指定の仕方があるのでしょうか。 どうぞご教示のほどよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
試しにクエリのデザインビューで、検索条件に 1)Test 2)[Test] 3)Null をそれぞれ指定した上で、メニューの「表示(V)」→「SQLビュー(Q)」をクリックしてみて下さい。 すると、「1)」と「2)」では、フィールド名と条件は「=」で繋がれていますが、「3)」では「=」がないことがわかります。 つまり、「Forms![フォーム名]![コントロール名]」(→「2)」と同じパターン)の形で指定した場合、フォームのテキストボックスに「Is Not Null」を入力すると、「=Is Not Null」としてクエリを実行しようとするため、ご質問のようなエラーになります。 (一方、数字の場合は、元々「=」で繋がれているので、問題は起きない、と) ですので、「Is Null」「Is Not Null」を検索したいのでしたら、特別な対応が必要になります。 私の場合は、「通常の検索用」と「Null絡みの検索用」の2つのクエリを予め用意しておいて、 1)「空欄のものを検索」チェックボックスを設置し、そこにチェックが入れられたか判定 2)テキストボックスに「Null」というテキストがあるかどうか判定 のどちらかのマクロを設置して、その結果でクエリを使い分ける(→フォームであれば、そのレコードソースにそのクエリ名を代入)、といったことをやっています。 もうひとつの方法としては、クエリではなく、マクロやVBAで「フィルタの実行(ApplyFilter)」を行うという手もあります。 ・・・以上、私は独学なので、セオリーを外しているかもしれませんが、参考になれば幸いです。
お礼
大変遅くなりましたが、ご返信ありがとうございました。 2つのクエリを用意するという手は想定外でしたので、 トライしてみようと思っております。 どうもありがとうございました。