Access VBA中的参数太少但在“查询”构建器中有效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Access VBA中的参数太少但在“查询”构建器中有效相关的知识,希望对你有一定的参考价值。
我使用下面的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)
任何帮助理解为什么这适用于一个而不是另一个,这是值得赞赏的
答案
基于表单和报表的参数仅在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中了解有关不同类型参数以及何时使用哪一个参数的更多信息
以上是关于Access VBA中的参数太少但在“查询”构建器中有效的主要内容,如果未能解决你的问题,请参考以下文章
尝试连接到 R 中的 Microsoft Access 数据库的“参数太少”