MS Access vba,开启select带参数查询,运行-time 3065无法执行select查询

MS Access vba, open select query with parameters, run-time 3065 cannot execute a select query

我在尝试打开带有 "parameter" 集的 select 查询时感到很沮丧。我完全怀疑我构建的查询完全错误。我想要一个带有未绑定日期文本框的表单,供用户输入日期(我有这个)。然后我希望将该日期传递给预存储参数 select 查询并打开查询。如果我手动打开查询,它会按预期要求 [Compare Date]。当我使用表单时,单击按钮打开查询 qdf.execute 失败。

演示的虚构查询

PARAMETERS [Compare Date] DateTime;
SELECT [Compare Date] AS Compare_date;

我知道 "parameters" 通常在 WHERE 子句中,但是,如果手动 运行,此查询同样有效。

下面是调用代码

Private Sub btnRunReport_Click()

    Const pstr_CURRENCY_QRY As String = "Query12"
    Const pstr_DATA_PARAM As String = "Compare Date"
    Dim db As DAO.Database: Set db = CurrentDb()
    Dim qdf As DAO.QueryDef
    Set qdf = db.QueryDefs(pstr_CURRENCY_QRY)
    With qdf
        .Parameters(pstr_DATA_PARAM).Value = CDate(Me.txtCompareDate.Value)
        .Execute dbFailOnError  ' <<<< Fails here
        .Close
    End With    ' qdf
    Set qdf = Nothing
    Set db = Nothing
End Sub

谁能告诉我如何解决这个问题,或者用不同的方法来解决这个问题,以便查询可以通过表单手动工作?

您不能对 SELECT 查询使用 DAO Execute 方法。这就是为什么 Access 抱怨 "Cannot execute a select query."

参数问题与这里无关

确定要对参数查询的结果集做什么 returns。如果要将其加载到记录集中,可以使用 QueryDefOpenRecordset 方法。