Access 2003で検索条件と検索キーワード検索

このQ&Aのポイント
  • Access 2003で検索条件と検索キーワードを使用してデータを抽出する方法について説明します。
  • フィルタの条件式を変更することで、特定のフィールドを検索することができます。
  • VBAコードを使用してフィルタを設定する際に、テキスト名をコンボに変更した場合にエラーが発生する可能性があります。
回答を見る
  • ベストアンサー

アクセス2003で検索条件と検索キーワード検索

アクセス2003で検索機能を作りたいです。 まずプルダウンで検索条件を選び、さらに検索キーワードを手入力し、その条件に見合ったものを抽出するという形。 検索条件とは、フィールド名。検索キーワードは、フィールドの中にある言葉。 質問 (1)マクロのフィルタの実行のwhere条件式において 〔フィールド名〕like~と入れているのですが、この頭のフィールド名をいじくれば良いのか? (2)ある識者に伺ったところ、次のVBA(イベントビルダ)を教わりましたが、オブジェクトに値を代入できませんと出てきました。 Me.filter=""&Me.![テキスト名1]&"like'"&"*"&Me![テキスト名2]&"*"&"'" Me.filterOn=True このテキスト名1をコンボに変更しました(非連結)。検索条件となるあるテーブルを値ソースとしています。何か自分が間違っていますか? できれば、クエリを使うことなく行きたい。 アクセスのつくりとしては、 基幹となるテーブルAとそれに1対多にあるテーブルBそしてテーブルBと1対1にあるテーブルCの3つをクエリを用いて1つのフォームに表しています。 その中のいくつかのフィールドを選択条件とし(プルダウンで選ぶ)、キーワード入力する。 小職、アクセスを始めたばかりです。どうかよろしくお願いいたします

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

filterが失敗するのは、Like とコーテーションとの間に必要な前後の半角スペースが無いから。 " like '"が正しい 「クエリ」とかまえるからハードルが高くなるだけ。 「まとめ」を作ると思えば簡単ですよ

anthlax
質問者

お礼

早速の回答ありがとうございます。 うまくいきました。 「まとめ」を作ると思えば・・・とは、どういう意味ですか?

