Access VBA中的参数太少但在“查询”构建器中有效

时间:2018-04-03 10:55:16

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

我正在使用下面的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)

理解为什么这对一个人而不是另一个人有用的任何帮助都值得赞赏

1 个答案:

答案 0 :(得分: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

中详细了解不同类型的参数以及何时使用哪些参数