运行时错误'3061'.参数太少.预期1.(Access 2007)

uk5*_*rob 17 ms-access vba

我有以下'set recordset'行,我无法工作.根据我在该主题上可以找到的所有可用帮助,参数似乎是正确的.

错误显示:

"运行时错误'3061'.参数太少.预计1."

这是代码行:

Set rs = dbs.OpenRecordset("SELECT Centre_X, Centre_Y FROM [qry_all_details] 
WHERE ID = " & siteID & ";", dbOpenSnapshot)

Where rs is the recordset (Dim rs As Recordset) and dbs = CurrentDb()
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

我试图删除WHERE原因没有任何效果,并在双引号之间使用单引号,但没有快乐.

非常感谢.

小智 49

"运行时错误'3061'.参数太少.预计1."

我相信当sql查询中的字段名称与表字段名称不匹配时会发生这种情况,即查询中的字段名称错误或者表格可能完全缺少该字段.

  • 哦,这是一个直观的错误消息大声笑 (19认同)

小智 12

你有:

WHERE ID = " & siteID & ";", dbOpenSnapshot)
Run Code Online (Sandbox Code Playgroud)

你需要:

WHERE ID = "'" & siteID & "';", dbOpenSnapshot)
Run Code Online (Sandbox Code Playgroud)

注意额外的引用(')...每次都会杀了我

编辑:添加缺少双引号


Joh*_*Doe 7

(对于那些阅读所有答案的人)。我的情况很简单,因为我使用 Forms!Table!Control 格式创建了一个 SQL 表达式。该格式在查询中是可以的,但 DAO 无法识别它。我很惊讶没有人对此发表评论。

这不起作用:

Dim rs As DAO.Recordset, strSQL As String
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
Set rs = CurrentDb.OpenRecordset(strSQL)
Run Code Online (Sandbox Code Playgroud)

还行吧:

Dim rs As DAO.Recordset, strSQL, val As String
val = Forms!Table!Control
strSQL = "SELECT * FROM Table1 WHERE Name = '" & val & "';"
Set rs = CurrentDb.OpenRecordset(strSQL)
Run Code Online (Sandbox Code Playgroud)


小智 5

我的问题也通过变量名称周围的单引号解决了


AMi*_*ico 1

确保 [qry_all_details] 存在并且可运行。我怀疑它或它使用的任何查询缺少参数。