VBA OpenRecordset Producing 参数太少。预期 2. 错误

标签 vba ms-access

我有一个名为 qryAlloc_Source 的查询,它在一个条件下有两个参数:

>=[forms]![frmReportingMain]![txtAllocStart] And <=[forms]![frmReportingMain]![txtAllocEnd])

A 有一个单独的查询,最终引用 qryAlloc_Source(中间有几个查询),当我在 UI 中双击它时,该查询运行良好,但如果我尝试在 VBA 中打开它,我会收到错误消息。我的代码是:
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("qryAlloc_Debits")

我收到运行时错误 3061,参数太少。预期 2。我读到我可能需要使用表单参数在 VBA 中构建 SQL,但鉴于链中有一些查询,这将是非常复杂的 SQL。

关于解决方法的任何建议?我考虑使用 VBA 从查询中创建一个表,然后只引用该表——但我讨厌做额外的步骤。

最佳答案

我知道这已经有一段时间没有发布了,但我想投入我的 tuppence 值(value),因为我一直在寻找这个问题:

可以解析存储的查询:

Set db = CurrentDb
Set qdf = db.QueryDefs(sQueryName)
For Each prm In qdf.Parameters
    prm.Value = Eval(prm.Name)
Next prm
Set rst = qdf.OpenRecordset

对于 SQL:
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", "SELECT * FROM MyTable " & _
    "WHERE ID = " & Me.lstID & _
    " AND dWeekCommencing = " & CDbl(Me.frm_SomeForm.Controls("txtWkCommencing")) & _
    " AND DB_Status = 'Used'")
For Each prm In qdf.Parameters
    prm.Value = Eval(prm.Name)
Next prm
Set rst = qdf.OpenRecordset

这假设所有参数值都是可 Access 的 - 即表单是打开的并且控件具有值。

关于VBA OpenRecordset Producing 参数太少。预期 2. 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336077/

相关文章:

vba - 将数据从网站拉入 VBA

vba - 在 Excel VBA 中检查两个范围是否相等的最快方法

ms-access - 在 JOIN 语句中执行 CStr() 表达式

C# - SQL - 动态数组字段可能吗?

excel - 在 VBA 中按键对字典进行排序

vba - 通过键引用集合集合中的对象

使用 Access ODBC 链接表的 PostgreSQL 授权

用于计算每个客户的订单数量和总金额的 SQL 查询

vba - SendKeys 通过 Access 表单中的 VBA 代码弄乱了我的 NumLock 键

vba - Numberformat 允许我输入公式但将值存储为文本?