2016-08-25 4 views
-1

В MS Access 2010 у меня есть следующий запрос, который случайным образом заказывает данные и помещает их в новый лист. До того как я добавил в WHERE, она работает, но теперь я получаю сообщение об ошибке, говорящее мне:MS Access SQL Слишком мало параметров: ожидается 2

Слишком мало параметров: Прогнозный 2.

Кто-нибудь знает, как я могу это исправить?

sqlQuery = "SELECT [My_Sheet].* " & _ 
      " INTO My_New_Sheet" & _ 
      " FROM [My_Sheet] " & _ 
      " WHERE [Some_Field] = [Some_Possible_Value_For_The_Field] " & _ 
      " ORDER BY Rnd(-(100000*[Some_Other_Field])*Time())" 

Debug.Print sqlQuery 
CurrentDb.Execute sqlQuery 

Где [Some_Possible_Value_For_The_Field] это происходит от [My_Sheet]

Обратите внимание, что это Access SQL

+1

Куда вы ожидаете '[Some_Possible_Value_For_The_Field]' от? Есть ли '[Some_Field]' в вашей таблице? –

+0

Да, '[Some_Field]' существует. также ожидается, что '[Some_Possible_Value_For_The_Field]' будет из '[My_Sheet]' – Paradox

+2

* Где ожидается [Some_Possible_Value_For_The_Field] 'из' [My_Sheet] '*: Что это значит? Это поле существует в таблице или нет? – sstan

ответ

3
sqlQuery = "SELECT [My_Sheet].* " & _ 
      " INTO My_New_Sheet" & _ 
      " FROM [My_Sheet] " & _ 
      " WHERE [Some_Field] = '" & [Some_Possible_Value_For_The_Field] & "'" & _ 
      " ORDER BY Rnd(-(100000*" & [Some_Other_Field] & ")*Time())" 

Debug.Print sqlQuery 
CurrentDb.Execute sqlQuery 

При использовании переменной формы, значение должно быть считаны из-за пределов заявления SQL. Следовательно, почему мы закрываем оператор с двойной кавычкой, добавляем значение поля, а затем продолжаем, открывая снова двойные кавычки.

Обратите внимание, что вам необходимо оставить полевые квалификаторы. В этом случае я предположил, что ваше первое поле было строкой, которая требует одиночных кавычек, а вторая переменная - как целое число, которое не требует отступников.

Смежные вопросы