Подтвердить что ты не робот

Ошибка времени выполнения "3061". Слишком мало параметров. Ожидаемый 1. (Access 2007)

У меня есть следующая строка '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 без эффекта, а также использовать одинарные кавычки между двойными кавычками, но без радости.

Большое спасибо.

4b9b3361

Ответ 1

"Ошибка времени выполнения '3061'. Слишком мало параметров. Ожидаемый 1."

Я считаю, что это происходит, когда имена полей в вашем sql-запросе не соответствуют имени (-ам) поля таблицы, то есть имя поля в запросе неверно или, возможно, в таблице вообще отсутствует поле.

Ответ 2

у вас есть:

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

вам нужно:

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

Обратите внимание на дополнительные цитаты (')., это убивает меня каждый раз

Изменить: добавлена ​​отсутствующая двойная кавычка

Ответ 3

Моя проблема также была решена одиночными кавычками вокруг имени переменной

Ответ 4

(Для тех кто читает все ответы). Мой случай был просто тот факт, что я создал выражение SQL, используя формат Forms! Table! Control. Этот формат в запросе одобрен, но 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)

Ответ 5

Моя проблема оказалась, я изменил таблицу, чтобы добавить столбец с именем Char. Поскольку это зарезервированное слово в MS Access, ему нужны квадратные браксеты (одинарная или двойная кавычка не подходят), чтобы оператор alter работал до Затем я смогу обновить вновь созданный столбец.

Ответ 6

Убедитесь, что [qry_all_details] существует и выполняется. Я подозреваю, что это или какой-либо запрос, который он использует, отсутствует параметр.

Ответ 7

Я получил такое же сообщение об ошибке раньше. в моем случае это было вызвано литьем типа.  проверьте, является ли siteID строкой, если это вы должны добавить простые кавычки.

надеюсь, что это вам поможет.

Ответ 8

Я получил ту же ошибку с чем-то вроде:

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

Я исправил ошибку, заменив "Query1" на "Query2"

Ответ 9

Имеет ли запрос больше, чем параметр siteID, потому что, если вы хотите запустить запрос, один параметр все еще не заполнен, что дает вам ошибку

Ответ 10

В моем случае я получил эту ошибку, когда попытался использовать в запросе новый столбец, который я добавил в таблицу MySQL (связанную с MS Access), но не обновил ее внутри MS Access.

Чтобы обновить связанную удаленную таблицу:

  • Откройте вкладку "Связанный менеджер таблиц" (вкладка "Внешние данные" на ленте);
  • Установите флажок рядом с таблицей, которую хотите обновить,
  • Нажмите кнопку "ОК".

Ответ 11

В моем случае я просто изменил способ создания таблицы и непреднамеренно изменил имя поля, которое я пытался запросить. Убедитесь, что имена полей, которые вы ссылаетесь в запросе, действительно существуют в запросе таблицы/запроса.

Ответ 12

Это сообщение также можно открыть, если в полях, в которых вы определяете соединение, есть опечатка

Ответ 13

Спасибо за решение Джона Доу, которое очень помогло. Мой очень похож с некоторой разницей, используя TempVars

Вместо:

      strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"

Я использовал:

      strSQL = "SELECT * FROM Query1"  , Query1 being common for other usage

Query1 as:

 "Select Field1, Field2 from Table1 where Id= [TempVars]![MyVar]

И, аналогично, удаление [TempVars]![MyVar] из поля зрения решило проблему.

Ответ 14

В моем случае у меня был INSERT INTO TableA (_, _, _) SELECT _, _, _ из TableB, ошибка времени выполнения 33061 была ошибкой поля. Как упомянул @david. Либо это была ошибка поля: то, что я написал в операторе SQL как имя столбца, не совпадало с именами столбцов в реальных таблицах доступа для TableA или TableB.

У меня также есть ошибка как @DATS, но это была ошибка времени выполнения 3464.