我有以下'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()
任何帮助都将不胜感激。
我尝试删除WHERE
原因没有效果,并且在双引号之间使用单引号,但没有快乐。
非常感谢。
答案 0 :(得分:44)
“运行时错误'3061'。参数太少。预计为1.”
我相信当你的sql查询中的字段名称与表字段名称不匹配时会发生这种情况,即查询中的字段名称错误或表格可能完全缺少该字段。
答案 1 :(得分:12)
WHERE ID = " & siteID & ";", dbOpenSnapshot)
你需要:
WHERE ID = "'" & siteID & "';", dbOpenSnapshot)
请注意额外引用('
)。 。 。每次都会杀了我
编辑:添加缺少双引号
答案 2 :(得分:5)
我的问题也通过变量名称
周围的单引号解决了答案 3 :(得分:4)
(对于那些阅读所有答案的人)。我的情况就是我使用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)
这是好的:
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)
答案 4 :(得分:2)
我的问题原来是,我改变了一个表来添加一个名为Char
的列。
由于这是一个reserved word in MS Access,它需要方形brakcets(单引号或双引号都不好),以便在我可以更新新创建的列之前使alter语句有效。
答案 5 :(得分:1)
确保[qry_all_details]存在并且可以运行。我怀疑它或它使用的任何查询都缺少参数。
答案 6 :(得分:1)
之前我收到了相同的错误消息。 就我而言,它是由类型转换引起的。 检查siteID是否为字符串,如果是,则必须添加简单引号。
希望它会对你有所帮助。答案 7 :(得分:1)
我遇到了类似的错误:
Set rs = dbs.OpenRecordset _
( _
"SELECT Field1, Field2, FieldN " _
& "FROM Query1 " _
& "WHERE Query2.Field1 = """ & Value1 & """;" _
, dbOpenSnapshot _
)
我通过将“Query1”替换为“Query2”来修复错误
答案 8 :(得分:0)
查询是否包含多个参数siteID,因为如果你想运行查询,一个参数仍然没有填充女巫会给你错误
答案 9 :(得分:0)
在我的情况下,当我尝试在查询中使用新列时出现此错误,我将其添加到MySQL表(链接到MS Access),但没有在MS Access中刷新它。
刷新链接的远程表:
答案 10 :(得分:0)
就我而言,我只是改变了创建表格的方式,无意中更改了我试图查询的字段名称。确保您在查询中引用的字段名称实际存在于您要查询的表/查询中。
答案 11 :(得分:0)
如果您在定义联接的字段中有错字,也可能会弹出此消息
答案 12 :(得分:0)
感谢John Doe的解决方案提供了很多帮助。我的非常相似,使用TempVars
代替:
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
我用过:
strSQL = "SELECT * FROM Query1" , Query1 being common for other usage
Query1为:
"Select Field1, Field2 from Table1 where Id= [TempVars]![MyVar]
同样,从视图中删除[TempVars]![MyVar]
也解决了这个问题。
答案 13 :(得分:-1)
在我的情况下,我从TableB中插入了TableA(_,_,_)SELECT _,_,_的INSERT INTO,运行时错误33061是字段错误。正如@david所提到的。要么是字段错误:我在SQL语句中作为列名写的内容与TableA或TableB的实际访问表中的列名不匹配。
我也有类似@DATS的错误,但它是运行时错误3464。