Accessで任意の文字を含むレコードを検索する方法

このQ&Aのポイント
  • Accessにおいて、特定のコントロールソースではなくすべてのコントロールソースから任意の文字を含むレコードを検索する方法を知りたいです。
  • 非連結のテキストボックスにキーワードを入力し、コマンドボタンをクリックすることで、検索対象のレコードを表示させたいです。
  • Filterを使用する方法は分かっているが、特定のコントロールソースではなく全てのコントロールソースから検索する方法が分かりません。どなたか教えてください。
回答を見る
  • ベストアンサー

Access 任意の文字を含むレコードを検索したい

すべてのレコードを表示する帳票形式のフォームのヘッダーに、非連結のテキストボックスにキーワードを入力して検索するコマンドボタンを設定し、検索対象のレコードを表示させたいと思っています。 特定のコントロールソースでの検索はできたのですが、すべてのコントロールソースの中から検索する方法がわかりません。 ご存じの方がいらっしゃったらお教えください。 【特定のコントロールソースでの検索でやったこと】 非連結のテキストボックスを作り、コマンドボタンのイベントプロシージャで次のように記述しました。 Private Sub cmd_検索_Click() Me.Filter = "[非連結のテキストボックスの名前] Like " & " '*" & Me.特定のコントロースソースの名前 & "*'" Me.FilterOn = True End Sub Filterを使った上記の方法は、Accessの本を参考にしました。 本では特定のコントロースソースについての検索だったので、そのまま使わせてもらったのですが、Visual Basicを勉強していないのでそれ以上のことは私には難しいです。この程度の私ですが、できる方法があれば教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • 6657
  • ベストアンサー率63% (7/11)
回答No.1

やり方はいろいろあると思いますが、すべてのコントロールソースの中から検索するには、クエリーで全てのフィールドを連結させたフィールドを作りフォームに配置し検索すれば可能と思います。フィールド名:[フィールド1] & [フィールド2] & [フィールド3] のように連結させます。 

nikome
質問者

お礼

おかげさまで無事設定ができました。 便利な機能ができて効率アップできそうです。 コントロールソースの結合とは目からうろこで、もっと勉強しようと思いました。 このたびはお世話になり、ありがとうございました。 大変感謝しております。

nikome
質問者

補足

> 6657さん ありがとうございました。 コントロールソースを連結して一つのコンとロースソースにしてしまうやり方はシンプルで私にもできそうです。 今日、会社で早速やってみたのですがうまくいきませんでした。 まず、私が最初に質問で書いたイベントプロシージャの記述に誤りがありました。テキストボックスの名前とコントロールソースの名前が逆でした。実際は下のように書いてあります。 Private Sub cmd_検索_Click() Me.Filter = "[特定のコントロースソースの名前] Like " & " '*" & Me.非連結のテキストボックスの名前 & "*'" Me.FilterOn = True End Sub 会社へは、データの持ち込みが禁止されているので紙にメモしていったのですが、そもそもここが間違っていたのでパラメータの入力を促され、検索結果もうまく表示されませんでした。 本来の業務に、こういう機能があれば仕事が楽になるかと思って自分でやってみていることなので就業前の時間にやっています。業務として指示されたことではないので、自分の時間で自分のできることでやってみようと思っているので、なかなか難しいです。 クエリで連結したコントロールソースを作成することはできました。「キーワード」と名前を付けました。 Private Sub cmd_検索_Click() Me.Filter = "[キーワード] Like " & " '*" & Me.非連結のテキストボックスの名前 & "*'" Me.FilterOn = True End Sub とすればうまくいくのではないかと思います。 また来週、月曜日に会社に行ってやってみます。 うまくできたらお礼を投稿して締め切ろうと思います。 ご回答、大変ありがとうございます。感謝いたします。

その他の回答 (1)

  • 6657
  • ベストアンサー率63% (7/11)
回答No.2

コントロールソース「キーワード」のプロパティーを開き、書式の可視を いいえ にするとフォームビューで見えなくなります。頑張ってやってみてください。

nikome
質問者

お礼

ありがとうございます。 「キーワード」は見えなくていいですものね。 フォームがすっきりしました。

