Microsoft Access 掲示板

サブフォームコントロールのフィルタメソッド / 2

9 コメント
views
4 フォロー
2

このコードが実際のもとだとすると、エラーで実行できないはず。

また、無駄が多いコードなので、とりあえず下記のように書き直して、試してみてください。

Option Compare Database
Option Explicit                     '変数宣言強制 これはあった方がよい


'メインフォーム上のテキストボックス(サブフォームコントロールの抽出条件)
Private Sub 氏名_AfterUpdate()

    'フィルタ実行
    Call buildWhereContition

    '画面再表示
    'Me("subForm").Form.Requery 不要

End Sub


Private Function buildWhereContition()
    Dim strWhereCondition As String '変数宣言を型指定して行う
    'strWhereCondition = "" '不要 String型で宣言すれば初期値は""なので

    'タブコントロール
    'myTab = myForm![タブ].Value  myFormがどこにも宣言、セットされていない
    Dim subForm As Form
    Set subForm = Me("subForm" & Me![タブ].Value).Form 'サブフォームを取得しておいた方が後で楽

    '条件は一つだけなので下記でOK
    If Me![氏名] <> "" Then
        strWhereCondition = "氏名='" & Me![氏名] & "'"
    End If
    
    subForm.Filter = strWhereCondition

    '抽出条件文字列がある場合はタブコントロール内にあるサブフォームコントロールにフィルタ設定
    If strWhereCondition <> "" Then
        subForm.FilterOn = True

    '抽出条件文字列がない場合はフィルタ解除
    Else
        subForm.FilterOn = False
    End If

End Function
通報 ...