2011-03-26 152 views
12

我有以下'set recordset'行,我无法工作。根据我可以找到的有关该主题的所有可用帮助,参数看起来是正确的。运行时错误“3061”。参数太少。预计1.(Access 2007)

的错误显示:

“运行时错误 '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

此查询是否打开参数化查询?也许它期望一个值... – 2011-03-26 20:35:07

+1

不知道是否值得注意,但是至少在你输入代码时,你的“一行代码”占据了两行。这是正确的还是只是在这里的格式? – Oneide 2011-03-26 22:55:22

回答

1

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

0

请问查询比参数的siteID多,becouse如果你想运行查询一个参数仍没有充满女巫给你的错误

37

“运行时错误‘3061’。参数太少预期1.“

我相信这发生在您的sql查询中的字段名称与表字段名称不匹配时,即查询中的字段名称错误或者表格可能完全缺失字段。

+7

噢,这是一个直观的错误信息lol – Hill 2016-12-02 19:25:29

+0

这对我造成了错误 – Pat 2017-10-04 17:27:35

+0

参数太少,期望X意味着您将在SQL语句中使用的X字段名不可用。大多数情况下,在手写SQL代码行时会出现拼写错误,主要是当您使用可能具有多个“版本”的DB时,一个DB具有这些字段,而一个DB没有。我更喜欢用一个简单的代码来检查字段是否可用: http://forums.devarticles.com/microsoft-access-development-49/check-if-a-field-exists-in-a-table- using-vba-58559.html – 2017-11-16 14:40:53

2

我的问题竟然是,我改变了一张桌子,添加一个名为Char的列。 因为这是一个reserved word in MS Access它需要方形brakcets(单引号或双引号不好),以便alter语句能够工作,然后才能更新新创建的列。

+0

当您在SQL查询中为所有字段使用括号时,Char在Access中是保留字,如“Date”,“Time”,“Now”和其他“Functions” '很好去 – 2017-11-16 14:42:13

1

我得到了相同的错误信息。 在我的情况下,它是由类型转换造成的。 检查siteID是否为字符串,如果是,则必须添加简单引号。

希望它能帮助你。

10

您有:

WHERE ID = " & siteID & ";", dbOpenSnapshot) 

你需要:

WHERE ID = "'" & siteID & "';", dbOpenSnapshot) 

注意额外的报价(')。 。 。这个杀死我每次

编辑:添加缺少的双引号

4

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

1

我喜欢的东西得到了同样的错误:

Set rs = dbs.OpenRecordset _ 
(_ 
    "SELECT Field1, Field2, FieldN " _ 
    & "FROM Query1 " _ 
    & "WHERE Query2.Field1 = """ & Value1 & """;" _ 
, dbOpenSnapshot _ 
) 

我通过用“Query2”替换“Query1”来修正错误

0

在我的情况下,当我尝试在查询中使用新列时收到此错误,编辑到MySQL表(链接到MS Access),但没有刷新MS Access内。

要刷新链接的远程表:

  1. 打开“链接表管理器”(上带“外部数据”标签);
  2. 选择您要刷新的表格旁边的复选框;
  3. 按下“确定”按钮。
0

在我的情况下,我只是改变了我创建表的方式,并且无意中改变了我试图查询的字段名称。确保您在查询中引用的字段名称确实存在于您查询的表/查询中。