RS.GETROWS使用詳細(xì)說(shuō)明
發(fā)表時(shí)間:2024-06-07 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
ADO也提供更有效率方法來(lái)取得資料。GetRows 方法傳回一個(gè)二維的陣列變數(shù),每一行對(duì)應(yīng)Recordset中的一筆記錄,且每一列對(duì)應(yīng)到記錄中的欄位。此方法的語(yǔ)法如下:
Rows 是要讀取記錄的數(shù)量;如果想要取得Recordset所有記錄,可用-1或省略此參數(shù)。Start 是指出第一個(gè)被讀取記錄的書(shū)籤;也可以是下列列舉常數(shù)中的一個(gè):0-adBookmarkCurrent(目前記錄)、1-adBookmarkFirst(第一筆記錄)、或2-adBookmarkLast(最後記錄)。
Fields 是可選擇的欄位名稱(chēng)陣列,其用來(lái)限制要讀取的資料量。(也可指定單一欄位名稱(chēng)、單一欄位索引、或者一個(gè)欄位索引陣列)。當(dāng)設(shè)定 Rows 為少於Recordset記錄筆數(shù)時(shí),第一筆未讀取的記錄變成現(xiàn)行記錄。若省略 Rows 參數(shù)或設(shè)定為-1-adGetRowsRest或大於未讀取的筆數(shù)時(shí),GetRows 方法會(huì)讀取所有記錄並讓Recordset在EOF狀態(tài),而不會(huì)產(chǎn)生任何錯(cuò)誤。
當(dāng)處理目的變數(shù)陣列的資料時(shí),應(yīng)該記得資料儲(chǔ)存方式是有點(diǎn)相反的感覺(jué):陣列中第一維定義Recordset的欄位(資料行),第二維定義Recordset的資料列。以下有個(gè)載入Recordset內(nèi)所有記錄某三個(gè)欄位的範(fàn)例:
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 方法通常比一次讀一筆記錄的迴圈要來(lái)得快些,但使用這方法時(shí),必須確定Recordset未包含太多記錄;否則,會(huì)很容易以一個(gè)非常大的變數(shù)陣列來(lái)填滿(mǎn)所有記憶體。基於相同的原因,得小心不要包括任何BLOB(Binary Large Object)或CLOB(Character Large Object)欄位;若如此做的化,應(yīng)用程式一定會(huì)爆掉,特別是對(duì)於較大的Recordset而言。最後,記住此方法傳回的變數(shù)陣列是以0為基底的;傳回記錄的筆數(shù)是UBound(values,2)+1,傳回欄位數(shù)是UBound(value, 1)+1。
GetString 方法跟 GetRows 是類(lèi)似的,不過(guò)其傳回以單一字串形式存在的多重記錄。GetString 語(yǔ)法如下:
GetString([Format], [NumRows], [ColDelimiter], [RowDelimiter], [NullExpr])
Format 是結(jié)果的格式。GetString 還可能支援更多格式,但是目前唯一支援的格式是2- adClipString,所以實(shí)際上沒(méi)有任何選擇。NumRows 是要取得的列數(shù)。(使用-1或省略此參數(shù)來(lái)讀取所有剩下的記錄。)ColDelimiter 是行的分隔字元(預(yù)設(shè)為T(mén)ab字元)。RowDelimiter 為記錄的分隔字元(預(yù)設(shè)為換行字元)。NullExpr 是用來(lái)表示Null欄位的字串(預(yù)設(shè)為空字串)。文件中說(shuō)明只有當(dāng)Format= adClipString時(shí),最後三個(gè)參數(shù)才可使用,但是這警告沒(méi)有多大意義,因?yàn)椋ㄈ缰八幔┐烁袷绞悄壳拔ㄒ恢г摹R韵掠袀(gè)例子,其透過(guò) GetString 方法來(lái)將資料匯出成以分號(hào)分隔的文字檔:
Dim i As Long
Open "datafile.txt" For Output As #1
For i = 0 To rs.Fields.Count _ 1 ' Export field names.
If i > 0 Then Print #1, ";";
Print #1, rs.Fields(i).Name;
Next
Print #1, ""
rs.MoveFirst ' Export data.
Print #1, rs.GetString(, , ";", vbCrLf); ' Don't add an extra CR-LF here.
Close #1
GetString 方法不允許只匯出欄位的子集合,也不允許修改匯出欄位的順序。如果需要這些額外的功能,應(yīng)該使用 GetRows 方法且自行建立結(jié)果字串。