希望大俠能夠給出實體
uj5u.com熱心網友回復:
recordset 本身就是一個很好的集合啊,轉神馬陣列呢?uj5u.com熱心網友回復:
實體的,木有……uj5u.com熱心網友回復:
不會用,如果我想取 a 欄位的第一個值怎么取。我是真的沒有用過。uj5u.com熱心網友回復:
建議你先學習一下如何讀取SQL資料庫,如何通過指標獲取想要得資料moveFirst 是將指標移到最上 fields("列名") 可獲取當前指標位置的列資料
moveNext 是移到下一行
eof 代表指標在最后
uj5u.com熱心網友回復:
使用記錄集的GetRows方法GetRows 方法 (ADO)
將 Recordset 物件的多個記錄恢復到陣列中。
語法
array = recordset.GetRows( Rows, Start, Fields )
回傳值
回傳二維陣列。
引數
Rows 可選,長整型運算式,指定檢索記錄數目。默認值為 adGetRowsRest (-1)。
Start 可選,字串或長整型,將 GetRows 操作開始處的記錄賦值給書簽。也可使用下列 BookmarkEnum 值。
常量 說明
adBookmarkCurrent 從當前記錄開始。
adBookmarkFirst 從第一條記錄開始。
adBookmarkLast 從最后一條記錄開始。
Fields 可選。代表單個欄位名、順序位置、欄位名陣列或序號位置數的變體型。ADO 僅回傳這些欄位中的資料。
說明
使用 GetRows 方法可將記錄從 Recordset 復制到二維陣列中。第一個下標標識欄位,第二個則標識記錄號。當 GetRows 方法回傳資料時陣列變數將自動調整到正確大小。
如果不指定 Rows 引數的值,GetRows 方法將自動檢索 Recordset 物件中的所有記錄。如果請求的記錄比可用記錄多,則 GetRows 僅回傳可用記錄數。
如果 Recordset 物件支持書簽,則可以通過傳送該記錄的 Bookmark 屬性值來指定 GetRows 方法應開始檢索資料的位置。
如要限制 GetRows 呼叫回傳的欄位,則可以在 Fields 引數中傳送單個欄位名/編號或者欄位名/編號陣列。
在呼叫 GetRows 后,下一個未讀取的記錄成為當前記錄;如果沒有更多的記錄,則 EOF 屬性設定為 True。
uj5u.com熱心網友回復:
該范例使用 GetRows 方法從 Recordset 中檢索指定數目的行,并將結果資料填充到陣列。在兩種情況下 GetRows 方法回傳的行將少于所需的數目:一種情況是因為達到了 EOF,另一種情況是因為 GetRows 試圖檢索已被其他用戶洗掉的資料。僅當第二種情況發生時函式將回傳 False。運行該程序需要使用 GetRowsOK 函式。Public Sub GetRowsX()
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strMessage As String
Dim intRows As Integer
Dim avarRecords As Variant
Dim intRecord As Integer
' 使用雇員表中的姓名和受雇日期打開記錄集。
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set rstEmployees = New ADODB.Recordset
rstEmployees.Open "SELECT fName, lName, hire_date " & _
"FROM Employee ORDER BY lName", strCnn, , , adCmdText
Do While True
' 得到用戶輸入的行數。
strMessage = "Enter number of rows to retrieve."
intRows = Val(InputBox(strMessage))
If intRows <= 0 Then Exit Do
' 如 GetRowsOK 成功則列印結果,請注意是否達到檔案末端。
If GetRowsOK(rstEmployees, intRows, _
avarRecords) Then
If intRows > UBound(avarRecords, 2) + 1 Then
Debug.Print "(Not enough records in " & _
"Recordset to retrieve " & intRows & _
" rows.)"
End If
Debug.Print UBound(avarRecords, 2) + 1 & _
" records found."
' 列印已檢索的資料。
For intRecord = 0 To UBound(avarRecords, 2)
Debug.Print " " & _
avarRecords(0, intRecord) & " " & _
avarRecords(1, intRecord) & ", " & _
avarRecords(2, intRecord)
Next intRecord
Else
' 假定 GetRows 錯誤源于其他用戶對資料的更改,
' 使用 Requery 重繪' Recordset 并重新開始。
If MsgBox("GetRows failed--retry?", _
vbYesNo) = vbYes Then
rstEmployees.Requery
Else
Debug.Print "GetRows failed!"
Exit Do
End If
End If
' 由于使用 GetRows 使當前記錄指標指向訪問過的最后一個記錄,
' 所以,在回圈回到另一次搜索前將記錄指標移回 Recordset 的開始。
rstEmployees.MoveFirst
Loop
rstEmployees.Close
End Sub
Public Function GetRowsOK(rstTemp As ADODB.Recordset, _
intNumber As Integer, avarData As Variant) As Boolean
' 將 GetRows 方法的結果保存在陣列中。
avarData = rstTemp.GetRows(intNumber)
' 僅當回傳的行數少于所需的行數而非由于到達了 Recordset 末端時才回傳 False。
If intNumber > UBound(avarData, 2) + 1 And _
Not rstTemp.EOF Then
GetRowsOK = False
Else
GetRowsOK = True
End If
End Function
uj5u.com熱心網友回復:
估計樓主是不會用資料庫操作資料,而自己又不想花個幾分鐘專門去了解,甚至是不愿意去了解,所以就想讓別人幫寫段代碼把資料庫的資料放到陣列中,這樣一來就不用去了解資料庫就可以直接用別人的代碼得到自己了解的陣列資料,然后自己再去處理這些資料。如果是這樣,真可謂是“奇葩”啦。uj5u.com熱心網友回復:
用 GetRows 方法將記錄集保存到陣列。陣列的型別必須是 Variant 型。其實這一點好理解,因為欄位的型別和長度都不確定。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/150670.html
下一篇:vb 除錯程式,出現例外
