我正在VBscript中編寫代碼,該代碼打開一個記錄集對象,然後用包含每條記錄數據的對象加載一個數組。我的記錄集類型不支持rs.RecordCount
屬性,所以在循環記錄集時我需要數組ReDim Preserve
,或者在執行計數循環後需要重新打開記錄集,因爲在計數循環似乎不工作後使用rs.MoveFirst
...哪個會更快?記錄集對象中最多隻有7條記錄,所以我最多需要ReDim多次。多次更新ReDim數組或重新打開記錄集?
這是我嘗試的一種方式,但rs.MoveFirst似乎並沒有正常工作,請參見注釋:
Function LoadData(filter_val)
Dim arr
Dim rs
'Calls function that opens the rs and returns it
Set rs = GetRS(filter_val)
Dim counter
counter = 0
Do Until rs.EOF
counter = counter + 1
rs.MoveNext
Loop
ReDim arr(counter)
rs.MoveFirst
For i = 0 To counter
Set arr(i) = New obj
'attempt to load values into the object from the recordset, but get an
'error saying 'either BOF or EOF is true, or the current record has been deleted'
'I tried adding If statements with MsgBox print outs checking for rs.EOF or rs.BOF
'being true right after rs.MoveFirst, but neither evaluates to true...
Next
End Function
這種方法的工作原理,但我必須不斷REDIM數組:
Function LoadData(filter_val)
Dim arr
Dim rs
Set rs = GetRS(filter_val)
Dim counter
counter = 0
ReDim arr(counter)
Do Until rs.EOF
Set arr(counter) = New obj
'load data from rs into object
rs.MoveNext
If Not rs.EOF
counter = counter + 1
ReDim Preserve arr(counter)
End If
Loop
End Function
你的第一種方法將調整該陣列是一個比記錄集的大小大。那是你要的嗎?這可能就是爲什麼你在預期之前到達EOF的原因。或者設置'counter = -1'或'ReDim arr(counter-1)' – langstrom