関連するQ&A

  • アクセス2003の質問5種

    アクセス2003の作りこみで悩んでいます。ほぼ初心者です。 (1)bin-chanさんの「まとめ~」とはどういう意味でしょうか? (2)検索キーワードを入力し、そのキーワードでテーブル内の全フィールドから検索する方法はありますか?VBA マクロどちらでも構いません。クエリを使わない方法でお願いします。 (3)AND検索で、検索キーワード欄に空欄があっても検索を実行する方法はありますか? 当方、検索条件をプルダウンから選び、検索キーワードを入力し、検索しています。 その際のイベントビルダは、 Me.Filter="" & Me![コンボ53] & " like '" & "*" Me![検索ワード] &"*"&"' and "& Me![コンボ57]~ です。 とすると、オブジェクトに値を代入出来ませんやらが出てきます。どうしたらよいでしょうか? 出来れば、VBAで行いたい。 (4)マクロのフィルタ実行で、where条件式を次のようにすれば、空欄があってもOKなんですが、 その際に検索条件をプルダウンで選ぶにはどうすればよいのか教えてください。 [フィールド名] Like "*" &[Forms]![フォーム名]![検索ワード] & "*" And [フィールド名] Like "*" &[Forms]![フォーム名]![検索ワード2] & "*" (5)またこのフィルタの実行マクロを使っての全フィールドからの検索をする場合にはどうしたら良いでしょうか? アクセスの構造としては、 基幹となるテーブルAと一対多にあるテーブルB、そしてテーブルBと一対一にあるテーブルCの3つをクエリでまとめ、フォームを作っています。 (1)~(5)全部が揃っての回答でなくても構いません。 どうかよろしくお願いいたします。

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

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

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

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

  • 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 のような感じにしたいです。 ご回答よろしくお願いします。

  • 【Access】複数フィールドを対象とする検索

    Access上で「検索ボタン」をクリックすると、 「データ」フォームのフィールド1、フィールド2、フィールド3のいずれかに「検索条件1」の語を含み、かつ、フィールド4、フィールド5、フィールド6のいずれかに「検索条件2」の語を含むレコードを抽出できるようにしたいと思います。 検索条件はテキストボックスに入力するようにしており、テキストボックス名は「検索条件1」、「検索条件2」となっています。 以下のコードでやってみたのですが、「実行時エラー13、型が一致しません」というエラーが出てうまく抽出できません。 Private Sub 検索ボタン_Click() Dim filter1 As String filter1 = "フィールド1 like '*" & Me!検索条件1 & "*' or フィールド2 like '*" & Me!検索条件1 & "*' orフィールド3 like '*" & Me!検索条件1 & "*'" And " フィールド4 like '*" & Me!検索条件2 & "*' or フィールド5 like '*" & Me!検索条件2 & "*' orフィールド6 like '*" & Me!検索条件2 & "*'" DoCmd.OpenForm "データ", acNormal Forms!データ!.filter = filter1 Forms!データ!.FilterOn = True End Sub 「検索条件1,2」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、 「データ」フォームが開き、検索をかけるという流れをイメージして作成 しています。 どなたか正しい記述を教えていただけませんでしょうか。 よろしくお願いいたします。

  • アクセス2003 検索で空欄入力をOKにするには

    アクセス2003での作り込みの段階で悩んでします。ほぼ初心者です。 当方、検索条件をプルダウンで選び、検索キーワードを入力し、データを抽出するプログラムを作りました。またこの検索条件&キーワードは2つあり、絞込検索ができるようになっています。 その際のVBAは、以下の通りです。 Me.Filter=""&Me![検索条件1(コンボ1)]&"like'"&"*"&Me![検索キーワード1(テキスト1)]&"*"&"'and"&Me![検索条件2(コンボ2)]~ 質問 (1)検索条件1や検索キーワード1が空欄であった場合、エラーのポップアップが出るようにするには? →今のところ、検索条件2と検索キーワード2が空欄でも抽出はできるのです。 ただし、検索条件2と検索キーワード2のみに入力すると、エラー「演算子がありません」が出る。 (2)本当なら、どちらかでも空欄になってもエラーが出ないようにしたい。 それに対し、bin-chanさんが回答してくださったVBA(2013/10/26 22:09)ですと、まず  列って何を指すのか?  列をテキストにしてみるとエラーが出てしまう。 のです。 (3)本当なら、検索条件なんか選ばず、検索キーワードを2つくらい入力して抽出したい。すなわち、検索するフィールドをテーブルの全フィールを対象とする場合、これまたbin-chanさんが回答してくださった(同上の日時)ユニオンクエリを使ったら、エラー「ユニオンクエリが定義できません」と・・・。どうすればよいでしょうか? 決してbin-chanさんをやり玉にするのではなく、私のやり方が何か間違っていると思いますし、一旦質問内容を整理したく、新たに質問しました。 (4)これはアクセスとは関係ない質問です。goo教えてで行った質問が、やってもいないのに、Okwaveなるものに同じ質問がありました。これはどうしてなんでしょうか? 以上、よろしくお願いいたします。

  • Access 別テーブルにある値を抽出条件にしたい

    OS:WindowsXP SP3 使用ソフト: Microsoft Access2003 選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか? ホームページに来て頂いた方の検索キーワードを集計しております。 テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件) テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件) クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、 抽出条件をどのように指定したらいいのか分かりません。 そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。 SQLを用いる方法でも構いませんので教えてください。

  • アクセスのOR検索

    アクセスの初心者です。テキストボックスに入力した語句をテーブルより検索するコードをサンプルコードからまねて作りました。   Me.Filter = "[件名]Like'" & "*" & Me![テキスト28] & "*'"   Me.FilterOn = True さらにテキストボックスを2つほど増やし、3つからOR検索出来るようにしたいんですが、、、(コードの意味もよくわかっていません。) コードを書いていただくとありがたいのですが。 よろしくお願いします。

  • ACCESSの複数フィールドの検索

    私がしたい事はおそらくかなり初歩的なことと類推されますので、がっくりされないようにお願いします。 「報告書」のテーブルがあります。 その報告書のフィールドは 報告日 報告者氏名 A店の感想 B店の感想 C店の感想 となっていると考えてください。 このテーブルをもとに、表形式で一覧の出るフォームを作っており、この一覧のフォームフッターにテキストボックスがあります。 このテキストボックスに例えば「D商品」と入力してエンターを押すと「A店の感想 B店の感想 C店の感想」中に「D商品」が出てくるレコードすべてが抽出されるというようにしたいと思っています。 1つのフィールドでのやり方がとあるサイトにあったので、私は Private Sub テキスト28_AfterUpdate() Me.Filter = "A店の感想 like'*" & Me!テキスト28 & "*'" Me.FilterOn = True End Sub という式を作成しました。 これだと「A店の感想」フィールドにキーワードがあればヒットしますが、B店、C店にキーワードがあってもA店にキーワードが無ければ反応はありません。 これを3つのフィールドで出来るようにいくつか試してみましたがどれも失敗でした。 どのようにすれば、複数フィールドのキーワード検索・抽出が出来るのでしょうか。 私の取ったやり方に近いもの、別の全然違うやり方、ともに勉強になるので色々教えてください。 それと、これでも結構検索したのですが、検索ワードが不適切なのか、ありそうなニーズにも関わらずぴったりくるものを見つけられませんでした。 もしよければACCESSをわかりやすく学習出来るサイトを教えてください。有名そうなところをいくつかは知っております。

  • ACCESSでのクエリ抽出条件について

    ACCESS超初心者です。 自分なりに調べたのですが、知識不足によりお手上げ状態です。 クエリの抽出条件について、どなたかご教授いただけますでしょうか? OS:XP ACCESS:2000 ・フォーム上に自由に入力できるテキストを3つ用意します。 ・入力された3つのテキストが1つのフィールドに含まれるものをクエリで抽出したい。 ・3つのテキストが空欄の場合は全てのデータを抽出したい。 ■フォーム上のテキスト  テキスト1:テキスト10  テキスト2:テスト11  テキスト3:テスト12 ■テーブル  フィールド1:問合せ内容(1) ■クエリ内の抽出条件 Like "*" & [Forms]![F_検索テスト]![テキスト10] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト11] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト12] & "*" テキスト名がおかしいのですが、ご了承下さい。

専門家に質問してみよう