• ベストアンサー

検索条件について。

あるフォームで選択・入力された値から抽出を行うようなクエリを作成しました。 空欄でもきちんと抽出されるようにと、下記のようなものを記入しました。 IIf(IsNull([Forms]![検索結果]![rank]),True,[ランク] Like [Forms]![検索結果]![rank]) ですが、実行を行う(空欄で実行)と、「式が複雑すぎです」とエラーがでてしまいます。 実際の値を入力すると、何も抽出されません。 どこが違うのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taranko
  • ベストアンサー率21% (516/2403)
回答No.4

ヘッダー部分で何を検索するか入力し、結果を明細部分に表示するように しているのでしょうか? やったことが無いのでできるかどうかわかりません。 私は、検索データを入力するフォームと、検索結果を表示するフォームを 別にしています。 入力するフォーム 検索に使うクエリー 検索に使うクエリーを使用して結果を表示するフォーム ※入力するフォームに「検索」という名前のボタンを作り、このボタンを押すと 検索結果を表示するフォームを開くようにマクロで設定しています。

KODAMAR
質問者

お礼

検索するフォームと表示するフォームを別にするようにしました。 ついでに?レポートでも表示させるようにしました。 おかげでうまく表示させることができました。 何回も質問にお答えくださって本当にありがとうございました。 お世話になりましたm(__)m

その他の回答 (3)

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.3

>フォームで「氏名検索」のところに「田中」と押しても、検索されません。 「氏名検索表示用」に「氏名検索」に入力したデータが反映されているか 確認してください。 検索結果をフォームを使い表示させているのでしょうか? フォームで使われているクエリーが正しいクエリーか Like '*' & [Forms]![検索結果フォーム]![名前検索表示用] & '*' 抽出条件にこの条件が書かれているか確認してください。

KODAMAR
質問者

補足

はい、きちんと表示されています。 氏名検索に「田中」と入力すると「氏名検索表示用」にも「田中」と表示されます。 (それ以前は「*」となっています。) 検索結果はフォームで表示させています。 「詳細」部分に通常のフィールドを表示し、「フォームヘッダー」に「氏名検索」や「氏名検索表示用」を表示させています。

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.2

「氏名検索」「氏名検索表示用」共にテキストボックスのプロパティの 名前の所がこの名前になってますでしょうか。 Likeのこの検索方法は、元のテーブルがNullでは通用しません。 Nullではなく、空白なら大丈夫だったと思うのですが・・・ あまりお薦めできないのですが、Nullの変わりに空白を入れても 大丈夫でしたら、テーブルの氏名がNullの場合空白にするという 更新クエリーを作り、入力後や変更の後にこの更新クエリーが動くように しておくと、検索はこのLikeの検索で大丈夫だと思います。

KODAMAR
質問者

補足

再度回答ありがとうございます。 > 「氏名検索」「氏名検索表示用」共にテキストボックスのプロパティの 名前の所がこの名前になってますでしょうか。 はい、なっています。 スペースでも大丈夫だと思うのでちょっとチャレンジしてみます。 ありがとうございました。

  • taranko
  • ベストアンサー率21% (516/2403)
回答No.1

フォームでテキストボックスを2つ作り、一つは入力用(「担当者」) もう一つのテキストボックスのコントロールソースに次のように入力します。 =IIf(IsNull([担当者]) Or IsEmpty([担当者]),"*",[担当者]) (これが入力されたテキストボックスの名前は「担当者1」とします) 検索クエリーのほうは、Likeの検索だけにします。 Like '*' & [forms]![検索]![担当者1] & '*' 手間はかかるかもしれませんが一応これでもできますよ。

KODAMAR
質問者

補足

