web-dev-qa-db-ja.com

サブフォームでのフィルターの設定

メインフォーム「プロパティ」があり、2つのサブフォームがあり、1つはそのプロパティの部屋を表示し、もう1つは各部屋の居住者を表示します。

プロパティを変更すると、最初のサブフォームで部屋が変更されます。これは継続的です。部屋のサブフォームを下にスクロールして新しい部屋をアクティブにすると、2番目のサブフォームで居住者を変更する必要があります。

これまでのところ、「プロパティ」メインフォームの現在のイベントでこれを書いています。

Dim dblRoomID As Double
dblRoomID = Forms.Properties.frmRoomsByPropertySubform.Form.room_id

これにより、最初のサブフォームからRoom_IDが正常に取り出されます。

次に、そのRoom_IDを使用して、2番目のサブフォームにフィルターを設定する必要があります。このサブフォームには、現在すべてのプロパティのすべての居住者が表示されていますが、Room_IDフィールドがあります。

取得できません

Forms.Properies.frmStudentsRoomQuickview.Form.Filter = "[Room_ID]=" & dblRoomID

またはdocmd.applyfilterが機能する-これは、後で機能するためにアクティブなフォームが「frmstudentRoomQuickview」である必要があるためであると想定して作業してきました-しかし、.filterを設定するだけでは機能しない理由がわかりません作業。

編集:追加する必要があります。部屋フォームは連続している必要があるため、「部屋」フォーム内でサブフォームを使用することはできません。

編集2:

Private Sub Form_Current()
Dim dblRoomID As Double
    If IsNull(Forms.Properties.frmRoomsByPropertySubform.Form.room_id) Then
        Forms.Properties.frmRoomsByPropertySubform.Visible = False
        Forms.Properties.frmStudentsRoomQuickview.Visible = False
    Else
        Forms.Properties.frmRoomsByPropertySubform.Visible = True
        Forms.Properties.frmStudentsRoomQuickview.Visible = True
        dblRoomID = Forms.Properties.frmRoomsByPropertySubform.Form.room_id
        Call frmStudentsRoomQuickview_Enter(dblRoomID)
    End If

End Sub

Private Sub frmStudentsRoomQuickview_Enter(dblRoomID)
Forms.Properties.frmStudentsRoomQuickview.Filter = "[room_id] = " & dblRoomID
Forms.Properties.frmStudentsRoomQuickview.FilterOn = True
Forms.Properties.frmStudentsRoomQuickview.Requery
Debug.Print Screen.ActiveForm.name
End Sub

「プロシージャ宣言が同じ名前のイベントまたはプロシージャの説明と一致しません」というエラーが発生します

5
7thGalaxy

フィルターをオンにしてみましたか?

Forms.Properies.frmStudentsRoomQuickview.Form.Filter = "[Room_ID]=" & dblRoomID
Forms.Properies.frmStudentsRoomQuickview.Form.FilterOn = True

編集:

あなたのアップデートを見て、私は問題を理解しています。問題は、_Enterイベントにパラメーターを渡すことができないことです。あなたはこのようなことをしなければならないでしょう:

Dim dblRoomID As Double

Private Sub Form_Current()

    dblRoomID = 0

    If IsNull(Forms.Properties.frmRoomsByPropertySubform.Form.room_id) Then
        Me.frmRoomsByPropertySubform.Visible = False
        Me.frmStudentsRoomQuickview.Visible = False
    Else
        Me.frmRoomsByPropertySubform.Visible = True
        Me.frmStudentsRoomQuickview.Visible = True
        dblRoomID = Me.frmRoomsByPropertySubform.Form.room_id
        DoStudentsRoomQuickViewFilter
    End If

End Sub

Private Sub DoStudentsRoomQuickViewFilter()
    If dblRoomID <> 0 Then
        Me.frmStudentsRoomQuickview.Form.Filter = "[Room_ID] = " & dblRoomID
        Me.frmStudentsRoomQuickview.Form.FilterOn = True
        Me.frmStudentsRoomQuickview.Requery
        Debug.Print Screen.ActiveForm.Name
    End If
End Sub

Private Sub frmStudentsRoomQuickview_Enter()
    DoStudentsRoomQuickViewFilter
End Sub
6
Jamie Dunstan

「プロパティ」のスペルを確認してください...

Forms.Properies.frmStudentsRoomQuickview.Form.Filter = "[Room_ID]=" & dblRoomID
Forms.Properies.frmStudentsRoomQuickview.Form.FilterOn = True
1
DaveG