错误3061预期参数2太少

use*_*254 1 ms-access access-vba

我一直面临错误3061,错误消息"参数太少:预期2".我已经完成了以下所有操作来解决问题,但仍然无法解决问题.

  1. 我在SQL模式下运行查询,它给了我结果
  2. 我检查了所有的字段名称
  3. 我检查了所有"&"的放置.我发现它们是正确的.

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

Han*_*sUp 9

您的表似乎包含名为Program/School_ID的字段.将SELECT语句中的字段名称括起来,以便db引擎可以将其正确识别为一个字段名称.

这种变化可能就是你所需要的.但是如果你有另一个问题,请给自己一个机会来检查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)
Run Code Online (Sandbox Code Playgroud)

如果出现错误,可以转到立即窗口(Ctrl+ g),从那里复制语句文本,在查询设计器中打开一个新查询,切换到SQL视图,粘贴语句文本并尝试在那里运行它.当db引擎抱怨缺少参数时,此提示特别有用,因为当您尝试从设计器运行查询时,Access将显示一个输入框,要求您提供值,该框还包含Access认为的任何名称是参数.