我编写了以下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,
答案 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
答案 1 :(得分:0)
应用子窗体控件的Master-和ChildLinkField会容易得多。
MasterLinkField将是[cboObjectKey]
ChildLinkField将是[ObjectID]
此代码需要零代码。