【问题标题】:Error 3061 Too few parameters 2 expected错误 3061 预期的参数 2 太少
【发布时间】:2013-08-29 16:33:36
【问题描述】:

我遇到了错误 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

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    您的表格似乎包含一个名为 Program/School_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+g),从那里复制语句文本,在查询中打开一个新查询设计师,切换到 SQL 视图,粘贴语句文本并尝试在那里运行它。当 db 引擎抱怨缺少参数时,此提示特别有用,因为当您尝试从设计器运行查询时,Access 将显示一个输入框,要求您提供一个值,并且该框还包含 Access 认为的任何名称是参数。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          通过在我的变量周围添加 '& Chr(34)' 解决了这个问题

          我的固定代码如下:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-07-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-23
            相关资源
            最近更新 更多