GetRows

GetRows介紹,實例,

GetRows介紹

GetRows方法傳回一個二維的陣列變數,每一行對應Recordset中的一筆記錄,且每一列對應到記錄中的欄位。此方法的語法如下:
varArray = rs.GetRows([Rows], [Start], [Fields])
Rows是要讀取記錄的數量;如果想要取得Recordset所有記錄,可用-1或省略此參數。Start 是指出第一個被讀取記錄的書籤;也可以是下列列舉常數中的一個:0-adBookmarkCurrent(目前記錄)、1-adBookmarkFirst(第一筆記錄)、或2-adBookmarkLast(最後記錄)。
Fields 是可選擇的欄位名稱陣列,其用來限制要讀取的資料量。(也可指定單一欄位名稱、單一欄位索引、或者一個欄位索引陣列)。當設定 Rows 為少於Recordset記錄筆數時,第一筆未讀取的記錄變成現行記錄。若省略 Rows 參數或設定為-1-adGetRowsRest或大於未讀取的筆數時,GetRows 方法會讀取所有記錄並讓Recordset在EOF狀態,而不會產生任何錯誤。
當處理目的變數陣列的資料時,應該記得資料儲存方式是有點相反的感覺:陣列中第一維定義Recordset的欄位(資料行),第二維定義Recordset的資料列。以下有個載入Recordset內所有記錄某三個欄位的範例:
Dim values As Variant, fldIndex As Integer, recIndex As Integer
values = rs.GetRows(, , Array("LastName", "FirstName", "BirthDate"))
For recIndex = 0 To UBound(values, 2)
For fldIndex = 0 To UBound(values)
Print values(fldIndex, recIndex),
Next
Print
Next
GetRows方法通常比一次讀一筆記錄的迴圈要來得快些,但使用這方法時,必須確定Recordset未包含太多記錄;否則,會很容易以一個非常大的變數陣列來填滿所有記憶體。基於相同的原因,得小心不要包括任何BLOB(Binary Large Object)或CLOB(Character Large Object)欄位;若如此做的化,套用程式一定會爆掉,特別是對於較大的Recordset而言。最後,記住此方法傳回的變數陣列是以0為基底的;傳回記錄的筆數是UBound(values,2)+1,傳回欄位數是UBound(value, 1)+1。
--------------------------------------------------------------------------------------------------------------------------------------------------

實例

增加一個實例吧,讓大家看的更加的明白一點...
使用 GetRows 方法可將記錄從 Recordset 複製到二維數組中。第一個下標標識欄位,第二個則標識記錄號。當 GetRows 方法返回數據時數組變數將自動調整到正確大小。
如果不指定 Rows 參數的值,GetRows 方法將自動檢索 Recordset 對象中的所有記錄。如果請求的記錄比可用記錄多,則 GetRows 僅返回可用記錄數。
如果 Recordset 對象支持書籤,則可以通過傳送該記錄的 Bookmark 屬性值,來指定 GetRows 方法將從哪個記錄開始檢索數據。
如要限制 GetRows 調用返回的欄位,則可以在 Fields 參數中傳送單個欄位名/編號或者欄位名/編號數組
在調用 GetRows 後,下一個未讀取的記錄成為當前記錄,或者如果沒有更多的記錄,則 EOF 屬性設定為 True。
常用:arr_rs = rs.getrows(-1)
arr_rs = rs.getrows()
比如一個分類的表 T_Cate,結構和數據如下:
ID | Title | Intro
-----------------------------------------
1| 新聞 | 這裡是新聞
2| 教程 | 這裡是教程
3| 下載 | 這裡是下載
好了,表建立好了,數據也有了,下面我們就要用到GetRows咯!
Dim Rs_Cate
Dim Arr_Cate
Set Rs_Cate=Conn.ExeCute("SELECT ID,Title,Intro FROM T_Cate ORDER BY ID ASC")
Arr_Cate=Rs_Cate.GetRows
Set Rs_Cate=Nothing
好了表數據已經導出到數組了!下面我們將遍歷這個數組
Dim Arr_CateNumS,Arr_CateNumI
Arr_CateNumS=Ubound(Arr_Cate,2) '得到數組中數據的下標
For Arr_CateNumI=0 To Arr_CateNumS
Response.Write("ID:"&Arr_Cate(0,Arr_CateNumI)&" | 標題:"&Arr_Cate(1,Arr_CateNumI)&" | 介紹:"&Arr_Cate(2,Arr_CateNumI)&"<br>")
Next
呵呵,好了,輸出的數據為:
ID:1 | 標題:新聞 | 介紹:這裡是新聞
ID:2 | 標題:教程 | 介紹:這裡是教程
ID:3 | 標題:下載 | 介紹:這裡是下載
好了,具體就寫這么多吧!文采不行,如果大家有什麼不明白的,多用用就可以了,呵呵

相關詞條

熱門詞條

聯絡我們