我开发了一个Access数据库查询,它引用表单上的对象以动态过滤数据。筛选查询的条件如下:
[Forms]![frmMain]![NavigationSubform].[Form]![Frame64]
其中[frame64]是用户在表单上选择两个选项之一的地方。
虽然这个查询在Access中运行良好,但我想在一段VBA代码中使用此查询,但问题是,当我尝试打开记录集时,VBA将不允许我。
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("qryMergeEzineCompleteMerges", dbOpenDynamic, dbSeeChanges)
通过我的研究,我发现这是因为VBA无法识别我定义的查询条件,因为它引用了一个表单。
任何人都可以告诉我如何在VBA中引用此记录集,以便按照我在查询中规定的标准进行过滤?
非常感谢
答案 0 :(得分:0)
这可能听起来很愚蠢,但最简单的解决方法是为dbOpenDynamic和dbSeeChanges值创建两个常量,并将它们的值设置为正整数值。您当然也可以在OpenRecordset调用中键入相关的整数值。
答案 1 :(得分:0)
您需要通过this answer about what Clean/Build/Rebuild do打开Recordset。
Sub Whatever()
Dim db As Database
Dim qdf As QueryDef
Dim rs As Recordset
Set db = CurrentDb()
Set qdf = db.QueryDefs("qryMergeEzineCompleteMerges")
'add any parameters here
With qdf
.Parameters("[parameter1]").Value = value1
.Parameters("[parameter2]").Value = value2
End With
Set rs = qdf.OpenRecordset(dbOpenDynaset)
'...
rs.Close
Set rs = Nothing
qdf.Close
Set qdf = Nothing
Set db = Nothing
End Sub