##質問内容
商品マスタのヘッダーに非連結テキストボックスを設置し、そこに入力した商品番号や商品名でサブフォームの内容を検索ができるようにしているのですが、単価を検索するとき
〇〇〇〇~〇〇〇〇 のように範囲検索したいです。
ちなみに、片方だけ入力してある状態検索をかけるとそれ以上やそれ以下のようにはできています。
##現状
VBA
1 If Me!Text_ProductCode = "" And Me!Text_ProductName = "" And Me!Text_Cost = "" And Me!Text_Cost2 = "" Then 2 Exit Sub 3 Else 4 5 'フィルタをかける 6 7 Me!Sub_ProductMaster.Form.Filter = "F_DeleteFlag = False " 8 9 '商品コード 10 If Nz(Me!Text_ProductCode, "") = "" Then 11 Else 12 Me!Sub_ProductMaster.Form.Filter = Me!Sub_ProductMaster.Form.Filter + "and F_ProductCode like ""*" & Text_ProductCode & "*""" 13 End If 14 15 '商品名 16 If Nz(Me!Text_ProductName, "") = "" Then 17 Else 18 Me!Sub_ProductMaster.Form.Filter = Me!Sub_ProductMaster.Form.Filter + "and F_ProductName like ""*" & Text_ProductName & "*""" 19 End If 20 21 '単価最小 22 If Nz(Me!Text_Cost, "") = "" And Not Nz(Me!Text_Cost2, "") = "" Then 23 Else 24 Me!Sub_ProductMaster.Form.Filter = Me!Sub_ProductMaster.Form.Filter + "and F_Cost >= Text_Cost" 25 End If 26 27 '単価最大 28 If Nz(Me!Text_Cost2, "") = "" And Not Nz(Me!Text_Cost, "") = "" Then 29 Else 30 Me!Sub_ProductMaster.Form.Filter = Me!Sub_ProductMaster.Form.Filter + "and F_Cost <= Text_Cost2" 31 End If 32 33 34 Me!Sub_ProductMaster.Form.FilterOn = True
※Text_Cost:単価最小値
Text_Cost2:単価最大値
よろしくお願いします
##追記
↓sazi さんの助言のもと
VBA
1Private Sub Button_Search_Click() 2 3 '検索欄が空のときフィルタをかけない 4 5 If Me!Text_ProductCode = "" And Me!Text_ProductName = "" And Me!Text_Cost = "" And Me!Text_Cost2 = "" Then 6 Exit Sub 7 Else 8 9 'フィルタをかける 10 11 wFilter = "F_DeleteFlag = False " 12 13 '商品コード 14 If Nz(Me!Text_ProductCode, "") <> "" Then 15 wFilter = wFilter & " and F_ProductCode like ""*" & Text_ProductCode & "*""" 16 Else 17 End If 18 19 '商品名 20 If Nz(Me!Text_ProductName, "") <> "" Then 21 wFilter = wFilter & " and F_ProductName like ""*" & Text_ProductName & "*""" 22 Else 23 End If 24 25 '単価 26 If Nz(Me!Text_Cost, "") <> "" And Nz(Me!Text_Cost2, "") <> "" Then 27 wFilter = wFilter & " and F_Cost <= Text_Cost2 " & " and F_Cost >= Text_Cost" 28 ElseIf Nz(Me!Text_Cost, "") = "" Then 29 wFilter = wFilter & " and F_Cost <= Text_Cost2" 30 ElseIf Nz(Me!Text_Cost2, "") = "" Then 31 wFilter = wFilter & " and F_Cost >= Text_Cost" 32 End If 33 34 With Me!Sub_ProductMaster.Form 35 .Filter = wFilter 36 .FilterOn = True 37 End With 38 39 '件数更新 40 41 TOTAL = DCount("F_ProductCode", "T_Product", Me!Sub_ProductMaster.Form.Filter) 42 43 Me.Text_Num = TOTAL + "件" 44 End If 45 46End Sub
↓hatena19 さん助言のもと
VBA
1Private Sub Button_Search_Click() 2 3 '検索欄が空のときフィルタをかけない 4 5 If Me!Text_ProductCode = "" And Me!Text_ProductName = "" And Me!Text_Cost = "" And Me!Text_Cost2 = "" Then 6 Exit Sub 7 Else 8 9 'フィルタをかける 10 11 wFilter = "F_DeleteFlag = False " 12 13 '商品コード 14 If Nz(Me!Text_ProductCode, "") = "" Then 15 Else 16 wFilter = wFilter + "and F_ProductCode like ""*" & Text_ProductCode & "*""" 17 End If 18 19 '商品名 20 If Nz(Me!Text_ProductName, "") = "" Then 21 Else 22 wFilter = wFilter + "and F_ProductName like ""*" & Text_ProductName & "*""" 23 End If 24 25 '単価 26 If Nz(Me!Text_Cost, "") <> "" Then 27 wFliter = wFilter & "and F_Cost >= " & Me.Text_Cost 28 End If 29 30 If Nz(Me!Text_Cost2, "") = "" Then 31 wFilter = wFilter & "and F_Cost <= " & Me.Text_Cost2 32 End If 33 34 With Me!Sub_ProductMaster.Form 35 .Filter = wFilter 36 .FilterOn = True 37 End With 38 39 '件数更新 40 41 TOTAL = DCount("F_ProductCode", "T_Product", Me!Sub_ProductMaster.Form.Filter) 42 43 Me.Text_Num = TOTAL + "件" 44 End If 45 46End Sub
※wFilter はグローバル変数です(String)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/02 07:09
2019/07/02 07:19
退会済みユーザー
2019/07/02 07:29
退会済みユーザー
2019/07/02 07:48
2019/07/02 10:11 編集
退会済みユーザー
2019/07/03 00:18
2019/07/03 00:23
退会済みユーザー
2019/07/03 01:45
2019/07/03 02:18
退会済みユーザー
2019/07/03 05:20