##質問内容
管理システムでマスタのフォームがあるのですが、そのフォームで「*」や「"」で検索をかけれるようにしたいです。
##現状
マスタには、ヘッダーに検索欄として非連結テキストボックスがあり、詳細にサブフォームがあります。
検索欄に条件を入力し、フィルタをかけるようにしてあります。
ちなみに、
「*」は全てという意味で認識され、全レコードがフィルタにかかってしまします。
「"」は全角なら、文字として認識されますが、半角だとおそらくコードの方と混ざってしまい構文エラーになります。
VBA
1'顧客名 2If Nz(Me!Text_CustomerName, "") <> "" Then 3wFilter = wFilter & "and F_CustomerName like ""*" & Text_CustomerName & "*""" 4End If 5 6 With Me!Sub_CustomerMaster.Form 7 .Filter = wFilter 8 .FilterOn = True 9 End With
上記は、例で顧客名の検索条件です。
Like "[]*" のように加えてもみたのですが、うまく動作せずにいます。
わかる方いましたら、アドバイスの方お願いします。
##追記
VBA
1'顧客名 2 3Dim wName As String 4 5wName = Nz(Me!Text_CustomerName, "") 6 7If wName <> "" Then 8 9 wName = Replace(wName, "*", "[*]") 10 wName = Replace(wName, """", "[""]") 11 12 wFilter = wFilter & "and F_CustomerName like '*" & wName & "*'" 13 14End If 15 16 With Me!Sub_CustomerMaster.Form 17 .Filter = wFilter 18 .FilterOn = True 19 End With
##追加質問
シングルクォーテーションでの入力でも、文字列認識させたく同じように下記のコードを書いてみたのですがシングルクォーテーションだけうまく行かないので、わかる方いましたらお願いします。
VBA
1 '住所 2 3 Dim wAddress As String 4 5 wAddress = Nz(Me!Text_Address, "") 6 7 If wAddress <> "" Then 8 9 wAddress = Replace(wAddress, "*", "[*]") 10 11 wAddress = Replace(wAddress, "'", "[']") 12 13 wFilter = wFilter & "and F_Address like '*" & [wAddress] & "*'" 14 15 End If
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/23 02:13 編集
退会済みユーザー
2019/07/23 04:22
2019/07/23 04:52
退会済みユーザー
2019/07/23 04:59
2019/07/23 05:19
退会済みユーザー
2019/07/23 06:09
2019/07/23 11:26
退会済みユーザー
2019/07/25 02:03