运行时错误3061参数太少。预期2

时间:2017-01-23 21:37:10

标签: database ms-access access-vba

有人可以告诉我这段代码有什么问题吗?我检查了拼写错误的所有行 - 这不是问题。所有表和查询都在db中存在。任何帮助表示赞赏。

Private Sub LoadArray()
    '---------------------------
    '---------------------------
    'This procedure loads text into the 3rd column of the array
    '---------------------------
    '---------------------------

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rsFiltered As DAO.Recordset
    Dim strSQL As String
    Dim i As Integer

    strSQL = "SELECT tblProperties.Name, tbl1OpportuniyType.Type, qryPropertiesALLTypesALLTbls.TotalUnits, " _
    & "qryPropertiesALLTypesALLTbls.EventStartTimeEachDay, qryPropertiesALLTypesALLTbls.EventEndTimeEachDay, " _
    & "qryPropertiesALLTypesALLTbls.EventStartDate, qryPropertiesALLTypesALLTbls.EventStopDate, " _
    & "qryPropertiesALLTypesALLTbls.TechOpsGroup, qryPropertiesALLTypesALLTbls.TechOpsResource " _
    & "FROM tbl1OpportuniyType RIGHT JOIN (qryPropertiesALLTypesALLTbls INNER JOIN tblProperties ON qryPropertiesALLTypesALLTbls.[PropertyComplex_ID] = tblProperties.[PropertyComplex_ID]) ON tbl1OpportuniyType.[OpportunityType_ID] = tblProperties.OpportunityType " _
    & "WHERE (((qryPropertiesALLTypesALLTbls.EventStartDate) Is Not Null));"



    'Debug.Print strSQL

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

        'This line ensures that the recordset is populated
        If Not rs.BOF And Not rs.EOF Then

        'Loops through the Array using dates for the filter

         For i = LBound(myArray) To UBound(myArray)

        If myArray(i, 1) Then
        'Filters recordset with array dates

         rs.Filter = "[EventStartDate]= " & myArray(i, 0)

        'Open up new recordset based on filter
        Set rsFiltered = rs.OpenRecordset

        'Loop through new recordset
        Do While (Not rsFiltered.EOF)

            'Adds text to the 3rd column of the array
            myArray(i, 2) = myArray(i, 2) & vbNewLine _
            & rsFiltered!Type & " - " & vbNewLine _
            & rsFiltered!Name & " " _
            & rsFiltered!EventStartDate & " - " _
            & rsFiltered!EventStopDate & " " _
            & rsFiltered!EventStartTimeEachDay & " - " _
            & rsFiltered!TechOpsGroup & " " _
            & rsFiltered!TechOpsResource & " " _
            & vbNewLine

        rsFiltered.MoveNext

        Loop


        End If

        Next i


        End If
        rsFiltered.Close
        rs.Close

    'Sets objects to nothing
    Set rsFiltered = Nothing
    Set rs = Nothing
    Set db = Nothing


    End Sub

1 个答案:

答案 0 :(得分:1)

不清楚 myArray 的来源,但过滤器需要调整才能将日期值转换为字符串表达式:

rs.Filter = "[EventStartDate] = #" & Format(myArray(i, 0), "yyyy\/mm\/dd") & "#"