• ベストアンサー

Access テキストボックスとlikeのあいまい検索

タイトルどおりの操作について教えてください。 Access VBAは、ごく簡単な操作が理解できる程度のレベルです。 フォームに検索キーワード用の非連結のテキストボックスを作成し、 コマンドボタンで検索を実行したいと思います。 イコールで結んだ場合は検索されるのですが、これをLikeに変えると まったく検索されません。 [Q_書籍名検索]![書名] = [Forms]![F_書籍名で検索]![書籍検索] [Q_書籍名検索]![書名] Like " * " & [Forms]![F_書籍名で検索]![書籍検索] & "*" エラーも表示されないのですが、なにが問題なのか教えてください。 よろしくお願いします。

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

  • ベストアンサー
回答No.2

まず、『F_書籍名で検索』のクエリにて『抽出条件』に以下を入力。 Like "*" & [Forms]![F_書籍名で検索]![書籍検索] & "*" 次にマクロを新規作成します。 アクションに『フィルタの実行』を選択。 フィルタ名に上記のクエリ名を入力。 そして、『F_書籍名で検索』に戻り『書籍検索』のプロパティにて 『更新後処理』に新規作成したマクロを指定します。 これだと『書籍検索』に言葉を入力して『ENTER』を押すと抽出されます。 私的にはコマンドボタンはいらないと思います。

suzupen
質問者

お礼

早々に回答ありがとうございます。 さっそく教えていただいた方法を試してみましたが全部のデータが表示されてしまい残念ながらうまくいきませんでした。 これは私のスキル不足で何かの設定が間違っているのだと思います。(知らない方法ですし、なぜうまくいかなかったのかが結構知りたいところでもあります。) 実は、質問の件は元になるクエリを変えて実行できました。 また機会がありましたらよろしくお願いします!

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Accessのバージョンが分からないのですが、単に該当するデータが ないだけでは? 特にOracleなどをLinkテーブルとして使っている場合は相手先の DBシステムの特徴(あいまい検索のルール、大文字小文字の区別)の 影響を受けますので、Accessと同じ感覚で考えると、期待した結果が 得られない場合があります。

suzupen
質問者

お礼

早々に回答ありがとうございます。 バージョンは2003です。いろいろ検索のルールを調べてみて元になるクエリを変えて実行できました。 また機会がありましたらよろしくお願いします!

