【问题标题】:VBA Code : Filter Form in MS AccessVBA 代码:MS Access 中的过滤表单
【发布时间】:2016-01-04 19:56:18
【问题描述】:

我编写了以下 VBA 代码来帮助我使用 MS Access 中的表单过滤一些数据,但它不起作用:( 这是我写的:

Private Sub cboObjectKey_AfterUpdate() 
    Dim myObjectKey As String 
    myObjectKey = "Select * from testQueryFilter where ([ObjectID] = " & Me.CboObjectKey & ")"
    Me.subformquery1.Form.RecordSource = myObjectKey
    Me.subformquery1.Form.Requery  
End Sub

我没有收到错误消息,但问题是它不起作用...当我尝试过滤时,我收到一个消息框“输入参数值”的提示,这不应该发生。当我从下拉列表中选择某些内容时,我希望看到应用的过滤器。关于如何解决此问题的任何想法?

兄弟,

【问题讨论】:

  • [ObjectID] 字段的数据类型是什么?
  • 它是 MSAcces 中表中列的名称。它也是我想要过滤的下拉列表的列。
  • 当您在设计视图中打开该表时,Access 会在您的 ObjectID 字段的“数据类型”列中显示什么?
  • 数据类型:“数字”..
  • 您的“testQueryFilter”查询是否使用任何参数?您也不需要在分配记录源后重新查询。

标签: vba ms-access ms-access-2007 ms-access-2010 ms-access-2013


【解决方案1】:

改变

 myObjectKey = "Select * from testQueryFilter where ([ObjectID] = " & Me.CboObjectKey & ")"

成为

myObjectKey = "Select * from testQueryFilter "

你还会收到提示吗?

如果是这样,则表明名为 testQueryFilter 的表或查询有问题。

如果不是就是文字有问题

where ([ObjectID] = " & Me.CboObjectKey & ")"

改成

where ([ObjectID] = '" & Me.CboObjectKey & "')"

并在上面添加这一行

msgbox myObjectKey : debug.print myObjectKey 

这将显示正在生成的 SQL。

但是,坦率地说,您可能需要 MasterLinkField 和 ChildLinkField

see this video to help you

【讨论】:

  • 是的!这就是问题所在。我的意思是文本的问题,非常感谢。
【解决方案2】:

应用子窗体控件的 Master- 和 ChildLinkFields 会容易得多。

MasterLinkField 将是 [cboObjectKey]

ChildLinkField 将是 [ObjectID]

此功能需要零代码。

【讨论】:

  • 如果 cboobjectKey 组合框更改其值,则需要通过代码或导航进行刷新^_^
猜你喜欢
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
相关资源
最近更新 更多