2017-01-23 209 views
0

有人能讓我知道這段代碼有什麼問題嗎?我檢查了所有行拼寫錯誤 - 這不是問題。所有的表和查詢都按照它們存在於數據庫中的形式寫入。任何幫助表示讚賞。運行時錯誤3061參數太少。預計2

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 
+0

什麼錯誤是你的接收?另外,爲什麼你使用兩個記錄集?我不確定你的預期結果是什麼,但你應該能夠通過將方法保持爲一個記錄集來傾斜代碼。另外...你可能會嘗試在循環之前添加rs.movelast和rs.movefirst。這樣你總是指着你收藏的第一張唱片。 –

+0

我得到錯誤3061.我使用2個記錄集的原因是因爲機會類型aka rsfiltered!類型在機會類型表中存儲爲數字。我不應該使用2個記錄集?你介意讓我知道movefirst和movelast應該去哪裏?我會否移除movenext? – New2This

+0

本文可以比我更好地解釋記錄集。 http://www.accessallinone.com/updating-adding-and-deleting-records-in-a-recordset/ –

回答

1

目前尚不清楚其中myArray的從何而來,但過濾器需要一個調整的日期值轉換爲字符串表達式:

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

MyArray指的是我希望信息出現的文本框。文本框代表日曆日。謝謝我會根據建議調整日期部分。 – New2This

相關問題