【问题标题】:Too Few Parameters in Access VBA but works in Query builderAccess VBA 中的参数太少,但在查询生成器中有效
【发布时间】:2018-09-12 16:13:24
【问题描述】:

我正在使用下面的 SQL,如果我从查询生成器运行它可以正常工作,但是一旦我将它放入 VBA 中就会抛出一个错误:

代码:

With CurrentDb.CreateQueryDef("", "SELECT [_tbl_Structure].[User Name], tbl_Genesys_Daily.Field32, [_tbl_Structure].[Supervisor Emp Num], [_tbl_Structure].Supervisor FROM _tbl_Structure RIGHT JOIN tbl_Genesys_Daily ON [_tbl_Structure].[User ID] = tbl_Genesys_Daily.Field5 WHERE ((([_tbl_Structure].Supervisor)=?));")
            .Parameters(0) = [Forms]![frm_Manager_Stats_NEW]![Text279]  
            Set lvxObj = AvailabilityCap.Object
                Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
        End With

错误:

参数太少。预期 1.(运行时 3061)

任何帮助理解为什么这对一个人有效,但对另一个人无效

【问题讨论】:

  • 请不要使用Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset),如果我回答你应该使用Set rs = .OpenRecordset。这完全不一样。
  • 道歉 - 我已经搞定了,谢谢

标签: ms-access vba ms-access-2010


【解决方案1】:

基于表单和报告的参数仅在 GUI 上下文中可用(使用 GUI、表单、报告、宏和DoCmd.RunSQL 运行的查询)。您可能正在通过 CurrentDb 执行此操作,并且需要改用 querydef。

With CurrentDb.CreateQueryDef("", "SELECT [_tbl_Structure].[User Name], tbl_Genesys_Daily.Field32, [_tbl_Structure].[Supervisor Emp Num], [_tbl_Structure].Supervisor FROM _tbl_Structure RIGHT JOIN tbl_Genesys_Daily ON [_tbl_Structure].[User ID] = tbl_Genesys_Daily.Field5 WHERE ((([_tbl_Structure].Supervisor)=?));")
    .Parameters(0) = [Forms]![frm_Manager_Stats_NEW]![Text279]
    Set rs = .OpenRecordset
End With

您可以在this answer中了解更多关于不同类型的参数以及何时使用哪一种参数

【讨论】:

  • 哇,真快-谢谢。我已更新我的问题以纳入您的答案,但不幸的是仍然无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多