関連するQ&A

  • Access97 テキストボックスを利用したあいまい検索フォーム

    Acces97にて下記のようなデータベースを使用しております。  テーブル:銀行コード一覧(銀行コード、銀行名、支店コード、支店名、支店住所)  クエリー:Q-銀行名検索、Q-支店名検索  フォーム:F-銀行名検索、F-支店名検索 今は検索したいフィールド毎にクエリーとフォームが作ってあり、同じようなクエリーとフォームが複数ある状態です。  <クエリー>   (1)Q-銀行名検索→フィールド「銀行名」に【Like "*" & [調べたい銀行名の一部入力] & "*"】設定   (2)Q-支店名検索→フィールド「支店名」に【Like "*" & [調べたい支店名の一部入力] & "*"】設定   ・・・以下同様のクエリー複数あり  <フォーム>   (1)F-銀行名検索にQ-銀行名検索を設定   (2)F-支店名検索にQ-支店名検索を設定   ・・・以下同様のフォーム複数あり 今回作りたいのは、1つのフォーム内に検索したいフィールド分の検索ボタンを作り、検索したい項目をテキストボックス内に入力後該当ボタンをクリックすることによって入力した項目を含むデータが抽出されるというフォームです。 例えば、"東京"と入力し「支店名」ボタンをクリックすると『東京営業部』『東京中央』等"東京"を含むデータが抽出される といった具合です。 部署内にAccess作成事例集なるものがあり、それを元に下記のように作成してみました。 フォーム名を「F-銀行コード一覧」・テキストボックス名を「検索」として、「支店名」ボタンのマクロに [Forms]![F-銀行コード一覧]![検索]=[銀行コード一覧]![支店名] というアクション(フィルタの実行→Where条件式)を設定。しかし、これでは『東京』のみしか抽出されませんでした。 Like関数を利用するのかと思い Like "*"&[Forms]![F-銀行コード一覧]![検索]&"*"=[銀行コード一覧]![支店名] としてみましたが設定できませんでした。 どのようなアクションを設定したらフォームでのあいまい検索ができるのでしょうか?

  • Accessで「キーワード検索」をしたい

    前任者が作ったデータベースを触っています。 私自身はAccessの基本操作がわかるくらいでVBAとかはよくわかりません。 今回その修正がしたいと思っています。 検索用フォームがあり、現在3つのコンボボックスがあってそれを選択して 「検索開始」をしています。 今回、その検索用フォームに「キーワード検索」というテキストボックスを1つ追加したいです。 検索の対応となるフィールドは2つあります。 「質問」「回答」 このどちらかのフィールドに「キーワード検索」した文字があればレコードを抽出してほしいです。 とりあえず検索結果を表示するためのクエリの「質問」「回答」の抽出条件に同様に Like "*" & [Forms]![F_検索フォーム]![キーワード] & "*"と入れてみました。 なんとなく違う気はするのですが、どうやってやれば良いのかイマイチわかりません。 またこの同じクエリに IIf(IsNull([Forms]![F_検索フォーム]![区分1cd]),True,[区分1cd]=[Forms]![F_検索フォーム]![区分1cd]) 抽出条件欄に「True」 これが3つのコンボボックス分あります。 何のためのフィールドでしょうか? また、私が追加する「キーワード検索」テキストボックスの分も作らないといけないものでしょうか? 素人質問で申し訳ありませんがアドバイスいただけたら助かります。 Accessのテキストは職場にたくさんあるのですが、私のレベルでは読んでも??ばかりです。 よろしくお願いします。

  • Access フォーム 複数キーワードでのOR検索

    クエリQ-TESTには商品名というフィールドがあります。 商品名フィールドの抽出条件には Like "*" & [Forms]![F-search]![商品検索] & "*"と設定しています。 フォームF-searchにはテキストボックスを配置し、名前を商品検索としています。 また、コマンドボタンにて検索の実行ボタンを配置しています。 これを複数キーワード(or検索?)で結果を返したいと思っております。 検索するのは商品名フィールドのみで、キーワードの数は日によって違います。 調べたのですがVBAでの書き方などしかヒットせず 今の私の理解では内容が追いつけません。 http://accessclub.jp/bbs3/0070/superbeg26090.html 作業環境は、OS:Windws7、使用ソフト:Access2003です。 どのように設定すれば複数キーワードでの抽出が可能になるか お力添えいただけますようお願い申し上げます。

  • Access テキストボックスを使用した範囲検索

    タイトルどおりの操作について教えてください。 Access VBAは、ごく簡単な操作が理解できる程度のレベルです。 Accessのフォームにテキストボックスを二つ作成し、 それぞれに金額を入力します。 その範囲結果をBetween And 演算子で抽出し ふたつめのボックスには空文字はパスにしたいと思います。 以下の式を作成しましたが、実行しようとすると、 「Me.キーワードの使用が不正です」と出ます。 複雑な式ではないと思うのですが、何がいけないのでしょうか。 どうか教えてください。 ------------------------------------------------ Sub 検索_Click() Me.Fliter = "[金額] Between [Forms]![F_金額で検索]![金額1] And [Forms]![F_金額で検索]![金額2] Is Null" Me.FilterOn = True End Sub

  • Access2003 テキストボックスの値によるクエリの抽出条件

    コマンドボタンによるクエリの実行と、直接クエリを実行する(マウスでクリック) するのとで、動作が変わってしまいます。 F_メインメニュー(フォーム)内の非連結のテキストボックスtext1に文字列を入力し、 その隣に配置した検索ボタンを押すことで、テキストボックスの値を含む住所を 抽出するよう、Q_顧客を作成したのですが、F_メインメニュー内にある テキストボックスに文字列を入れ、F_メインメニューを開いたまま 直接、Q_顧客をマウスクリックにより実行すると、 確かに該当する値を含む住所をもつレコードのみがヒットします。 しかし、テキストボックスの横に配置した、コマンドボタンによる クエリの実行をすると、条件抽出されず、全件ヒットしてしまいます。 直接、Q_顧客をマウスによってクリック実行するとできるのに、 なぜコマンドボタンにコマンドボタンがクリックされたらQ_顧客を実行するよう ウィザードで作ると同じ動作にならないんでしょうか? コマンドボタンにはクリックされたらQ_顧客を実行するようにウィザードで 作成しています。 ご教授よろしくお願いします。 **以下作成状況** 「フォーム名」: F_メインメニュー ※このF_メインメニュー内に非連結のテキストボックスtext1を作成。 テキストボックスの横に検索ボタン(コマンドボタン)を作成し、 検索ボタンをクリックしたら、以下のQ_顧客を実行するよう、 コマンドボタンをウィザードで作成。 「テーブル名」: T_顧客 ※フィールドに「住所」あり。 「クエリ名」: Q_顧客 ※ ウィザードでT_顧客からクエリを作成(この時点では抽出条件設定なし) クエリの抽出条件で フィールド:住所 の抽出条件に以下を設定 Like "*" & [Forms]![F_メインメニュー]![text1].[Text] & "*"

  • Access 日付/時間型を検索するには?

    いつもお世話になっております。 色々と調べたのですが、データが思い通りにならなく困っております。 検索用フォームを作成し、番号と件名であいまい検索出来るようにしたのですが、年月日でも検索出来るように依頼されました。 自分なりに組んでみたのですが、検索機能が動いてくれませんでした。 年月日のデータ形式は「日付/時刻型」で、格納されているデータは「yyyy/mm/dd 00:00:00」となっています。 日付のみで検索すれば良いのですが、いくら検索しても、全データが抽出されてしまいます。 どこが悪いのかご指摘お願い致します。 ☆クエリ☆ ・Q処理検索 左から「処理番号」「件名」「年月日」となっており、 「処理番号」と「件名」の抽出条件(1行目)には 「Like"*"&[Forms]![F処理検索]![処理番号]&"*"」 「Like"*"&[Forms]![F処理検索]![件名]&"*"」と記述 「年月日」の抽出条件に 「Between[Forms]![F処理検索]![開始]and[Forms]![F処理検索]![終了]」を2行目に記述 「>=[Forms]![F処理検索]![開始]」を3行目に記述してあります。 ☆フォーム☆ ・F処理検索 年月日は2つテキストボックスを用意しています。 各々に「開始」と「終了」の名前をつけ、定型入力を「0000/00/00\ 00:00:00;0;_」としてあります。 検索実行ボタンをクリックし、詳細検索表示フォームを表示します。 ・詳細検索表示 「F詳細検索」の結果をフォームビューで表示させます。 ☆マクロ☆ フォームを開く ・フォーム名:詳細検索表示 ・フィルタ名:Q処理検索 以上、宜しくお願い致します。

  • ACCESS2000の複数検索条件からのデータ抽出

    こんにちわ。前回質問内容自体どう説明してよいかわからず、途中で終わってしまったので、再度、詳しく質問してみました。 今、Accessで受注管理を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:受注管理 フィールド名:受注ID・日付・商品種別・顧客名・仕入種別・状況種別 ■クエリ クエリ名:受注クエリ(フィルタ) フィールド名:受注ID(表示チェックあり)・日付・商品種別・顧客名・仕入種別・状況種別 と式1[Forms]![検索フォーム名]![日付text]・式2[Forms]![検索フォーム名]![商品種別combo]・式3[Forms]![検索フォーム名]![顧客名text]・式4[Forms]![検索フォーム名]![仕入種別list]・式5 [Forms]![検索フォーム名]![状況種別combo]の計11列です。 抽出条件:検索名フィールド: 受注IDを除く各フィールド名の下に Like "*" & [Forms]![検索フォーム]![日付text] & "*" Like [Forms]![ 検索フォーム名]![商品種別combo] Like "*" & [Forms]![ 検索フォーム名]![顧客名text] & "*" Like [Forms]![ 検索フォーム名]![仕入種別list] Like [Forms]![ 検索フォーム名]![状況種別combo] 各式の下に Like "" Like "(なし)"      Like "" Like "(なし)" Like "(なし)" を検索パターンに応じて入力しました。 マクロにより、フィルタの実行をしていますが、この方法だと4つまでなら、検索可能なのですが、5つ以上になると、「フィルタが長すぎます」というダイアログボックスがでて検索ができません。VBAやSQLはいまいちわからないので、何か簡単に、5つ以上の検索条件で検索できないでしょうか。お願いします。

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

  • Accessのテキストボックスとコンボボックスの違い

    フォームにテキストボックスを3ケ用意し、テキストボックス名をtxt1,txt2,txt3としました。これにコマンドスイッチを作成し、機能を再クエリと設定しました。 フォームのサブフォームに再クエリの結果を表示するようにしました。 クエリのテキストボックス1の抽出条件は 条件  [Forms]![フォーム名]![txt1] または [Forms]![フォーム名]![txt1] Is Null    [Forms]![フォーム名]![txt1] Is Null テキストボックス2の抽出条件は 条件  [Forms]![フォーム名]![txt2] Is Null または [Forms]![フォーム名]![txt2]  [Forms]![フォーム名]![txt2] Is Null テキストボックス3の抽出条件は 条件  [Forms]![フォーム名]![txt3] Is Null または [Forms]![フォーム名]![txt3] Is Null [Forms]![フォーム名]![txt3] と設定し、テキストボックスにデータを入力し実行すると 正しい結果が得られるのですが、テキストボックスをコンボボックスに変更し、コンボボックス名をtxt1,txt2,txt3 とすると、抽出されません。 コンボボックスをテキストボックスのように扱うのには どうするのでしょうか。教えてください。