|
Marit 0 / 0 / 0 Регистрация: 28.04.2011 Сообщений: 24 |
||||
|
1 |
||||
|
30.08.2011, 15:20. Показов 12429. Ответов 21 Метки нет (Все метки)
Здравствуйте, помогите, пожалуйста, исправить ошибку.
После запуска программа выдает ошибку Run-time error ‘3061’ Слишком мало параметров. Требуется 2.
__________________
0 |
|
1904 / 781 / 31 Регистрация: 11.02.2010 Сообщений: 1,567 |
|
|
30.08.2011, 16:03 |
2 |
|
у тебя переменные не видны из VBA надо так … & d1 & » and » & d2 & …
1 |
|
alvk
7262 / 4465 / 287 Регистрация: 12.08.2011 Сообщений: 13,445 |
||||
|
30.08.2011, 16:47 |
3 |
|||
|
Dim d1, d2 As Date это неправильно, нужно так:
VnIzm это переменная? а где её описание?
1 |
|
ironegg 1904 / 781 / 31 Регистрация: 11.02.2010 Сообщений: 1,567 |
||||
|
30.08.2011, 17:13 |
4 |
|||
|
это неправильно почему? просто, первая переменная получается типа Variant. а после выполнения строки
она становиться типа Variant-String. VnIzm, я так понимаю, это таблица
1 |
|
Marit 0 / 0 / 0 Регистрация: 28.04.2011 Сообщений: 24 |
||||
|
30.08.2011, 17:49 [ТС] |
5 |
|||
|
Спасибо, что пришли на помощь .
Но программа продолжает ругаться. Говорит, что Дата содержит синтаксическую ошибку в выражении запроса ‘(VnIzm.data Between #16.08.2011# and #20.08.2011#’ .
0 |
|
alvk
7262 / 4465 / 287 Регистрация: 12.08.2011 Сообщений: 13,445 |
||||
|
30.08.2011, 17:55 |
6 |
|||
А так? и расскажите про Konstruktor
1 |
|
Marit 0 / 0 / 0 Регистрация: 28.04.2011 Сообщений: 24 |
||||
|
31.08.2011, 09:42 [ТС] |
7 |
|||
|
Konstruktor это поле таблицы VnIzm, в котором хранятся фамилии.
То все равно появляется ошибка:
0 |
|
alvk
7262 / 4465 / 287 Регистрация: 12.08.2011 Сообщений: 13,445 |
||||
|
31.08.2011, 09:51 |
8 |
|||
|
я так не говорил и не писал, это неправда! попробуйте ещё так:
1 |
|
0 / 0 / 0 Регистрация: 28.04.2011 Сообщений: 24 |
|
|
31.08.2011, 10:03 [ТС] |
9 |
|
alvk, извините, я, наверно, вас непрпвильно поняла.
0 |
|
Anna Morty 0 / 0 / 0 Регистрация: 04.07.2016 Сообщений: 6 |
||||
|
04.07.2016, 20:10 |
10 |
|||
|
Здравствуйте. Помогите, пожалуйста, найти косяк. Ругается на строчку-мало параметров.
0 |
|
shanemac51 Модератор
11261 / 4592 / 739 Регистрация: 07.08.2010 Сообщений: 13,157 Записей в блоге: 4 |
||||
|
04.07.2016, 20:16 |
11 |
|||
|
подозреваю, что обозначение символьное(а может и индекс) и не забывайте про контрольную распечатку
1 |
|
Anna Morty 0 / 0 / 0 Регистрация: 04.07.2016 Сообщений: 6 |
||||
|
04.07.2016, 20:23 |
12 |
|||
|
Да. Только в другом случае это нисколько не помешало:
Добавлено через 1 минуту
0 |
|
Модератор
11261 / 4592 / 739 Регистрация: 07.08.2010 Сообщений: 13,157 Записей в блоге: 4 |
|
|
04.07.2016, 20:25 |
13 |
|
может nameFolder у вас подстановка Не помогает. Так же ругается. выкладывайте базу
0 |
|
26771 / 14450 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
|
|
04.07.2016, 20:30 |
14 |
|
Не помогает. Так же ругается. Предположу, что [Комплекты 12] не таблица, а запрос с параметрами. Где есть ссылки на формы или явные параметры. Тогда вполне объяснимо появление ошибки — DAO ничего не знает об интерфейсных объектах Access и воспринимает ссылки на формы как неизвестные параметры
0 |
|
Anna Morty 0 / 0 / 0 Регистрация: 04.07.2016 Сообщений: 6 |
|||||||||||||||||
|
04.07.2016, 20:53 |
15 |
||||||||||||||||
Дальше не дописано-спотыкается на строчке. Добавлено через 1 минуту
Добавлено через 11 минут
Добавлено через 8 минут
жалуется на ошибку синтаксиса. Но запрос из запроса не из таблицы.
0 |
|
Бормалей 104 / 55 / 7 Регистрация: 02.07.2013 Сообщений: 314 |
||||
|
05.07.2016, 02:05 |
16 |
|||
|
Когда запускаю со строчкой Наверное так
0 |
|
0 / 0 / 0 Регистрация: 04.07.2016 Сообщений: 6 |
|
|
05.07.2016, 07:05 |
17 |
|
Все равно ругается.
0 |
|
104 / 55 / 7 Регистрация: 02.07.2013 Сообщений: 314 |
|
|
05.07.2016, 09:06 |
18 |
|
может nameFolder у вас подстановка выкладывайте базу Тогда выкладывайте базу. Как вам и говорили до этого
0 |
|
0 / 0 / 0 Регистрация: 04.07.2016 Сообщений: 6 |
|
|
05.07.2016, 09:47 |
19 |
|
Вот она
0 |
|
shanemac51 Модератор
11261 / 4592 / 739 Регистрация: 07.08.2010 Сообщений: 13,157 Записей в блоге: 4 |
||||
|
05.07.2016, 12:27 |
20 |
|||
|
замечания после почти часа разбирательства
1 |
Содержание
- Ошибка выполнения запроса ADO
- Почему появляется ошибка SQLException: [Microsoft] [ODBC Excel Driver] Слишком мало параметров. Ожидается 1
- 3 ответы
- Odbc error слишком мало параметров
Ошибка выполнения запроса ADO

Cmd1 = Новый COMОбъект(«ADODB.Command»);
Cmd1.ActiveConnection = БазаAccess;
Cmd1.CommandText = «Select * From Тов_операции WHERE Код_док = КодДокумента ORDER BY Код»;
Rs1 = Cmd1.Execute();
Rs1.MoveFirst();
Выдает следующую ошибку:
Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 1.
Что такое может быть?









(7) Как я передам значение. если оно не известно?
Мне кажется, я нашел. В описании MS Jet SQl есть
strParm = «PARAMETERS [Название должности] CHAR; «
‘ Определяет инструкцию SQL
‘ с предложением параметра.
strSql = strParm & «SELECT Фамилия, Имя, » _
& «FROM Сотрудники » _
т.е. в текст запроса нужно добавить параметр КодДокумента.
Осталось выяснить как! ;))



