【问题标题】:How to open a recordset when the query should prompt for parameter values?当查询应提示输入参数值时如何打开记录集?
【发布时间】:2015-03-19 01:20:09
【问题描述】:

我有一个 Access 宏

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT DISTINCT WORKSTATION FROM [qry EngineHoursSummaryA]")

rs = db.OpenRecordset 行。 . .,抛出错误“运行时错误'3061':参数太少。预期为2”。它抛出此错误是因为 [qry EngineHoursSummaryA] 调用了另一个查询,其中包含两个参数。当我在access中正常运行[qry EngineHoursSummaryA]时,一切正常,因为Access显示了两个输入框供我输入参数。

但是当我在 VBA 宏中引用查询时,Access 不会显示这两个输入框。我该怎么办?

【问题讨论】:

    标签: sql vba ms-access


    【解决方案1】:

    要通过 VBA 提供这些参数,您需要使用 QuerfDef,它是 Parameters 集合。您的查询还需要是正确的查询,而不是临时查询。 IE。您需要将 SELECT DISTINCT WORKSTATION FROM [qry EngineHoursSummaryA] 定义为它自己的查询。然后你就可以这样做了

    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim qdef As DAO.QueryDef
    Set db = CurrentDb
    Set qdef = db.QueryDefs("YourQueryName")
    qdef.Parameters.Refresh
    qdef.Parameters("yourParameterName") = "value to Supply" 'No quotes if a number and #s if a date.
    Set rs = qdef.OpenRecordset
    

    【讨论】:

    • 谢谢!这行得通。没有足够的代表来投票或选择您的答案。 :(
    • @user2453293 您可以随时投票并接受您自己问题的答案。事实上,接受这一点应该会给你一些代表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多