「Or検索」の方法について知りたい!

このQ&Aのポイント
  • グーグルやヤフーのようにアクセスのフォーム上からクエリの検索も「Or検索」をしたいです。
  • テキスト1に「み」と入力し、コマンド0を押すと「みかん」が表示されます。
  • テキスト1に「りんご」も入力して両方を表示させる方法はわかりません。ご教授いただけないでしょうか?
回答を見る
  • ベストアンサー

「Or検索」をするには?

グーグルやヤフーのようにアクセスのフォーム上からクエリの検索も「Or検索」をしたいのですがやり方がわかりません。 (長くなりますがお付き合いくださいませ(*_ _)ペコリ) ******************************************************* テーブル1 フィールド名:果物 りんご みかん ******************************************************* クエリ1 SELECT テーブル1.果物 FROM テーブル1 WHERE (((テーブル1.果物) Like "*" & [Forms]![フォーム1]![テキスト1] & "*")); ******************************************************* フォーム1 テキスト1とコマンド0を配置。 コマンド0のイベントに Private Sub コマンド0_Click() DoCmd.OpenQuery "クエリ1" End Sub ******************************************************* と作りました。 これで、テキスト1に「み」と入力し、コマンド0を押せば クエリ1は「みかん」が表示され、 「ん」と入力すれば、 「りんご」「みかん」のどちらも表示されます。 今からやりたいことは 「りんご」「みかん」のどちらも入力して どちらも表示させたいのです。 (こちらのサイトもそのような仕組みですよね?) 多分、 WHERE (((テーブル1.果物) Like "*" & [Forms]![フォーム1]![テキスト1] & "*")) の部分をどうにかするのだと思うのですが わかりません。 どなたかご教授いただけないでしょうか? イメージとして画像をUPします。 よろしくお願いします。

  • 1hdthd
  • お礼率97% (239/244)

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

フォームとしてオープンするように変更できるとしたら (これが一番簡単だと思います) SELECT テーブル1.果物 FROM テーブル1 をレコードソースとするフォームを作成し、既定のビューをデータシートにします。 絞込み方法は、以下が参考になると思います。 【AccessでWEB検索のように曖昧検索したい】 ※ 内容は AND ですが、OR に変更してください。 ※ 間にあるスペースは、1文字であることが前提です。 ※※2文字以上のスペースも許す場合については、処理を考えてみてください。

1hdthd
質問者

お礼

私以外にも同じことを考える人がいるのですね。 参考になりました。ありがとうございます。

