分享
 
 
 

RS.GETROWS使用详解

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

ADO也提供更有效率方法來取得資料。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。

GetString 方法跟 GetRows 是類似的,不過其傳回以單一字串形式存在的多重記錄。GetString 語法如下:

GetString([Format], [NumRows], [ColDelimiter], [RowDelimiter], [NullExpr])

Format 是結果的格式。GetString 還可能支援更多格式,但是目前唯一支援的格式是2- adClipString,所以實際上沒有任何選擇。NumRows 是要取得的列數。(使用-1或省略此參數來讀取所有剩下的記錄。)ColDelimiter 是行的分隔字元(預設為Tab字元)。RowDelimiter 為記錄的分隔字元(預設為換行字元)。NullExpr 是用來表示Null欄位的字串(預設為空字串)。文件中說明只有當Format= adClipString時,最後三個參數才可使用,但是這警告沒有多大意義,因為(如之前所提)此格式是目前唯一支援的。以下有個例子,其透過 GetString 方法來將資料匯出成以分號分隔的文字檔:

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 方法不允許只匯出欄位的子集合,也不允許修改匯出欄位的順序。如果需要這些額外的功能,應該使用 GetRows 方法且自行建立結果字串。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有