メインフォーム「プロパティ」があり、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
「プロシージャ宣言が同じ名前のイベントまたはプロシージャの説明と一致しません」というエラーが発生します
フィルターをオンにしてみましたか?
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
「プロパティ」のスペルを確認してください...
Forms.Properies.frmStudentsRoomQuickview.Form.Filter = "[Room_ID]=" & dblRoomID
Forms.Properies.frmStudentsRoomQuickview.Form.FilterOn = True