• 締切済み

VBAでのj検索

Access2000のVBAで18つのチェックボタンでフィールドを選択し、1つのテキストボックスに文字列を入力して検索ボタンで検索するプログラムを以下のような記述の仕方で作成しました。 Private Sub 条件検索_Click() Dim stFilter As String Dim stDocName As String If 特定検索 = 1 Then stDocName = "メイン" stFilter = "フィールド名1='" & テキストボックス名 & "'" DoCmd.OpenForm stDocName, , , stFilter ElseIf 特定検索 = 2 Then stDocName = "メイン" stFilter = "フィールド名2='" & テキストボックス名 & "'" DoCmd.OpenForm stDocName, , , stFilter ・ ・ 上記のような記述で上手くいかないので、部分一致で検索 出来る方法を教えていただけませんでしょうか。 よろしくお願い致します。

  • picca
  • お礼率5% (5/90)

みんなの回答

回答No.1

試していないんで間違っていたらすみません。 stFilter = "フィールド名1='" & テキストボックス名 & "'" の部分を stFilter = "フィールド名1='*" & テキストボックス名 & "*'" というようにテキストボックスの文字列の前後に『*』(アスタリスク)をつけるようにしてはどうでしょう?

関連するQ&A

  • 部分一致での検索方法

    Access2000のVBAで3つのオプションボタンでフィールドを選択し、1つのテキストボックス(オプションテキスト)に文字列を入力して検索ボタンで検索するプログラムを以下のような記述の仕方で作成しました。 完全一致した場合は問題なく表示されるのですが、できればテキストボックスに入力した文字列が部分一致した場合でも表示させるようにしたいのですが、どうすればよいかがわからないので教えてください。 Private Sub オプション検索_Click() Dim stFilter As String Dim stDocName As String If 特定検索 = 1 Then stDocName = "フォーム名"   stFilter = "フィールド名1='" & テキストボックス名 & "'" DoCmd.OpenForm stDocName, , , ElseIf 特定検索 = 2 Then stDocName = "フォーム名" stFilter = "フィールド名2='" & テキストボックス名 & "'" DoCmd.OpenForm stDocName, , , stFilter ElseIf 特定検索 = 3 Then stDocName = "IPForm" stFilter = "フィールド名3='" & テキストボックス名 & "'" DoCmd.OpenForm stDocName, , , stFilterOn End If End Sub

  • ウイザードからのVBAでクエリー名をコードでなく文字にするには

    マシンによっては、以下の2の形式でウイザードを使ったVBAで表示されるのですが 1の形のマシンがありどこの設定をすればよいか教えてください ACCESSXPです。 1.コードになっている Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(-30163) & ChrW(23450) & ChrW(12501) & ChrW(12457) & ChrW(12540) & ChrW(12512) DoCmd.OpenForm stDocName, , , stLinkCriteria 2、日本字になっている Dim stDocName As String Dim stLinkCriteria As String stDocName = "設定フォーム" DoCmd.OpenForm stDocName, , , stLinkCriteria よろしくお願いします

  • access レコードソースを選択し、DoCmd.OpenFormする方法

    Select Caseのフレームで、レコードソース(クエリ)を選択し、 そのソースを基にDoCmd.OpenFormする方法がわかりません。 よろしくお願いします。 ---------------------------------------------------- Dim strSource As String Dim Q1, Q2 As String Dim stDocName As String Dim フォーム1 As Form stDocName = "フォーム1" Q1 = "クエリ1" Q2 = "クエリ2" Select Case フレーム1 Case 1 strSource = Q1 Case 2 strSource = Q2 End Select 'stDocName.RecordSource = strSource '-----この文はこの位置でよいのでしょうか? DoCmd.OpenForm stDocName, acFormDS ---------------------------------------------------- クエリ1,クエリ2は基になるテーブルが違いますが、フィールドは同一にしてあります。 ですのでフォーム1には、対応するテキストボックスは用意してあります。

  • 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] & "*" & "'" よろしくお願いします。

  • access2000のVBAのことで教えてください。

    プログラム初心者でプログラム作った方がいきなり辞めてしまって困ってます。 市販の本とか見ても解りませんし、質問の仕方も良くわかりませんが 教えてください。 マクロの項目には何も無くマウスクリック時のイベントプロシージャでボタンを作ってるようです。 下記のプログラムですがクエリどこの命令文なるのですか? Private Sub 顧客名検索_Click() On Error GoTo Err_顧客名検索_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = \"F_顧客名検索\" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_顧客名検索_Click: Exit Sub Err_顧客名検索_Click: MsgBox Err.Description Resume Exit_顧客名検索_Click End Sub

  • Access VBAでのフィルタ処理

    アクセス2003を使用しています。 今VBAを使用して、フォームのテキストボックスに記入された文字列を検索条件に、 クエリからデータ抽出したいのですが、 うまくいきません。 解決したい事は、 「abc*」といったように、前方が一致している文字列データを すべて抽出するといった処理です。 今は下記のようなプログラムを組んでいます。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "クエリ1" DoCmd.OpenQuery stDocName, acNormal, acEdit If IsNull(テキストボックス) Then Else stLinkCriteria = "[クエリデータ]=" & "'" & Me![テキストボックス] & "'" End If DoCmd.ApplyFilter stDocName, stLinkCriteria Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub これだと完全に一致しなければ抽出してくれません。 どの様に変更すればよいでしょうか? よろしくお願いします。

  • テキストボックスから一致したデータを抽出したい。

    初心者です。Access2003で、 (1)テーブルで「氏名」、「住所」のデータを作成。 (2)フォームでテキストボックス(txt_入力)とコマンドボタンを作成。 (3)押下時で開くようなフォームを作成(F_データリスト) テキストボックス(txt_入力)に氏名を入力し、テーブルと一致したものだけを抽出したい。 以下のように記述するとコマンド45押下でパラメータの入力画面がでてしまします。助けてください。 Private Sub コマンド45_Click() On Error GoTo Err_コマンド45_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F_データリスト" stLinkCriteria = "[氏名]=" & " Me![txt_入力]" DoCmd.OpenForm stDocName, , , stLinkCriteria 以下省略。

  • Access フォームで検索した結果をフォームで表示するときにあいまい検索をしたい

    Access2003を使用して、検索フォームをつくり、検索結果を別フォームへ表示させるプログラムを組みました。 その際に、かな検索をするとかなが完全一致でないと検索されません。 あいまい検索にてかな検索をする方法はありませんでしょうか? ソースは以下の通りです。 Private Sub cmdSearch_Click() On Error GoTo Err_cmdSearch_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(70) & ChrW(95) stLinkCriteria = "[カナ氏名]=" & "'" & Me![カナ氏名] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmdSearch_Click: Exit Sub Err_cmdSearch_Click: MsgBox Err.Description Resume Exit_cmdSearch_Click End Sub

  • サブ画面(参照のみ)を表示しつつ、メインのフォームの操作をしたい

    Private Sub cmd14検索_Click() On Error GoTo Err_cmd14検索_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "F社員データ" stLinkCriteria = "[所属名称2]=" & "'" & Me![所属名称] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_cmd14検索_Click: Exit Sub Err_cmd14検索_Click: MsgBox Err.Description Resume Exit_cmd14検索_Click End Sub という操作でメイン画面(フォーム)を開きます。 そして、これと同時に、サブ画面(参照のみ)としてもうひとつ画面を表示だけさせておきたいのですが、何かよい方法はありませんか? ちなみに、このコードは、自分が書いたものではなく、ツールボックスのコントロールウィザードで作成したものです。 なので、コードは正直書けません。 が、なんとかよい方法があれば教えてください。 宜しくお願い致します。

  • ACCESS フォームの値がすぐに表示されない

    フォームの値がすぐに表示されない。 宜しくお願い致します。皆様の知恵をお貸しください。 WinXPでACCESS2000を使っております。 テーブル_在庫には 取引先|商品名|買取金額|売上金額|日付のフィールドがあり A社|みかん|0|10000|2012/11/13 A社|りんご|10000|0|2012/11/13 B社|ぶどう|5000|0|2012/11/13 C社|かき|0|3000|2012/11/13 というレコードがあります。 フォーム_取引先のコンボボックスで、A社を選びコマンドボタンで、 クエリ_取引先買取、クエリ_取引先売上 を実行して、A社だけの取引を抽出し、その結果を フォーム_取引先買取とフォーム_取引先売上 に、表形式で表示させています。 このままでは、フォームが2つになるので、新たに基になるテーブルも クエリも持たない、フォーム_売買を作りました。 このフォーム_売買にテキストボックスを6つ作り次のようにしました。 テキストボックス|コントロールソース ---------------------------------------- テキスト1(取引先)|=Forms![取引先]![コンボ1] テキスト2(買取金額)|=Forms![買取]![テキスト1] テキスト3(売上金額)|=Forms![売上]![テキスト1] テキスト4(買取報償料)|非連結 テキスト5(売上報償料)|非連結 テキスト6(合計金額)|=[テキスト2]+[テキスト4]-[テキスト3]-[テキスト5] ここで、問題になっているのが、フォーム_売買を表示させた時に、テキスト1は 普通にA社と表示されているのですが、テキスト2とテキスト3に金額が表示され ません。 しかし、テキスト4もしくはテキスト5に金額を入力すると、表示されるようになり ます。 テキスト4とテキスト5のどちらかには必ず金額を入力するので、このままでも とりあえずは計算出来ているのですが、できれば、フォームが表示された時に 初めからテキスト2とテキスト3には金額が入っていたほうがいいと思い、あれ これ試してみたのですが、出来ませんでした。 フォーム_取引先のコマンドボタンは次のように実行しています。 Dim stDocName As String Dim stDocName1 As String stDocName = "取引先売上" DoCmd.OpenQuery stDocName, acNormal, acEdit stDocName1 = "取引先買取" DoCmd.OpenQuery stDocName1, acNormal, acEdit DoCmd.OpenForm stDocName, acNormal DoCmd.OpenForm stDocName1, acNormal DoCmd.OpenForm "売買", acNormal どうすれば、フォーム_売買が表示された時に、テキスト2とテキスト3に金額が 入っているようになるのでしょうか。 素人が見よう見まねで作っておりますので、おかしい点が多々あるかと思い ますが、ご教授のほど、よろしくお願い致します。