2014-04-03 245 views
0

我有一個快速問題。我開發了一個預訂系統,其中有一個子表格,其中包含顯示日期(主表格)中預訂的所有房間。我添加了一個組合框,允許用戶對房間進行過濾,只查看他們從組合框中選擇的房間(重新查詢子窗體然後過濾)。使用vba過濾MS Access子窗體

這工作很好,除了事實我的代碼有時會循環通過過濾子沒有明顯的理由達到子的結尾?它正確地顯示了一切,所以我不會爲此感到困擾(除非它與真正的問題相關)。

但是,我遇到的真正問題是,當我選擇一個沒有預訂日期顯示的房間時。過濾器工作正常(空顯示),但是當我然後嘗試從組合框中選擇另一個房間時,組合框後更新後的重新查詢功能不起作用!

有沒有其他人經歷過這個?

工作流程:

組合框觸發「更新後」事件。這將重新查詢子表單,在「當前」事件之後,發生子表單的篩選。

當子表格爲空時,我無法執行任何其他子表單重新查詢。

+0

你考慮過鏈接子節點和鏈接主節點嗎? – Fionnuala

+0

我之前有過這個,我不得不向主窗體推送一個查詢/刷新,以讓小組找出結果。 –

+0

我的鏈接子節點和鏈接主節點已經鏈接到主窗體上的日期。這是如何子窗體過濾器只顯示用戶選擇的日期 – germantom

回答

1

我做了類似的事情,並且很難與此,但能夠在我的combo_box_afterupdate事件中使用以下代碼修復它。

Dim rs As Object 
Me.Form.Filter = "" 
Me.Form.Refresh 
Set rs = Me.Recordset.Clone 
rs.FindFirst "[ValueToFind] = '" & Me![MyComboBoxValue] & "'" 
If Not rs.EOF Then Me.Bookmark = rs.Bookmark 

此外一定要鏈接父母和孩子作爲最後一個人提到。

+0

感謝這一點,我已經嘗試過,但一旦沒有保留的房間被選中,我仍然得到同樣的問題。儘管如此,我已經調整了它以使其「運作」。如果rs.EOF那麼filter = false並顯示消息框,以允許用戶知道它是可用的。由於某種原因,它仍然堅持通過我的過濾器函數,所以我設置一個全局變量爲true。我可以用它來跳過所有的過濾代碼。不完美,但它的作品:) – germantom