VBA代码:MS Access中的筛选表单

时间:2015-10-07 14:17:20

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

我编写了以下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

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

BR,

2 个答案:

答案 0 :(得分:2)

更改

 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

答案 1 :(得分:0)

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

MasterLinkField将是[cboObjectKey]

ChildLinkField将是[ObjectID]

此代码需要零代码。