2013-08-29 2 views
1

Я столкнулся с ошибкой 3061 с сообщением об ошибке «Слишком мало параметров: ожидается 2». Для решения проблемы я выполнил все следующие действия, но все равно не смог.Ошибка 3061 Слишком мало параметров 2 ожидается

  1. Я побежал запрос в режиме SQL, и это дает мне результат
  2. Я проверил все имена полей
  3. Я проверил все «&» s размещаются. Я считаю их правильными.

Вот мой код:

Private Sub cmbYear_Change() 

    Dim db As Database 
    Dim rs As DAO.Recordset 
    Dim Query As String 

    Query = " SELECT Yrs_Teaching, Highest_Edu, AD_Descr FROM ClassSurvey" & _ 
      " WHERE ClassSurvey.Program/School_ID = " & Me.cmbProgId.Value & _ 
      " AND ClassSurvey.ClassID = " & Me.cmbClassId.Value & _ 
      " AND ClassSurvey.Teacher_ID = " & Me.cmbTeacherID.Value & _ 
      " AND ClassSurvey.SYear = " & Me.cmbYear.Value 


    Set db = CurrentDb 
    Set rs = db.OpenRecordset(Query) 

    If rs.RecordCount > 0 Then 
     Me.TB1 = rs!Yrs_Teaching 
     Me.TB2 = rs!Highest_Edu 
     Me.TB3 = rs!AD_Descr 

    Else 
     Me.TB1 = "N/A" 
    End If 

    Set rs = Nothing 
    Set db = Nothing 
End Sub 

ответ

5

Оказывается, ваша таблица содержит поле с именем Program/School_ID. Скопируйте это имя поля в оператор SELECT, чтобы он мог правильно распознать его как одно имя поля.

Это изменение может быть все, что вам нужно. Но если у вас есть другая проблема, дайте себе возможность ознакомиться с завершенным заявлением SELECT, которое вы передаете движку db. Возможно, это не так, как вы ожидаете.

Dim db As Database 
Dim rs As DAO.Recordset 
Dim strQuery As String 

strQuery = "SELECT cs.Yrs_Teaching, cs.Highest_Edu, cs.AD_Descr FROM ClassSurvey AS cs" & _ 
     " WHERE cs.[Program/School_ID] = " & Me.cmbProgId.Value & _ 
     " AND cs.ClassID = " & Me.cmbClassId.Value & _ 
     " AND cs.Teacher_ID = " & Me.cmbTeacherID.Value & _ 
     " AND cs.SYear = " & Me.cmbYear.Value 

Debug.Print strQuery 
Set db = CurrentDb 
Set rs = db.OpenRecordset(strQuery) 

Если вы получите сообщение об ошибке, вы можете перейти в открывшееся окно (Ctrl + г), скопируйте текст выписки оттуда, откройте новый запрос в конструкторе запросов, переключатель SQL View, вставьте текст инструкции и попробуйте запустить его там. Этот совет особенно полезен, когда движок db жалуется на отсутствующий параметр, потому что когда вы пытаетесь запустить запрос от конструктора, Access покажет вам окно ввода с просьбой предоставить значение, и это поле также содержит имя того, что Access считает является параметром.

+0

Это помогает мне, спасибо. – Alexey

0

Я столкнулся с этим, когда искал решение той же проблемы. Оказывается, одно из значений элемента управления в форме не передавало значение в оператор, посылая его в окно отладки (Debug.print), помогло мне определить проблему через долгое время, потому что я использовал глобальную переменную, SQL-запрос был разбор. Поэтому сначала загрузите значения элементов управления в переменные!

0

Эта ошибка может быть вызвана тем, что имена столбцов в запросе имеют специальные символы. Попробуйте окружать имена столбцов квадратными скобками в SQL-запросе. Название столбца со специальными символами должно быть в квадратных скобках, а переменные должны быть внутри одинарных кавычек.

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