2014-01-14 71 views
5

我有一個主窗體「屬性」,它有兩個子窗體,其中一個顯示房間中的房間,另一個房間中的其他人。在子窗體中設置篩選器

當您更改屬性時,房間會在第一個子窗體中更改,這是連續的。當您向下滾動房間子窗體,創建新房間時,我希望居住者在第二個子窗體中進行更改。

到目前爲止,我在「屬性」主窗體的Current事件寫成這樣:

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

成功地翻出從第一子窗體的ROOM_ID。

現在我需要使用Room_ID在第二個子窗體中設置過濾器,該窗體當前顯示所有屬性的所有佔有者,但具有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 

現在我就在「過程聲明不匹配事件或過程具有相同名稱的說明」錯誤

回答

6

你嘗試在打開過濾器?

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 
+0

嗨,我已經試過了,我會更新我原來的職位與我寫的確切代碼。 – 7thGalaxy

+0

我編輯了我的答案@ 7thGalaxy - 看看這是否適合你。 –

+0

它停止了「過程聲明與具有相同名稱的事件或過程的描述不匹配」 - 但它仍未設置過濾器 - 是否必須將變量dblRoomID傳遞到DoStudentsRoomQuickViewFilter()中?否則dblRoomID <> 0將始終爲真? 當我確實通過它時,我得到一個「對象不支持這個屬性或方法」的錯誤 – 7thGalaxy

1

選中「屬性」的拼寫...

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