【问题标题】:Filtering MS Access subform with vba使用 vba 过滤 MS Access 子表单
【发布时间】:2014-05-15 13:09:23
【问题描述】:

我有一个简单的问题。我开发了一个预订系统,该系统有一个子表单,其中包含在显示的日期(在主表单中)预订的所有房间。我添加了一个组合框,允许用户过滤房间以仅查看他们从组合框中选择的房间(重新查询子表单,然后过滤)。

这很好用,除了我的代码有时会在到达子末尾后无明显原因地循环通过过滤子?它可以正确显示所有内容,所以我不介意(除非它与真正的问题有关)。

然而,我遇到的真正问题是当我选择的房间在显示的日期没有预订时。过滤器工作正常(空显示),但是当我尝试从组合框中选择另一个房间时,组合框更新后的重新查询功能不起作用!

以前有没有其他人经历过这种情况?

工作流程:

组合框触发“更新后”事件。这会重新查询子表单,在“当前”事件之后发生子表单的过滤。

当子表单为空时,我无法执行任何进一步的子表单重新查询。

【问题讨论】:

  • 您是否考虑过链接子字段和链接主字段?
  • 我以前有过这个,我不得不向主窗体推送一个重新查询/刷新来让 Sub 弄清楚。
  • 我的链接子和链接主字段已经链接到主窗体上的日期。这就是子表单过滤以仅显示用户选择的日期的方式

标签: ms-access filter subform


【解决方案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

还要确保将父母和孩子联系起来,就像最后一个人提到的那样。

【讨论】:

  • 谢谢您,我已经尝试过了,但是一旦选择了未预订的房间,我仍然会遇到同样的问题。不过,我已经对其进行了调整以使其“正常工作”。如果 rs.EOF Then filter = false 并显示消息框让用户知道它是可用的。由于某种原因,它仍然坚持通过我的过滤器功能,所以我将一个全局变量设置为 true。然后我可以使用它来跳过所有过滤代码。不完美,但它有效:)
猜你喜欢
  • 1970-01-01
  • 2016-01-04
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多