関連するQ&A

  • accessで、フォームの検索をしたいのです。

    今ACCESSで、データ管理をしているのですが、どうしてもうまくいかなくて、困っています。 毎日の出来事を記述するテーブル用のフォームを作って、記述していて、そのデータがたまってきています。 他のフォームに、検索用のテキストボックスとコマンドボックスを作って検索したいのです。 コントロールウィザードを使うと、完全一致のデータしかでてこないのですが、部分一致のレコードを表示させるにはどうすればいいのですか? 教えていただけるとうれしいです。 コントロールウィザードを使うと以下のようになります。多分少しどこかを変えるといいのではないかと思うのです。どうか、よろしくお願いします。 Private Sub コマンド144_Click() On Error GoTo Err_コマンド144_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21839) & ChrW(12356) & ChrW(21512) & ChrW(12431) & ChrW(12379) & ChrW(12513) & ChrW(12514) stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド144_Click: Exit Sub Err_コマンド144_Click: MsgBox Err.Description Resume Exit_コマンド144_Click End Sub もしかして。。と思い、以下の部分、 stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" を次のように変えてみたけれど、やっぱりうまくいきませんでした。 stLinkCriteria = "[内容]=" & "'" & "*" & Me![テキスト105] & "*" & "'" よろしくお願いします。

  • Accessの検索フォーム

    またまたAccessについての質問です。 検索フォームというのを作りました。 テーブルのデータから条件に合うものだけを抽出したいのです。 たとえば1つ目の検索フォーム[A]のテキストボックスに「AAA」を入力します。 そのあとBには「BBB」と入力します。 同じくCには「CCC」と入力します。 そして絞込みボタンを押したらAAAでBBBでCCCのものが抽出されます。 これはうまくいきました。 とりあえず、複数条件なので、わけもわからず「&」で結んでしまいました・・・。 ↓は絞込みボタンのクリック時です。↓ 困ったのは、すべて検索条件を指定しない場合です。 たとえば「AAA」で「CCC」のものを抽出したいとき、[A]のテキストボックスに「AAA」と入れ [C]のテキストボックスに「CCC」と入れます。 そして絞込みボタンをクリック。 するとBが未記入だからか、抽出されたのは真っ白でした・・・。 Option Compare Database Private Sub コマンド50_Click() Me.Filter = "契約='" & Me!テキスト51 & "'and A='" & Me!テキスト57 & "'" Me.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」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、 「データ」フォームが開き、検索をかけるという流れをイメージして作成 しています。 どなたか正しい記述を教えていただけませんでしょうか。 よろしくお願いいたします。

  • アクセスについてです(レポート)

    フォームからレポートを開く時に、 VBAでコントロールにコントロールソースを指定したいのですが どうやらエラーになってしまうようです。 フォームからではなく手動でレポートを開く場合は エラーにはなりません。 レポートのレコードソースは、T_testを指定していて、 その上にあるコントロールは非連結で指定したコントロールソースをvbaで入れたいです。 なので、レポートのLoadイベントで Private Sub Report_Load() Me.テキスト0.ControlSource = "8月" End Sub として、手動でレポートを開く分には問題ないのですが このコードのまま、フォームから Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1", acViewPreview End Sub とすると、Me.テキスト0.ControlSource = "8月"で、 実行時エラー2191 印刷プレビュー時または印刷を開始した後は コントロールソースプロパティを設定できません。 のエラーが発生します。 フォームから Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1", acViewDesign End Sub とすると、レポートのLoadイベントが発生しませんでした。 ご回答よろしくお願いします。

  • Accessでシステムを作ってます

    AccessとVBAでシステムを作成してます。初心者です。 検索結果を非連結のテキストボックスに表示させる方法を教えてください。 条件(1) フォームのレコードはどのテーブルとも紐づいていない 条件(2) 2つのテーブルから1つの検索ボタンで検索できるようにしたい テーブルA;案件マスタ テーブルB:リソースマスタ ・検索テキストボックス(1つ) ・検索ボタン(1つ) 条件(3) 案件ID、リソースIDはともに数値型です。 検索結果表示テキストボックス(非連結) ・案件IDテキストボックス:案件マスタより検索した案件IDを表示する ・リソースIDテキストボックス:リソースマスタより検索したリソースIDを表示する 下記のように考えていますが ・非連結のテキストボックスに検索結果を表示させる ・1つの検索ボタンで2つのテーブルから検索ができるようにする 方法がわかりません。 どのようなコードを追記したらいいのか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub btn検索ID_Click() Dim strFilter As String Me![案件マスタ].SetFocus If Me!案件IDテキスト = Me![案件マスタ]![案件ID] Then strFilter = " AND 案件ID= " & Me!案件IDテキスト End If If Me!テキストリソースID = Me![リソースマスタ]![リソースID] Then strFilter = strFilter & " AND リソースID= " & Me!リソースIDテキスト End If 'Forms!ID検索.Filter = Mid(strFilter, 6) Forms!ID検索.FilterOn = True Me.案件IDテキストボックス= Null Me.リソースIDテキストボックス = Null

  • accessの検索フォームについて(複数条件)

    access初心者です。 本などを参考に検索フォームを作成しました。 1つの条件で検索することは出来たのですが、複数の条件を入力するとうまく検索出来ません。 全ての条件を満たすデータの抽出を行いたいと思います。 「あ」「い」「う」というテキストボックスを用意しています。 Private Sub コマンド14_Click() If Not IsNull(Me.txt_あ) Then ' Me.Filter = "あ LIKE '*" & Me!txt_あ & "*'" End If If Not IsNull(Me.txt_い) Then ' Me.Filter = "い LIKE '*" & Me!txt_い & "*'" End If If Not IsNull(Me.txt_う) Then ' Me.Filter = "う LIKE '*" & Me!txt_う & "*'" End If Me.FilterOn = True End Sub よろしくお願いします。

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

  • アクセスのフォーム上のテキストボックスについて

    アクセスのフォーム上のテキストボックスについて フォーム上のテキストボックスに直接数字を入力しようとしています。ただ、このテキストボックスのコントロールソースはフォームのレコードソースと違うものです。 この状況でテキストボックスに数値を直接入力しようとすると、『コントロールソースに連結しているので、編集できません。』と表示され、入力出来ません。 どうすれば、解決できるのかご存知の方、教えて下さい。宜しくお願いします。

  • Access2016 抽出したレコード

    こんにちは、よろしくお願いします。 フォームのヘッダーに以下のような検索システムを作りました。 Private Sub Cmd_抽出_Click()    Dim strSagasu As String    strSagasu = Me![Txt_抽出]    Me.Filter = "物件名 Like '*" & strSagasu & "*'"    Me.FilterOn = True   End Sub そうしました所、立派に検索できたのですが 元のすべてのレコードがある画面に戻す方法がわからず・・・ どなたか詳しい方、どうかお教えください。 よろしくお願い致します。

  • アクセスのOR検索

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

専門家に質問してみよう