関連するQ&A

  • ユニオンクエリの場合は「Like [Forms]![フォーム1]![テキスト0]」とはできないのでしょうか?

    こんにちは。いつもお世話になります。 早速ですが T果物、T野菜、T花の3つテーブルでユニオンクエリを作成しました。 (各テーブルのフィールド名は「名前」です。) SQL文は ************************************************ SELECT 名前.名前, * FROM [select * from T果物 UNION ALL select * from T野菜 UNION ALL select * from T花 ]. AS 名前; ************************************************ です。 次に図1の様にテキストボックスに名前を入力してコマンドボタンを押してクエリを開く為のユーザーフォームを作成しました。 コマンド2を押したときは Private Sub コマンド2_Click() DoCmd.OpenQuery ("ユニオンクエリ") End Sub でユニオンクエリを開く動作を指示してあります。 ここまでなら問題なく作業ができるのですが テキストボックスに入力されている名前を含むものがコマンドボタンを押すと表示されるようにしたいのですが どうもユニオンクエリだとうまくいきません。 ユニオンクエリはデザインビューなら図2、 SQL文なら ************************************************ SELECT 名前.名前, * FROM [select * from T果物 UNION ALL select * from T野菜 UNION ALL select * from T花 ]. AS 名前 WHERE (((名前.名前) Like [Forms]![フォーム1]![テキスト0])); ************************************************ とすると、図3のようなエラーが出てしまいます。 ユニオンクエリではなく、普通のクエリ(選択クエリ?)なら 「Like [Forms]![フォーム1]![テキスト0]」の一文を入れても 問題なく作業できます。 何かアドバイスお願い致します。

  • ACCESSの検索について

    過去ログを見たのですが、該当するものが見つからなかったので質問させてください。 すでに入力してあるデータの生年月日から特定の月に誕生日を迎える人を検索したいと思っております。 クエリの検索条件で Like "*" & [Forms]![誕生日検索2]![テキスト0] & "*" とし、フォームの誕生日検索2のテキスト0に入力されたものを抽出したいのですが、クエリで開いてパラメータの入力のところでは「2008/07」とすれば今年の7月に誕生日を迎える人が抽出できるのに、フォームのテキスト0に同じように入力してもデータが抽出されません。 ちなみにフォームのイベントプロシージャは Private Sub コマンド2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) DoCmd.OpenQuery "誕生日検索" End Sub Private Sub テキスト0_AfterUpdate() DoCmd.Requery End Sub としております。 どこをどう直せばうまく抽出できるようになるのでしょうか?

  • 文字列の入っているString値、何も入力されていないString値、Null値の全てを表示されるには?

    access2003です。 フォーム1とクエリ1とテーブル1があります。 クエリ1の「テーブル1の番号フィールド」の抽出条件に 「Like "*" & [Forms]![フォーム1]![番号テキスト] & "*"」と入力しています。 フォーム1の番号テキストに「1」を入力しコマンドホ゛タンを押すと 「1」を含むレコードを表示され フォーム1の番号テキストに「*」を入力しコマンドホ゛タンを押すと 何かしらの文字列が入力されているレコート゛が表示されます。 しかし テーブル1番号フィールドには、 Null値と何も入力されていないString値(""←が入っている)も含まれています。 (見た目は空白どちらも空白です) (String値がある理由はADOを使って何も入力されてない値もまとめてレコードに追加している為) ここで質問なのですが フォーム1のコマンドホ゛タンを押したときに 文字列の入っているString値、何も入力されていないString値、Null値の全てを表示されるには どうすればいいのでしょうか? よろしくお願い致します。

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

    ACCESS2000を使っています。 あるデータテーブル「発注書テーブル」があって、ここでは「(1)ID」「(2)顧客名(法人)」「(3)発注商品」「(4)納品済チェック」の4つフィールドがあるとします。 作業はフォームで行います。フォーム名は「発注書フォーム」。 「(2)顧客名」から検索をかけたくて、検索コマンドボタンをつくり、「検索フォーム」を発注書フォームとまったく同じ形態でつくり、そこにとべるようにしました。 「検索フォーム」には「検索」というテキストボックスを作ります。 「検索クエリ」というクエリを作り、発注書テーブルを素とし、すべてをデザインビューで表示するようにしました。 そして、「(2)顧客名」の抽出条件に[Forms]![検索フォーム]![検索]を入力します。 すると、「検索フォーム」の「検索」をコンボボックスにして、顧客名をすべて表示させ選択した場合は、「検索フォーム」では、選択した顧客の情報が表示されるようになりました。 が、しかし、「検索」をコンボボックスではなく、テキストボックスで、しかも顧客名の一部だけを入力したら、その文字を含むすべてのレコードを表示してほしいのです。 そこで、「検索クエリ」の「(2)顧客名」抽出条件にlike"*[Forms]![検索フォーム]![検索]*"と入力してみました。 そして「検索フォーム」の「検索」テキストボックス(非連結)に顧客名の一部を入力したところ、ぜんぜん絞りこみ抽出してくれません。 もちろん、クエリ上でも絞り込んでいない模様です。 どうしたら文字の一部からその文字を含む顧客名のレコードを全て抽出し、表示させることができるでしょうか? 細かくてすみませんが、かなり困ってます。 どうかわかる方、教えてください。 まったくちがう方法(別の手法)でもかまいません。 この説明でわからない部分がありましたら補足しますのできいてください。 よろしくお願いします。

  • Accessであいまい検索するフォームをつくってみたんですが?

    Accessの初心者です。 本などをみながらあいまい検索ができるようなフォームをつくってみましたがフォームを開いた時、全レコードが表示されてしまいます。 クエリーの抽出条件はLike "*" & Forms!フォーム1!テキスト0 & "*"にしてテキストボックスプロパティの更新後処理でDoCmd.Requeryとしました。(意味がよくわからないんですけど) フォームを開いた時やテキストボックスになにも入力されていない時、全レコードが表示されないようにするにはどうすればいいのでしょうか? よろしくお願いします。

  • 【Access】クエリをソースに移植する方法

    下記のクエリをフォームのVisual Basicに移植したいと思ったのですが、どのように書けば良いか分からなかった為、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 【クエリ(Q_FORM)】 INSERT INTO W_TBL SELECT T_TBL.* FROM T_TBL WHERE (((T_TBL.key) Like '*' & Forms!F_FORM!txt_key & '*') And ((T_TBL.flag) Like '*' & Forms!F_FORM!txt_flag & '*')); 【テーブル(T_TBL)】 id| key|flag 1|1234|1 2| 12|0 3| 12|1 【テーブル(W_TBL)】 id| key|flag 【フォーム(F_FORM)】 テキストボックス:txt_key テキストボックス:txt_flag コマンドボタン:cmd_insert 【フォームのVisual Basic】 Option Compare Database Option Explicit Private Sub cmd_insert_Click() DoCmd.OpenQuery "Q_FORM" End Sub それと、現在のクエリではtxt_keyが部分一致(txt_keyが12の場合、1234もヒットしてしまいます)すればヒットするようになっていますが、これを完全一致にする方法をご存知の方がいらっしゃいましたら、ご教示の程よろしくお願いします。 単純に完全一致させたいのであれば、txt_key前後のLikeや*を除けば良いのではと思うのですが、txt_keyが未入力の場合は全件ヒットさせたいと思っており、整合性を取る方法が分かりませんでした。 以上、よろしくお願いします。

  • Access2000で複数の検索項目を作りたいのですが・・・

    こんにちわ。 今、Accessで社員録を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:社員録 フィールド名:ID・検索名・氏名・所属ID・所属 ■クエリ クエリ名:社員録クエリ フィールド名:ID・検索名・氏名・所属ID・所属 検索名抽出条件:検索名フィールド: Like [Forms]![社員録 縦]![けんさく]         所属フィールド: Like [Forms]![社員録 縦]![抽出検索名] ■フォーム フォーム名:社員録フォーム:テキスト1・テキスト2・ボタン1       社員録サブフォーム:データソース:社員録クエリ テキスト1:所属を入力 テキスト2:検索名を入力 ボタン1:マクロの再クエリを実行する ■ここからが質問です■ (1)テキスト1又は、2が空白のとき社員録全体から検索かフィルタ。 (2)テキスト1・2が、入力されてる時、両条件から検索かフィルタ。 をしたいのですが、何かいい方法がありましたら教えて下さい。 説明が、長くなってしまってスミマセン。。。

  • テーブル・クエリ・フォーム どれがいい?

    アクセス初心者の為、よくわからないので教えてください。 テーブル1があり そこには ID(主キー/オートナンバー型) フィールド1(テキスト型)があります。 そのテーブルを基にクエリ1作成してます。 [SELECT テーブル1.* FROM テーブル1;] です。 また、テーブル1をレコードソースとしたフォーム1も作成しています。 そして図のようにメインメニューフォームを作成し それぞれのコマンドボタンを設置しました。 モジュールには --------------------------------------------------------- Option Compare Database Option Explicit Private Sub コマンド0_Click() DoCmd.OpenTable "テーブル1", acViewPivotTable End Sub Private Sub コマンド1_Click() DoCmd.OpenQuery "クエリ1", acViewPivotTable End Sub Private Sub コマンド2_Click() DoCmd.OpenForm "フォーム1", acFormPivotTable End Sub --------------------------------------------------------- と書いたので どのボタンを押してもピボットテーブルを開けます。 しかしどれか一つにしたいのですが 今後運用するにおいてどれで開けばいいのでしょうか? ピボットテーブルビューで開くならどれも同じでしょうか? 今回はピボットテーブルビューで表示していますが データシートビューでも表示させたい場合があれば 「フォームなら条件付き書式が設定できるからフォームが良いかなー」 と思っています。 確かテーブルやクエリでは条件付き書式はできなかったような・・・ 全てのビューで開くにおいて テーブル・クエリで開くメリットがあれば教えてください。 ご回答よろしくお願いします。

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

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

  • accessvba 複数条件でFilterをしたい

    テーブル1 --------------------------------------- ID フィールド1 フィールド2 1 あ A 2 い B 3 う C 4 え D 5 お E --------------------------------------- を作成し、そのテーブルをもとに、帳票フォームを作成しました。 そのフォームに非連結のテキストボックス ID_テキスト フィールド1_テキスト フィールド2_テキスト 3つを設置しました。 行いたい事をクエリ(SQL文)で例えると、 --------------------------------------- SELECT テーブル1.ID, テーブル1.フィールド1, テーブル1.フィールド2 FROM テーブル1 WHERE (((テーブル1.ID) Like "*" & Forms!テーブル1!ID_テキスト & "*") And ((テーブル1.フィールド1) Like "*" & Forms!テーブル1!フィールド1_テキスト & "*") And ((テーブル1.フィールド2) Like "*" & Forms!テーブル1!フィールド2_テキスト & "*")); --------------------------------------- なのですが、 これをクエリを作成せずに、VBAで行いたいです。 各非連結のテキストボックスには、 更新後処理:[イベント プロシージャ] としています。 --------------------------------------- Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub --------------------------------------- は、問題なくできるのですが、 Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" and & _ "フィールド1 like '" & "*" & Me.フィールド1_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub にすると、エラーになります。 andの繋げ方が良くないと思うのですが、どうすればいいでしょうか? 最終的には、 Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" "フィールド1 like '" & "*" & Me.フィールド1_テキスト.Value & "*" & "'" "フィールド2 like '" & "*" & Me.フィールド2_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub のような感じにしたいです。 ご回答よろしくお願いします。

専門家に質問してみよう