OpenRecordset无法识别查询条件

时间:2017-07-05 13:09:28

标签: vba access-vba

我开发了一个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中引用此记录集,以便按照我在查询中规定的标准进行过滤?

非常感谢

2 个答案:

答案 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