Cmd1 = Новый COMОбъект(«ADODB.Command»);
Cmd1.ActiveConnection = БазаAccess;
prm = Cmd1.CreateParameter(«DocCode»,20,1,15,КодДокумента);
Cmd1.Parameters.Append(prm);
Cmd1.CommandText = «Select * From Тов_операции WHERE Код_док = DocCode ORDER BY Код»;
Rs1 = Cmd1.Execute(1);
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 1.
Просматривая в отладчике, парметр 1 есть у объекта cmd1, тип — число, но значение стоит «Ошибка чтения значения».







У тебя такой запрос отрабатывает?
Cmd1.CommandText = «Select * From Тов_операции»;
если да то попробуй так.
Cmd1.CommandText = «Select * From Тов_операции WHERE Код_док = «+СокрЛП(КодДокумента)+» ORDER BY Код»;

(19) На первый вопрос — да, отрабатывает.
На второй — нет, то же самое, не хватает параметров.
Пробовал даже
Cmd1.CommandText = «Select * From Тов_операции WHERE Код_док = ‘»+СокрЛП(КодДокумента)+»‘ ORDER BY Код»;
Та же песня.

сам ты головожопый
Cnn = Новый COMОбъект(«ADODB.Command»);
Cnn.Open(«Driver=;Dbq=Путь:кфайлуаксеса.mdb;Uid=логин;Pwd=;»);
RS = Новый COMОбъект(«ADODB.Recordset»);
RS.ActiveConnection = Cnn;
RS.Source = «Select * From Тов_операции WHERE Код_док = ‘КодДокумента’ ORDER BY Код»;
RS.Open();





