错误3061预期参数2太少

时间:2013-08-29 16:33:36

标签: ms-access access-vba

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

  1. 我在SQL模式下运行查询,它给了我结果
  2. 我检查了所有字段名称
  3. 我检查了所有“&” s被放置。我发现它们是正确的。
  4. 这是我的代码:

    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
    

4 个答案:

答案 0 :(得分:9)

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

这种改变可能就是你所需要的。但是,如果您有其他问题,请给自己一个机会来检查您为数据库引擎提供的已完成的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 + g ),从那里复制语句文本,在查询中打开一个新查询设计器,切换到SQL视图,粘贴语句文本并尝试在那里运行它。当db引擎抱怨缺少参数时,此提示特别有用,因为当您尝试从设计器运行查询时,Access将显示一个输入框,要求您提供值,该框还包含Access认为的任何名称是参数。

答案 1 :(得分:0)

当我在寻找同样问题的解决方案时,我遇到了这个问题。原来,表单上的控件中的一个值没有将值传递给语句,将其发送到调试窗口(Debug.print)帮助我在很长一段时间后发现问题,因为我使用了一个全局变量sql查询正在解析。因此,首先将控件的值加载到变量中!

答案 2 :(得分:0)

此错误可能是因为查询中的列名称具有特殊字符。尝试在SQL查询中使用方括号括起列名。带有特殊符号的列名应在方括号内,变量应在单引号内。

答案 3 :(得分:0)

我也遇到了这个问题,我意识到这是因为我没有在变量周围加上引号。

通过在变量周围添加'&Chr(34)'可以解决此问题

我的固定代码如下:

TextProducer = [Forms]![MyFormName]![TextInputBoxName]
strQuery = "SELECT FILEMASK" & _
" FROM TABLE_NAME" & _
" WHERE Producer = " & Chr(34) & TextProducer & Chr(34)