Microsoft Access 掲示板

複数のサブフォームを同時にフィルタ

2 コメント
views
4 フォロー

回答お願い致します。

入荷テーブルと出荷テーブルがあり、日付フィールドと部品番号フィールドがそれぞれあります。

サブフォームに、入荷テーブルと出荷テーブルを配置しているのですが、メインフォームの非連結テキストボックスに入力した値で、2つのサブフォームを同時にフィルタは出来ますか?

日付テキストボックス① 日付のフィルタ開始日
日付テキストボックス② 日付のフィルタ終了日
部品番号テキストボックス 部品番号のフィルタ

これらを検索ボタンを押すとフィルタ出来るようにしたいと思っています。
仮に日付テキストボックス①だけ入力して検索ボタンを押せば、その日付以降を表示。日付テキストボックス②だけ入力すればそれ以前のが表示。両方入力すればその間のデータを表示。
のように考えていて、それが両方のサブフォームに同時に作動出来ればと思っています。

よろしく回答お願い致します。

ノクト
作成: 2024/01/02 (火) 16:51:56
通報 ...
1

それぞれのサブフォームのレコードソースのクエリに抽出条件を設定する方法と、
VBAで抽出条件を生成してサブフォームのFilterプロパティに設定する方法が考えられます。

VBAタグが設定してあるのである程度VBAのスキルをお持ちだと思いますので、VBA利用の方法を提案しておきます。

各コントロールの名前は適当にこちらで決めてますので、実際のものに変更してご利用ください。

Private Sub cmdFilter_Click()
    Dim strFilter As String
    
    If Me.txtFromDate.Value <> "" Then
        strFilter = " And 日付>=#" & Me.txtFromDate.Value & "#"
    End If
    If Me.txtToDate.Value <> "" Then
        strFilter = strFilter & " And 日付<=#" & Me.txtToDate.Value & "#"
    End If
    If Me.txtPartsNim.Value <> "" Then
        strFilter = strFilter & " And 部品番号='" & Me.txtToDate.Value & "'"
    End If

    strFilter = Mid(strFilter, 6) '先頭の不要な" And "を削除
    
    Me.subForm1.Filter = strFilter
    Me.subForm1.FilterOn = strFilter <> ""
    Me.subForm2.Filter = strFilter
    Me.subForm2.FilterOn = strFilter <> ""
End Sub
2
ノクト 2024/01/04 (木) 00:26:55 b55e6@84ccc

有難うございます。
 Me.subForm1.Filter = strFilter
のところでエラーが出たので
Me.subForm1.Form.Filter = strFilter
のように以降4行を変更したら正常に動作することが出来ました。

この度は有難うございました。