2013-08-29 155 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

它出現在表中包含一個名爲計劃/學校ID場。在SELECT聲明中包含該字段名稱,以便數據庫引擎可以將其正確識別爲一個字段名稱。

這種變化可能是你所需要的。但是如果你還有其他問題,給自己一個機會來檢查你給數據庫引擎完成的SELECT聲明。它可能不是你所期望的。

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視圖,粘貼在語句文本中,並嘗試在那裏運行它。當數據庫引擎抱怨缺少參數時,此提示特別有用,因爲當您嘗試從設計器運行查詢時,Access會顯示一個輸入框,要求您提供一個值,並且該框還包含任何Access認爲的名稱是參數。

+0

它可以幫助我,謝謝。 – Alexey

0

我在找同樣問題的解決方案時遇到了這個問題。原來,表單上的一個控件的值之一是沒有將值傳遞給語句,將它發送到調試窗口(Debug.print)很長時間後幫助我發現問題,因爲我使用的是全局變量, sql查詢被解析。因此,請先將控件的值加載到變量中!

0

此錯誤可能是因爲查詢中的列名具有特殊字符。嘗試使用SQL查詢中的方括號來包圍列名。帶有特殊符號的列名應放在方括號內,變量應放在單引號內。