(25) Проверь что у тебя передается в запрос
должно быть
Select Код, Код_док From Тов_операции WHERE Код_док = 123 ORDER BY Код
а может у тебя КодДокумента пустой:
Select Код, Код_док From Тов_операции WHERE Код_док = ORDER BY Код
или строка:
Select Код, Код_док From Тов_операции WHERE Код_док = ‘123’ ORDER BY Код

(26) Вот такая строка
Cmd1.CommandText = «Select Код, Код_док From Тов_операции WHERE Код_док = 1114119366 ORDER BY Код»;
Отрабатывает все честно. Т.е. когда я прямо прописал числовой код документа.
Так что надо передавать через параметр. А как это сделать, не соображу.

«Select Код, Код_док From Тов_операции WHERE Код_док = «+СокрЛП(КодДокумента)+» ORDER BY Код»;
в первый раз одиночные кавычки были, теперь попробуй.


(29)
Ошибка синтаксиса (пропущен оператор) в выражении запроса ‘Код_док = 1 624 906 727’.
В запрос передается
Select * From Тов_операции WHERE Код_док = 1 624 906 727 ORDER BY Код
Источник
Почему появляется ошибка SQLException: [Microsoft] [ODBC Excel Driver] Слишком мало параметров. Ожидается 1
Я использую следующий код для загрузки ключевых слов и подсчета в файл Excel. у меня есть keyword_id в качестве первичного ключа для этого. У меня есть два столбца в файле Excel. 1. ключевое слово и 2. количество
но я получаю следующую ошибку:
задан 14 июн ’10, 07:06
Murali Krishna Pinjala
3 ответы
count является зарезервированным ключевым словом, поэтому, если у вас есть столбец в SEARCHABLE_KEYWORDS таблица называется count тогда вам нужно поместить имя столбца в двойные кавычки («)

