- ベストアンサー
検索条件について。
あるフォームで選択・入力された値から抽出を行うようなクエリを作成しました。 空欄でもきちんと抽出されるようにと、下記のようなものを記入しました。 IIf(IsNull([Forms]![検索結果]![rank]),True,[ランク] Like [Forms]![検索結果]![rank]) ですが、実行を行う(空欄で実行)と、「式が複雑すぎです」とエラーがでてしまいます。 実際の値を入力すると、何も抽出されません。 どこが違うのでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ヘッダー部分で何を検索するか入力し、結果を明細部分に表示するように しているのでしょうか? やったことが無いのでできるかどうかわかりません。 私は、検索データを入力するフォームと、検索結果を表示するフォームを 別にしています。 入力するフォーム 検索に使うクエリー 検索に使うクエリーを使用して結果を表示するフォーム ※入力するフォームに「検索」という名前のボタンを作り、このボタンを押すと 検索結果を表示するフォームを開くようにマクロで設定しています。
その他の回答 (3)
- taranko
- ベストアンサー率21% (516/2403)
>フォームで「氏名検索」のところに「田中」と押しても、検索されません。 「氏名検索表示用」に「氏名検索」に入力したデータが反映されているか 確認してください。 検索結果をフォームを使い表示させているのでしょうか? フォームで使われているクエリーが正しいクエリーか Like '*' & [Forms]![検索結果フォーム]![名前検索表示用] & '*' 抽出条件にこの条件が書かれているか確認してください。
補足
はい、きちんと表示されています。 氏名検索に「田中」と入力すると「氏名検索表示用」にも「田中」と表示されます。 (それ以前は「*」となっています。) 検索結果はフォームで表示させています。 「詳細」部分に通常のフィールドを表示し、「フォームヘッダー」に「氏名検索」や「氏名検索表示用」を表示させています。
- taranko
- ベストアンサー率21% (516/2403)
「氏名検索」「氏名検索表示用」共にテキストボックスのプロパティの 名前の所がこの名前になってますでしょうか。 Likeのこの検索方法は、元のテーブルがNullでは通用しません。 Nullではなく、空白なら大丈夫だったと思うのですが・・・ あまりお薦めできないのですが、Nullの変わりに空白を入れても 大丈夫でしたら、テーブルの氏名がNullの場合空白にするという 更新クエリーを作り、入力後や変更の後にこの更新クエリーが動くように しておくと、検索はこのLikeの検索で大丈夫だと思います。
補足
再度回答ありがとうございます。 > 「氏名検索」「氏名検索表示用」共にテキストボックスのプロパティの 名前の所がこの名前になってますでしょうか。 はい、なっています。 スペースでも大丈夫だと思うのでちょっとチャレンジしてみます。 ありがとうございました。
- taranko
- ベストアンサー率21% (516/2403)
フォームでテキストボックスを2つ作り、一つは入力用(「担当者」) もう一つのテキストボックスのコントロールソースに次のように入力します。 =IIf(IsNull([担当者]) Or IsEmpty([担当者]),"*",[担当者]) (これが入力されたテキストボックスの名前は「担当者1」とします) 検索クエリーのほうは、Likeの検索だけにします。 Like '*' & [forms]![検索]![担当者1] & '*' 手間はかかるかもしれませんが一応これでもできますよ。
補足
フォームで入力用のものとして「氏名検索」、もうひとつを「氏名検索表示用」としました。 「氏名検索表示用」の方のコントロールソースに =IIf(IsNull([名前検索]) Or IsEmpty([名前検索]),"*",[名前検索]) としました。 検索クエリーの方で、「氏名」のところに Like '*' & [Forms]![検索結果フォーム]![名前検索表示用] & '*' としました。 クエリーの方でたとえとして「田中」と入力すると田中さんすべてが表示されます。 でもフォームで「氏名検索」のところに「田中」と押しても、検索されません。 (フォームにコマンドボタンを作成し、フォームフィルタの実行を行うようにしてあります。) またクエリーでもそうですが、何も入力しないと、表示されるのが、「氏名」に何かしら文字が入っている人のみになってしまうのです。 名前が空白の人もいるので、空白の人も表示させたいのです。 何かよい解決法はありますか? よろしくお願いします。
お礼
検索するフォームと表示するフォームを別にするようにしました。 ついでに?レポートでも表示させるようにしました。 おかげでうまく表示させることができました。 何回も質問にお答えくださって本当にありがとうございました。 お世話になりましたm(__)m