2017-01-11 33 views
0

好吧我試圖動態獲取總記錄並傳遞到.GetRows但它不工作,因爲它只是在一個記錄到陣列中拉。如果我只是靜態地將一個數字放入.GetRows方法中,它可以正常工作,但這顯然不理想。MS-訪問的RecordCount返回一個有效的數字,但只.GetRows拉一個記錄

這個作品

Set rs = CurrentDb.OpenRecordset("SELECT * FROM Client", dbOpenDynaset, dbSeeChanges) 
aRR = rs.GetRows("random number") 
For i = 0 To rs.RecordCount - 1 
    For j = 0 To rs.Fields.Count - 1 
     Debug.Print ; aRR(j, i) 
    Next j 
Next i 

這不

Set rs = CurrentDb.OpenRecordset("SELECT * FROM Client", dbOpenDynaset, dbSeeChanges) 
With rs 
    rs.MoveLast 
    Debug.Print ; rs.RecordCount 
    Q = rs.RecordCount 
    aRR = rs.GetRows(Q) 
End With 
For i = 0 To rs.RecordCount - 1 
    For j = 0 To rs.Fields.Count - 1 
     Debug.Print ; aRR(j, i) 
    Next j 
Next i 

我已經嘗試了許多東西我已經在網絡上找到,但顯然我必須失去了一些東西?有一個簡單的方法來這還是我需要使用DISTINCT化酶重新查詢,並記錄集到一個新的變量中傳遞的返回值?

回答

2

GetRows的還使用記錄的指針。用rs.MoveLast將該指針放到最後一行。這就是爲什麼只有一行被返回。設置Q解決此之後添加rs.MoveFirst

+0

兄弟,你太棒了! – Phesago

0

像Phesago提到,訪問將在此基礎上紀錄它看着記錄只返回的RecordCount。作爲處理記錄集時的一般做法,我總是從以下模板開始:

Private Sub CreateRecordset() 
    Dim rs As Recordset 
    Dim sql As String 

    sql = "SELCT * FROM tblSomeTable" 

    Set rs = CurrentDb.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges) 

    With rs 
     If Not .EOF And Not .BOF Then 
      .MoveLast 
      .MoveFirst 

      Dim i As Integer 

      For i = 0 To rs.RecordCount - 1 
       'do whatever actions desired 



      Next 

     End If 
    End With 
End Sub 
相關問題