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。如果要将其加载到记录集中,可以使用 QueryDef
的 OpenRecordset
方法。
我在尝试打开带有 "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。如果要将其加载到记录集中,可以使用 QueryDef
的 OpenRecordset
方法。