フォームで入力用のものとして「氏名検索」、もうひとつを「氏名検索表示用」としました。 「氏名検索表示用」の方のコントロールソースに =IIf(IsNull([名前検索]) Or IsEmpty([名前検索]),"*",[名前検索]) としました。 検索クエリーの方で、「氏名」のところに Like '*' & [Forms]![検索結果フォーム]![名前検索表示用] & '*' としました。 クエリーの方でたとえとして「田中」と入力すると田中さんすべてが表示されます。 でもフォームで「氏名検索」のところに「田中」と押しても、検索されません。 (フォームにコマンドボタンを作成し、フォームフィルタの実行を行うようにしてあります。) またクエリーでもそうですが、何も入力しないと、表示されるのが、「氏名」に何かしら文字が入っている人のみになってしまうのです。 名前が空白の人もいるので、空白の人も表示させたいのです。 何かよい解決法はありますか? よろしくお願いします。

関連するQ&A

  • ACCESSでクエリーを使った検索

    VBAを使えば簡単にできるのですが、事情があり、クエリーのみで行わなければいけません。 フォームに入力された情報を元に検索できるクエリを作成しました。 通常でしたらクエリのフィールド名の下の抽出条件に Forms![F_検索]![検索条件1] とすればいいのですが、これが複数の条件を設定した場合はすべての条件を入力しないと、検索結果が出ないことから 以下のように変更しました。 フィールド名の抽出条件には何も書かず、別に式として IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=[Forms!]![F_検索]![検索条件1])) と入力しそこの抽出条件に「True」と入力しました。 これで何も入力されてない場合は全件が表示されるようになりました。 通常の検索はこれでいいのですが疑問点が2点あります。 1.期間を抽出する場合はどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Between [Forms!]![F_検索]![検索条件1] and [Forms!]![F_検索]![検索条件2])) とかしてみましたがダメでした。 2.あいまい検索をするにはどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Like [Forms!]![F_検索]![検索条件1])) なんてしてみましたがだめでした。 ご回答よろしくお願いします。

  • Access2000 抽出について

    どうしてもわからないので教えてください。 選択クエリで、「フリガナ」というフィールドに、 Like IIf(IsNull([Forms]![F_顧客検索]![カナ検索]),"*",[Forms]![F_顧客検索]![カナ検索] & "*") でフォームからクエリを実行させるようにしているのですが、 フリガナが空白のレコードは抽出されてくれません。 「*」でなく、なんと入れればいいのでしょうか? ちなみに他に、「自宅電話番号」というフィールドに、 Like IIf(IsNull([Forms]![F_顧客検索]![電話検索]),"*" & "*",[Forms]![F_顧客検索]![電話検索] & "*") など、似たような感じで抽出をかけています。 よろしくお願いします。

  • ACC クエリ 条件にIIf

    宜しくお願いします。 ACCESSのクエリで、抽出条件に画面からの値を使用したいのですが、 その値がNULL(未入力)時には全件抽出としたいのですが、 うまく行きません。下記の「""」には何をセットすれば よいのでしょうか? IIf (NOT ISNULL( [Forms]![F_伝票照会]![伝票NO]), [Forms]![照会]![伝票NO], "")

  • <access あいまい検索のクエリ作成について>

    <access あいまい検索のクエリ作成について> access初心者です。。 今,住所録から地名を入れて検索するクエリを作成しています。 式を作成しましたが,先頭に該当するものしかヒットしません。  例:大阪府で絞り込みをした場合,大阪市等,大阪が先頭にくる住所しかヒットせず,    泉佐野市等は出てこない。 検索値が前後に含まれるようにするには数式をどのように変えればいいのでしょうか。 お願いします!! ■入れた数式■ (1)フィールド IIf(IsNull([forms]![frm住所検索]![住所]),True,[住所] Like [forms]![frm住所検索]![住所] & "*") (2)テーブル・並び替え・表示=空欄 (3)抽出条件=true ■補足■ フィールド:名前,住所等 クエリ名:住所検索

  • Access2000 でのLikeを使用したフィルタ操作

    こんばんは、答えていただけたらありがたいです。。。 今、Access2000で従業員DBを作成しています。 会社の従業員人数が200人ほどいるので、管理できるソフトを作っています。 検索フォームを作成し、姓などをあいまい検索したいと思い、クエリで作ってみましたが、うまくいきません。 姓の抽出条件に Like ("*" & Nz([Forms]![検索君]![TXT3],"*")) と書きましたが、全員出てしまいます。 また、 式1: IIf(IsNull([Forms]![検索君]![TXT3]),True,[Forms]![検索君]![TXT3]) こういう式も書いてみましたが、-1かエラーが出る結果になりました。。。 以上です。よろしくお願いします。

  • Accessの検索フォームで。

    Accessを使ってデータベースを作成しています。 「テーブル1」があり、これには 名前ID 名前 入力日 チェック項目1 チェック項目2   : とあります。 これをもとに「検索クエリ」を作成しました。 検索クエリの項目は「テーブル1」とまったく同じですが、 すべてを検索するわけではないので ・名前ID  「検索項目なし」 ・名前  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*') ・入力日  「検索項目なし」 ・チェック項目1  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」 ・チェック項目2  ※上記と同じ。   : としてあります。 この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。 名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。 「テーブル1」に空欄があり、その場合に、検索がうまくいきません。 「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。 やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか? これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。 これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか? あまり上手な文章ではないので、補足要求があれば補足します。 宜しくお願いします。 Ac2000です。

  • アクセス2003の検索クエリーについて

    今、アクセス2003で色々勉強しています。 氏名とか住所はクエリーの曖昧検索で式を書いて動いたのですが。 期間・・何年何月何日~何年何月何日で検索する式がわかりません。 どのような式を書けばいいのでしょうか? ちなみに曖昧検索はIIf(IsNull([Forms]![検索画面]![住所]),True,[住所] Like "*" & [Forms]![検索画面]![住所] & "*")と書いて動きました。 うまく表現が出来ないので、わからないかもしれませんがよろしくお願いします。

  • ACCESSのあいまいな条件のクエリ 

    フォームで金額を入力します。 この入力された金額を使ってクエリの条件を作りたいと考えています。 <条件> ・金額が未入力の場合は、全て抽出。 ・金額が入力されている場合は、その金額以上を抽出   (例:1000と入力された場合は、>=1000) 下記のような条件式を入れたら、金額を入力しているにも関わらず、 何も入力されてきませんでした。 IIf(IsNull([Forms]![フォームA]![txt金額]),Like "*",>=Val([Forms]![フォームA]![txt金額]))

  • アクセスである文字を含む検索2

    先ほど同じタイトルで質問して、お答えいただいて、それで成功したかにみえたのですが、よくみたら、なぜかテーブルよりクエリの方が多い。おかしいなと思い、[顧客名テーブル]を作成し、 お答えいただいた以下の抽出条件に、 Like Iif(IsNull([Forms]![検索フォーム]![検索]),[顧客名テーブル]![顧客名],'*'&[Forms]![検索フォーム]![検索]&'*') としたら、 件数はきちんと表示されました。 しかし、今度は検索ボタンを押すときに「パラメータの入力」ダイアログが表示され、 [Forms]![検索フォーム]![検索]),1,Unknown と表示され、無視すると、きちんと検索できなくなってしまいました。 すみませんがどうしたら解消できるか、教えてください。 よろしくおねがいします。

  • <access クエリのあいまい検索>

    <access クエリのあいまい検索> こんにちわ。以前,クエリについて質問した者です。(前回質問番号:6003331) 引き続き,質問です。 前回はクエリでのあいまい検索の式についての質問でした。 今回は同じクエリで追加として別のフィールドでも同時にあいまい検索を行いたいと思っています。 名前,住所,連絡先等がある住所録があります。 クエリを使って,任意の文字検索をするように設定しています。 前回ここで教えて頂き,「京都」と入れたら,「京都市」も「京都群」もヒットするようになりました。 今回は同時に他のフィールドの検索値が入っていたら,それも一緒に表示させるようにしたいのです。 具体的には下記のとおりです。 1)住所のフィールドに「京都」が含まれている人,かつ,「田中」という文字を含む人を検索 2)単に「田中」という文字を含む人を検索 現在の入力値は下記のとおりです。 ご指導お願いします。 ■今,入力されていること フィールド:IIf(IsNull([forms]![frm条件検索]![住所名]),True,[住所名] Like "*" & [forms]![frm条件検索]![住所名] & "*") テーブル・並び替え=空欄 表示:チェックが入っています。 抽出条件:true