【问题标题】:Filtering forms in MS Access在 MS Access 中过滤表单
【发布时间】:2010-06-10 05:47:14
【问题描述】:

我有一个简单的表格来显示我的数据库中的产品。每个产品都有一个指向 Manufacturer_id 的外键。我想按制造商 ID 而不是默认产品 ID 过滤我的表单。我怎么能做到这一点?我知道我必须创建一个宏。此外,我已经创建了一个查询,它将制造商的名称作为参数并返回制造商 ID。所以基本上它应该以这种方式工作,当我按下表单上的“过滤器”按钮时,它会运行宏来打开我的查询,询问制造商的名称。当返回名称时,整个表单都会被过滤(因此应该在产品中的制造商 ID 和从查询返回的值之间进行比较,但我无法做到这一点)。我正在使用 access 2007。

型号:
alt text http://img266.imageshack.us/img266/6025/drawing1x.png

【问题讨论】:

  • 您想在设计时还是运行时进行过滤?
  • 你的意思是我想在启动表单时过滤还是在它已经运行时使用它?
  • 是的,设计时间是您创建表单的时间。运行时将在用户使用表单时进行。

标签: ms-access forms filtering


【解决方案1】:

这是您在运行时用于过滤的基本概念。一个设置过滤器,另一个删除过滤器。

Private Sub cmdFilter_Click()
    strFilter = InputBox("Please type an manufacturer ID:", "Filter Criteria")
    Me.FilterOn = True
    Me.Filter = "[manufacturer_id] = '" & strFilter & "'"
End Sub

Private Sub cmdRemFilter_Click()
    Me.FilterOn = False
    Me.Filter = ""
End Sub

您也可以通过将表单的 RecordSource 属性更改为关闭按钮事件来完成此操作。像这样的:

Me.RecordSource = "SELECT * FROM Product WHERE manufacturer_id = [Please type a manufacturer ID:]"

要在设计时设置它,您可以简单地将条件放在表单的 Filter 属性中,或者更好的是,使用构建表单的查询中的条件。

【讨论】:

  • 有没有办法运行查询而不是使用 InputBox ?
猜你喜欢
  • 2015-05-27
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2016-01-04
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多