2014-04-03 237 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