Дважды проверьте имена столбцов в вашем запросе. Стол SEARCHABLE_KEYWORDS имеет столбцы KEYWORD_ID , KEYWORD и COUNT ? Насколько мне известно, это сообщение об ошибке часто возникает из-за опечаток или неправильного написания имен столбцов.
Как упомянул mikej, вы также должны убедиться, что не используете зарезервированные ключевые слова внутри своих операторов, не заключая их в кавычки. Этот совет относится к вашей колонке с названием COUNT .
Вы определяете в своем SQL вставку для двух значений, но выбираете три.
insert into SEARCHABLE_KEYWORDS ( keyword_id,keyword,count ) values (‘»+ «select Searchable_Keywords_sequence.nextval from dual»+ «‘,’»+keyword+ «‘,’»+count+»‘)») `
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками java excel jdbc or задайте свой вопрос.
Источник
Odbc error слишком мало параметров
Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.5.2009
Репутация: нет
Всего: нет
| GreyKarapetyan |
|
||
| Код |
| string strConn = «Driver=;Dbq=»+pathtofolder+»;Extensions=csv,txt;»; try < OdbcConnection oconnectiontofile = new OdbcConnection(strConn); OdbcCommand ocommandtofile = new OdbcCommand(«select column5,column6,column16,column8,column9,column10 from » + filename + «»», oconnectiontofile); oconnectiontofile.Open(); OdbcDataReader oreader = ocommandtofile.ExecuteReader(); // На этот моменте проиходит исключение и переход к Catch. |
| Код |
| Ошибка 07002 Microsoft Драйвер ODBC Текст Слишком мало параметров. Требуется 6. |
![]() |
![]() |
| diadiavova |
|
|||||||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Репутация: 31 В чём проблема не знаю,полагаю сведений недостаточно. Но есть момент
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.
[ Время генерации скрипта: 0.0915 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник READ Iphone 3g как будет прошивка |
← →
samborskijj ©
(2013-01-15 11:59)
[0]
Доброго времени суток. Delphi XE3 база данных Access У меня есть запрос
select *
from Prixod
where kod_tovara=:kod_tovara
and data_rasxoda between :data1 and :data2
код в программе
var
код_товара_для_анализа:integer;
Начальная_дата, конечная_дата:TDate;
begin
try
код_товара_для_анализа:=DataModule2.QТовар.FieldValues["kod_tovara"];
except
end;
Начальная_дата:=AdvSmoothDatePicker1.Date;
конечная_дата:=AdvSmoothDatePicker2.Date;
DataModule2.QАнализ_цены_в_приходе.ParamByName("kod_tovara").AsInteger:=код_това ра_для_анализа;
DataModule2.QАнализ_цены_в_приходе.ParamByName("data1").AsDate := Начальная_дата;
DataModule2.QАнализ_цены_в_приходе.ParamByName("data2").AsDate := конечная_дата;
DataModule2.QАнализ_цены_в_приходе.Execute;
При выполнении кода пишет
Слишком мало параметров. Требуется 4.
Подскажите в чем ошибка???
![]()
![]()
← →
O’ShinW ©
(2013-01-15 12:10)
[1]
сам запрос работает? Как проверили?
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:12)
[2]
Вот в том то и проблема. Что пишет слишком мало параметров. Я думаю может проблема в преобразовании дат в Access. В самом Accesse не проверял.
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:13)
[3]
Вроде бы запрос и простой.
![]()
![]()
← →
sniknik ©
(2013-01-15 12:29)
[4]
проверь в запросе правильность имен полей, например этого — data_rasxoda
![]()
![]()
← →
sniknik ©
(2013-01-15 12:31)
[5]
> («data1»).AsDate := Начальная_дата;
пиши AsDateTime
![]()
![]()
← →
Игорь Шевченко ©
(2013-01-15 12:35)
[6]
> try
> код_товара_для_анализа:=DataModule2.QТовар.FieldValues[«kod_tovara»];
>
> except
> end;
кто научил ?
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:38)
[7]
Имена правильные.
(«data1»).AsDate := Начальная_дата;
пиши AsDateTime
такая же ошибка выскакивает
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:38)
[8]
Имена правильные.
(«data1»).AsDate := Начальная_дата;
пиши AsDateTime
такая же ошибка выскакивает
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:40)
[9]
try
код_товара_для_анализа:=DataModule2.QТовар.FieldValues[«kod_tovara»];
except
end;
Никто. просто так удобнее. Если надо то вставлю сообщение. Но если честно то это не относится к моему вопросу.
![]()
![]()
← →
Anatoly Pogoretsky
(2013-01-15 12:40)
[10]
> samborskijj (15.01.2013 11:59:00) [0]
В запросе данных три
параметра, большего из
этого огрызка получить
нельзя, ну и также
непонятно зачем нужны
лишние переменные.
Сам же запрос скромно
скрыт.
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:43)
[11]
Понятно что можно обойтись без переменных. Но просто, что бы в режиме отладки отслеживать передаются ли данные в запрос. Я тоже вижу что три параметра. Но выдает именно эту ошибку.
![]()
![]()
← →
O’ShinW ©
(2013-01-15 12:44)
[12]
> В самом Accesse не проверял.
а надо бы
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:44)
[13]
Запрос еще раз повторю
select *
from Prixod
where kod_tovara=:kod_tovara
and data_rasxoda between :data1 and :data2
![]()
![]()
← →
sniknik ©
(2013-01-15 12:48)
[14]
> Никто. просто так удобнее. Если надо то вставлю сообщение. Но если честно то это не относится к моему вопросу.
ошибки прятать нельзя. зачем сообщение? убери «пустышку» сообщение уже есть.
> Имена правильные.
скажи «крекс пекс фекс» и три раза повернись вокруг оси. попробуй еще раз.
+
не показан код вноса запроса, может ты запрос добавляешь к существующему.
![]()
![]()
← →
sniknik ©
(2013-01-15 12:53)
[15]
> пиши AsDateTime
> такая же ошибка выскакивает
это не относится к той, но твой вариант написания может стать ошибкой… (не знаю как в XE3, может «сгладили», но в D7 есть «нюансы»)
![]()
![]()
← →
clickmaker ©
(2013-01-15 12:53)
[16]
DataModule2.QАнализ_цены_в_приходе.SQL.Text; // что здесь?
DataModule2.QАнализ_цены_в_приходе.Execute;
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:55)
[17]
> не показан код вноса запроса, может ты запрос добавляешь
> к существующему.
что значить добавляю к существующему?
![]()
![]()
← →
Плохиш ©
(2013-01-15 12:55)
[18]
> samborskijj © (15.01.13 11:59)
> Подскажите в чем ошибка???
В нежелании пользоваться отладчиком. Это первая причина. Вторая причина в желании сэкономить на программисте.
![]()
![]()
← →
sniknik ©
(2013-01-15 12:56)
[19]
> что значить добавляю к существующему?
что непонятно в «не показан код»?
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:56)
[20]
Запрос у меня прописан в Query. Я ему просто передаю значения.
![]()
![]()
← →
samborskijj ©
(2013-01-15 12:57)
[21]
>
> В нежелании пользоваться отладчиком. Это первая причина.
> Вторая причина в желании сэкономить на программисте.
если знаете ответ. то можно ответить а не язвить на форуме. отладчиком я пользовался.
![]()
![]()
← →
sniknik ©
(2013-01-15 12:58)
[22]
> Запрос у меня прописан в Query.
значит остался единственный вариант… может не «докрутил» по своей оси? попробуй крутиться в другую сторону. и обязательно правильно, и вслух, проговаривай слова.
![]()
![]()
← →
O’ShinW ©
(2013-01-15 12:59)
[23]
> > В самом Accesse не проверял.
>
> а надо бы
>
что-то дает в самом Accesse?
> select *
> from Prixod
> where kod_tovara= 0
> and data_rasxoda between 0 and 0
![]()
![]()
← →
Плохиш ©
(2013-01-15 13:00)
[24]
Я не лечу по фотографии соседа.
Учитывая многа букафф из [0], озвученной ошибки быть не должно, делаем вывод — нам подсовывают фотографию соседа.
![]()
![]()
← →
sniknik ©
(2013-01-15 13:01)
[25]
> озвученной ошибки быть не должно
по особенностям access(jet) она может быть ([4])
![]()
![]()
← →
O’ShinW ©
(2013-01-15 13:02)
[26]
> DataModule2.QАнализ_цены_в_приходе.ParamByName(«kod_tovara»).
> AsInteger:=код_това ра_для_анализа;
кстати, а тут нет пробела в оригинале?
![]()
![]()
← →
samborskijj ©
(2013-01-15 13:03)
[27]
> > > В самом Accesse не проверял.
> >
> > а надо бы
> >
>
>
> что-то дает в самом Accesse?
> > select *
> > from Prixod
> > where kod_tovara= 0
> > and data_rasxoda between 0 and 0
>
>
ошибка не выскакивает
![]()
![]()
← →
sniknik ©
(2013-01-15 13:05)
[28]
> ошибка не выскакивает
выскакивает предложение что то ввести… проигнорированное. нет?
![]()
![]()
← →
Anatoly Pogoretsky
(2013-01-15 13:05)
[29]
> samborskijj (15.01.2013 12:40:09) [9]
except
end;
Конечно удобно никто с
ошибками не тревожит
![]()
![]()
← →
samborskijj ©
(2013-01-15 13:06)
[30]
> > samborskijj (15.01.2013 12:40:09) [9]
>
> except
> end;
>
> Конечно удобно никто с
> ошибками не тревожит
=) Ну там вроде и ошибок не должно быть. Просто если не туда нажал то она и не выскочит.
Всем большое спасибо. Разобрался.
![]()
![]()
← →
Anatoly Pogoretsky
(2013-01-15 13:07)
[31]
> samborskijj (15.01.2013 12:43:11) [11]
Ты ничего не можешь видеть,
поскольку запроса нет
![]()
![]()
← →
O’ShinW ©
(2013-01-15 13:08)
[32]
*синтаксис м/б ошибочен
1. ShowMessage( inttostr( DataModule2.QАнализ_цены_в_приходе.ParamCount ));
2.
for i := 0 to DataModule2.QАнализ_цены_в_приходе.ParamCount — 1 do
ShowMessage(DataModule2.QАнализ_цены_в_приходе.Parameters[i].Name)
ShowMessage(DataModule2.QАнализ_цены_в_приходе.Parameters[i].Value)
![]()
![]()
← →
O’ShinW ©
(2013-01-15 13:08)
[33]
> Всем большое спасибо. Разобрался.
А сказать?
![]()
![]()
← →
Anatoly Pogoretsky
(2013-01-15 13:09)
[34]
> samborskijj (15.01.2013 12:44:13) [13]
Зачем ты показываешь
запрос чтения, а не вставки
![]()
![]()
← →
samborskijj ©
(2013-01-15 13:10)
[35]
>
> > Всем большое спасибо. Разобрался.
>
> А сказать?
=) Банальная ошибка. Не верное имя поля.
![]()
![]()
← →
sniknik ©
(2013-01-15 13:13)
[36]
> for i := 0 to DataModule2.QАнализ_цены_в_приходе.ParamCount — 1 do
возможный, классический, вариант запроса —
select * from Prixod where kod_tovara=? and data_rasxoda between ? and ?
что будет в ParamCount?
это к тому, что не все, что дельфя определила как параметр будет параметром в движке, и наоборот.
хотя, если он там найдет к примеру 6 параметров, это будет показательный тест.
![]()
![]()
← →
sniknik ©
(2013-01-15 13:16)
[37]
> =) Банальная ошибка. Не верное имя поля.
?
> Имена правильные.
> такая же ошибка выскакивает
?
наверняка «крекс пекс фекс» помогло.
![]()
![]()
I have the following 'set recordset' line that I cannot get working. The parameters seem correct according to all available help I can find on the subject.
The error displays :
«Run-time error ‘3061’. Too few parameters. Expected 1.»
Here is the line of code:
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()
Any help would be appreciated.
I have tried removing the WHERE cause with no effect, and also using single quotes between double quotes, but no joy.
Many thanks.
gideon
19.2k11 gold badges73 silver badges113 bronze badges
asked Mar 26, 2011 at 20:23
2
«Run-time error ‘3061’. Too few parameters. Expected 1.»
I believe this happens when the field name(s) in your sql query do not match the table field name(s), i.e. a field name in the query is wrong or perhaps the table is missing the field altogether.
answered Dec 9, 2011 at 19:08
daviddavid
6315 silver badges3 bronze badges
2
you have:
WHERE ID = " & siteID & ";", dbOpenSnapshot)
you need:
WHERE ID = "'" & siteID & "';", dbOpenSnapshot)
Note the extra quotations ('). . . this kills me everytime
Edit: added missing double quote
![]()
answered Jul 5, 2013 at 18:08
DATSDATS
1311 silver badge2 bronze badges
(For those who read all answers). My case was simply the fact that I created a SQL expression using the format Forms!Table!Control. That format is Ok within a query, but DAO doesn’t recognize it. I’m surprised that nobody commented this.
This doesn’t work:
Dim rs As DAO.Recordset, strSQL As String
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
Set rs = CurrentDb.OpenRecordset(strSQL)
This is Ok:
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)
answered Mar 22, 2018 at 22:26
![]()
John DoeJohn Doe
9267 silver badges15 bronze badges
My problem was also solved by the Single Quotes around the variable name
answered Sep 10, 2013 at 14:07
BradBrad
611 silver badge1 bronze badge
0
I got the same error message before.
in my case, it was caused by type casting.
check if siteID is a string, if it is you must add simple quotes.
hope it will help you.
answered Apr 16, 2013 at 8:35
My problem turned out to be, I had altered a table to add a column called Char.
As this is a reserved word in MS Access it needed square brakcets (Single or double quote are no good) in order for the alter statement to work before I could then update the newly created column.
answered Feb 13, 2013 at 11:08
![]()
CoopsCoops
4,6575 gold badges38 silver badges55 bronze badges
1
Make sure [qry_all_details] exists and is runnable. I suspect it or any query it uses, is missing the parameter.
answered Mar 27, 2011 at 0:32
AMissicoAMissico
21.4k6 gold badges76 silver badges106 bronze badges
I got the same error with something like:
Set rs = dbs.OpenRecordset _
( _
"SELECT Field1, Field2, FieldN " _
& "FROM Query1 " _
& "WHERE Query2.Field1 = """ & Value1 & """;" _
, dbOpenSnapshot _
)
I fixed the error by replacing «Query1» with «Query2»
answered Aug 1, 2016 at 13:32
In my case, I got this error when I tried to use in a query a new column, which I added to MySQL table (linked to MS Access), but didn’t refresh it inside MS Access.
To refresh a linked remote table:
- Open «Linked Table Manager» («External Data» tab on ribbon);
- Select a checkbox near the table you want to refresh;
- Press «OK» button.
answered Mar 4, 2017 at 15:20
![]()
tm-tm-
3231 gold badge3 silver badges10 bronze badges
In my case I was receiving this error when running a query from VBA with this command:
CurrentDb.Execute "qryName"
Double clicking on the query to execute it, worked fine, no error.
Changing the code to the following also worked fine, no error.
DoCmd.OpenQuery "qryName"
Hope this helps someone else who is unexpectedly getting this error.
If someone could explain why the first command caused the error I’d love to know.
answered Jun 2, 2022 at 17:45
![]()
Does the query has more than the parameter siteID, becouse if you want to run the query one parameter still isn’t filled witch gives you the error
answered Mar 27, 2011 at 9:49
In my case, I had simply changed the way I created a table and inadvertently changed the field name I tried to query. Make sure the field names you reference in the query actually exist in the table/query you are querying.
answered Apr 14, 2017 at 12:36
This Message is also possible to pop up, if there is a typo in the fields on which you define a join
answered Jun 26, 2019 at 7:06
![]()
Thanks for John Doe’s solution that helped a lot. Mine is very similar with some difference, using TempVars
Instead of :
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
I used:
strSQL = "SELECT * FROM Query1" , Query1 being common for other usage
Query1 as:
"Select Field1, Field2 from Table1 where Id= [TempVars]![MyVar]
And similarly, removing [TempVars]![MyVar] from view solved the problem.
![]()
answered Sep 6, 2019 at 16:26
![]()
In My case I had an INSERT INTO TableA (_ ,_ ,_) SELECT _ ,_ ,_ from TableB, a run-time error of 33061 was a field error. As @david mentioned. Either it was a field error: what I wrote in SQL statement as a column name did not match the column names in the actual access tables, for TableA or TableB.
I also have an error like @DATS but it was a run-time error 3464.
answered Jun 10, 2019 at 1:27
I have the following 'set recordset' line that I cannot get working. The parameters seem correct according to all available help I can find on the subject.
The error displays :
«Run-time error ‘3061’. Too few parameters. Expected 1.»
Here is the line of code:
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()
Any help would be appreciated.
I have tried removing the WHERE cause with no effect, and also using single quotes between double quotes, but no joy.
Many thanks.
gideon
19.2k11 gold badges73 silver badges113 bronze badges
asked Mar 26, 2011 at 20:23
2
«Run-time error ‘3061’. Too few parameters. Expected 1.»
I believe this happens when the field name(s) in your sql query do not match the table field name(s), i.e. a field name in the query is wrong or perhaps the table is missing the field altogether.
answered Dec 9, 2011 at 19:08
daviddavid
6315 silver badges3 bronze badges
2
you have:
WHERE ID = " & siteID & ";", dbOpenSnapshot)
you need:
WHERE ID = "'" & siteID & "';", dbOpenSnapshot)
Note the extra quotations ('). . . this kills me everytime
Edit: added missing double quote
![]()
answered Jul 5, 2013 at 18:08
DATSDATS
1311 silver badge2 bronze badges
(For those who read all answers). My case was simply the fact that I created a SQL expression using the format Forms!Table!Control. That format is Ok within a query, but DAO doesn’t recognize it. I’m surprised that nobody commented this.
This doesn’t work:
Dim rs As DAO.Recordset, strSQL As String
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
Set rs = CurrentDb.OpenRecordset(strSQL)
This is Ok:
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)
answered Mar 22, 2018 at 22:26
![]()
John DoeJohn Doe
9267 silver badges15 bronze badges
My problem was also solved by the Single Quotes around the variable name
answered Sep 10, 2013 at 14:07
BradBrad
611 silver badge1 bronze badge
0
I got the same error message before.
in my case, it was caused by type casting.
check if siteID is a string, if it is you must add simple quotes.
hope it will help you.
answered Apr 16, 2013 at 8:35
My problem turned out to be, I had altered a table to add a column called Char.
As this is a reserved word in MS Access it needed square brakcets (Single or double quote are no good) in order for the alter statement to work before I could then update the newly created column.
answered Feb 13, 2013 at 11:08
![]()
CoopsCoops
4,6575 gold badges38 silver badges55 bronze badges
1
Make sure [qry_all_details] exists and is runnable. I suspect it or any query it uses, is missing the parameter.
answered Mar 27, 2011 at 0:32
AMissicoAMissico
21.4k6 gold badges76 silver badges106 bronze badges
I got the same error with something like:
Set rs = dbs.OpenRecordset _
( _
"SELECT Field1, Field2, FieldN " _
& "FROM Query1 " _
& "WHERE Query2.Field1 = """ & Value1 & """;" _
, dbOpenSnapshot _
)
I fixed the error by replacing «Query1» with «Query2»
answered Aug 1, 2016 at 13:32
In my case, I got this error when I tried to use in a query a new column, which I added to MySQL table (linked to MS Access), but didn’t refresh it inside MS Access.
To refresh a linked remote table:
- Open «Linked Table Manager» («External Data» tab on ribbon);
- Select a checkbox near the table you want to refresh;
- Press «OK» button.
answered Mar 4, 2017 at 15:20
![]()
tm-tm-
3231 gold badge3 silver badges10 bronze badges
In my case I was receiving this error when running a query from VBA with this command:
CurrentDb.Execute "qryName"
Double clicking on the query to execute it, worked fine, no error.
Changing the code to the following also worked fine, no error.
DoCmd.OpenQuery "qryName"
Hope this helps someone else who is unexpectedly getting this error.
If someone could explain why the first command caused the error I’d love to know.
answered Jun 2, 2022 at 17:45
![]()
Does the query has more than the parameter siteID, becouse if you want to run the query one parameter still isn’t filled witch gives you the error
answered Mar 27, 2011 at 9:49
In my case, I had simply changed the way I created a table and inadvertently changed the field name I tried to query. Make sure the field names you reference in the query actually exist in the table/query you are querying.
answered Apr 14, 2017 at 12:36
This Message is also possible to pop up, if there is a typo in the fields on which you define a join
answered Jun 26, 2019 at 7:06
![]()
Thanks for John Doe’s solution that helped a lot. Mine is very similar with some difference, using TempVars
Instead of :
strSQL = "SELECT * FROM Table1 WHERE Name = Forms!Table!Control;"
I used:
strSQL = "SELECT * FROM Query1" , Query1 being common for other usage
Query1 as:
"Select Field1, Field2 from Table1 where Id= [TempVars]![MyVar]
And similarly, removing [TempVars]![MyVar] from view solved the problem.
![]()
answered Sep 6, 2019 at 16:26
![]()
In My case I had an INSERT INTO TableA (_ ,_ ,_) SELECT _ ,_ ,_ from TableB, a run-time error of 33061 was a field error. As @david mentioned. Either it was a field error: what I wrote in SQL statement as a column name did not match the column names in the actual access tables, for TableA or TableB.
I also have an error like @DATS but it was a run-time error 3464.
answered Jun 10, 2019 at 1:27
Вопрос:
В настоящее время я работаю над проектом, который использует Tweets и проводит быстрый анализ настроений и загружает идентификатор твита, дату твита, текст твита и полярность твитов в таблицу доступа MS (Office 2013). Я преобразовал выходы в строки, за исключением полярности настроения, чтобы соответствовать типам данных таблицы (Test). Вот мой код:
from pattern.web import Twitter
import time
import pyodbc
from textblob import TextBlob
cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:...SentimentAnalysis.accdb;')
cursor = cnxn.cursor()
s = Twitter().stream('#testhash')
for i in range(25):
time.sleep(1)
s.update(bytes=1024)
if s:
Ident = str(s[-1].id)
TweetDate = str(s[-1].date)
TweetText = str(s[-1].text.encode('utf8'))
x = s[-1].text
blob = TextBlob(x)
sent = blob.sentiment.polarity
cursor.execute('insert into Test([Ident],[TweetDate],[TweetText],[TweetSentiment]) values (Ident,TweetDate,TweetText,sent);')
cnxn.commit()
print 'Inserted: ', Ident
else: ''
s.clear()
Проблема в том, что я получаю следующую ошибку:
pyodbc.Error: (‘07002’, ‘[07002] [Microsoft] [ODBC Microsoft Access Driver] Слишком мало параметров. Ожидаемое 4. (-3010) (SQLExecDirectW)’)
Я видел другие сообщения об этой ошибке, но большинство из них только что были из-за проблем с двойными кавычками в Access. Поскольку я использовал только одинарные кавычки и все еще получаю эту проблему, я в тупике. Это сводит меня с ума! Любая помощь будет принята с благодарностью!
Лучший ответ:
Ваш SQL-оператор включает идентификаторы Ident, TweetDate и т.д., Как литерал, а механизм Database Datatabase Engine рассматривает их как заполнители параметров. Что вам нужно сделать, так это создать фактические заполнители параметров в тексте команды, а затем передать значения параметров. Например:
sql = """
INSERT INTO [Test] ([Ident], [TweetDate], [TweetText], [TweetSentiment])
VALUES (?,?,?,?)
"""
params = (Ident, TweetDate, TweetText, sent)
cursor.execute(sql, params)
cnxn.commit()





Загрузка .



)