好的我正在尝试动态获取recordCount并将其传递给.GetRows,但它不起作用,因为它只将一条记录拉入数组。如果我只是静态地将一个数字放入.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 clase重新查询,并将该记录集中的返回值传递给新变量?
答案 0 :(得分:2)
GetRows也使用记录集的指针。使用rs.MoveFirst
,您将指针放在最后一行。这就是为什么只返回一行的原因。设置Q
后添加PendingIntent
即可解决此问题。
答案 1 :(得分:0)
与Phesago提到的一样,Access只会根据它正在查看的记录集中的哪条记录返回记录数。作为使用记录集的一般做法,我总是从以下模板开始:
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