Recordset對象
屬性
屬性名稱 資料類型和用途
AbsolutePage 可讀寫Long類型,要麼是設定或返回目前記錄所處的頁面序號,要麼是一個PositionEnum常數,見AbsolutePage用到的常數。在擷取或設定AbsolutePage的值之前,必須先設定PageSize的值。AbsolutePage是從1開始計數的。如果目前記錄位於第一頁時,AbsolutePage的傳回值為1,對AbsolutePage設定將使目前記錄指標指向指定頁的第一條記錄。
AbsolutePosition* 可讀寫的Long類型(從1開始計數),設定或返回目前記錄年處的位置。AbsolutePosition的最大取值是RecordCount屬性的值。
ActiveCommand 可讀寫的String類型,Recordset所關聯的先前開啟的Command對象名稱
ActiveConnection 指標類型,指向Recordset所關聯的先前開啟的Connection對象,或指向一條完整有效ConnectionString串值。
BOF* 唯讀Boolean類型,若為True,表明記錄指標已位於Recordset第一條記錄之前,並且沒有了目前記錄
Bookmark* 可讀寫Variant類型,返回對特定記錄的引用或使用一個Bookmark值使記錄指標指向特定記錄
CacheSize* 可讀寫Long類型,指定本地Cache中所存的記錄條數,最小(預設值)為1。若增加了CacheSize的值,則在流動Recordset以擷取更多記錄時,能減少與伺服器的通訊次數。
CursorLocation 可讀寫Long類型,指定可流動遊標的位置,即CursorType是位於用戶端還是位於伺服器端,見CursorLocation用到的常數。預設值是使用OLE DB資料來源提供的遊標。
CusrsorType* 可讀寫Long類型,指定Recordset遊標的類型,見CursorType用到的常數,預設值是forward-only遊標
DataMember 指標類型,指向關聯的DataEnvironment.Command對象
DataSource 指標類型,指向關聯的DataEnvironment.Connection對象
EditMode* 唯讀Long類型,返回Recordset的編輯狀態,見EditMode用到的常數
EOF* 唯讀Boolean類型,若為True,表明記錄指標已超出Recordset的最後一條記錄,並且沒有了目前記錄。
Filter* 可讀寫Variant類型,要麼是一條件運算式(一條有效SQL WHERE子句但又不出現保留字WHERE),要麼是指向特定記錄的Bookmark數組,要麼是一個Filter常數,詳見Filter用到的常數。
LockType* 可讀寫Long類型,指定開啟Recordset所使用的記錄鎖定方法。預設值是唯讀,對應於forward-only遊標的唯讀特性。見LockType屬性用到的常數。
MarshalOptions 可讀寫Long類型,指定用戶端改動後,應返回哪個記錄集合,此屬性僅適合於不常見的ADOR.Recordset對象,此對象是RDS.ADOR.Recordset對象成員之一。
MaxRecords* 可讀寫Long類型,指定SELECT查詢或預存程序返回的最大記錄條數,預設值為0,即全部返回
PageCount 唯讀Long類型,返回Recordset所有的頁數,必須設定了PageSize的值,PageCount的傳回值才是真正有意義的。如果Recordset不支援PageCount屬性,則傳回值為-1
PageSize 可讀寫Long類型,設定或返回一個邏輯頁所包含的記錄條數。使用邏輯頁可把大的Recordset分解為多個易處理的小部分。通常的做法是把PageSize設為DataGrid、MsFlexGrid或層次型的FlexGrid控制項所能顯示的記錄條數。PageSize和鎖定Jet(2k)或鎖定SQL Server(6.5版及更早版本,2k;7.0版,8k)資料庫時用到的表頁面大小無關
PersistFormat 可讀寫Long類型,設定或返回由調用Save方法所建立的Recordset檔案的格式。當前僅有一個值adPersistADTG(預設格式:Advanced Data TableGram)
RecordCount* 唯讀Long類型,如果Recordset支援近似定位或支援書籤,則返回帶可流動遊標的Recordset所含有的記錄數;如果不支援,必須使用MoveLast方法以取得確實覆蓋了所有記錄的準確的RecordCount數值。如果forward-only類型Recordset有一條或多條記錄,Recordset返回-1(True),任何類型的空的Recordset都將返回0(False)
Sort* 可讀寫String類型,包含一條不含保留字ORDER BY的SQL ORDERY BY子句,用以指定Recordset的排序方式
Source* 可讀寫String類型,可以是SQL語句、表名、預存程序名或相關Command對象名。如果提供了Command對象名,則Source將返回Command.CommandText的值。利用Open方法的參數lngOptions可以指定提供給Source值的類型
State 可讀寫Long類型,為對象狀態常數之一。見State常數
Status 唯讀Long類型,表明對Recordset進行批處理或其他多記錄(bulk)操作後的狀態。見Status屬性用到的常數
注意:上表所列屬性是ADODB.Recordset對象的標準屬性,即那些被關聯式資料庫的大多數通用OLE DB資料提供者所支援的屬性。帶星號的屬性工作表示它與DAO.Recordset或rdoResultset對象的相應屬性完全一樣或很接近。
方法
方法 用途
AddNew* 向可更新的Recordset添加一條新記錄。調用文法為rstName.AddNew[{varField|avarFields},{varValue|avarValuese}],其中varField是單個欄位名,avarFields是欄位名數組。varValue是單個欄位值,avarValue是由avarFields指定欄位的值所組成的數組。調用Update方法則把新記錄加到資料庫的表中。如果向主關鍵字不是第一個欄位的Recordset中添加記錄,則必須在AddNew方法中指定主關鍵字的名稱和值
Cancel 取消非同步查詢的執行,中止預存程序或複合SQL語句建立多個Recordset,調用文法為rstName.Cancel
CancelBatch* 取消LockEdit值為BatchOptimistic的Recordset的即將生效的批次更新操作,調用文法為:rstName.CancelBatch [lngAffectRecords],選擇性參數lngAffectRecords的取值見lngAffectRecords用到的常數
Clone 複製一個帶有獨立記錄指標的Recordset對象,調用文法為:Set rstDupe=rstName.Clone()
Close 關閉Recordset對象,以後可以重新設Recordset的屬性並使用Open方法來再度訪問Recordset 。調用文法為:rstName.Close
Delete* 如果Recordset的LockEdit屬性值未設為adLockBatchOptimistic,立刻從Recordset和相應表中刪除目前記錄
Find 尋找滿足指定條件的記錄。調用文法為:rstName.Find strCriteria [,lngSkipRecords, lngSearchDirection [,lngStart]],其中strCriteria是不含WHERE關鍵字的SQL WHERE子句,選擇性參數lngSkipRecords是應用Find前所跳過的記錄數目,lngDirection指定尋找方向(adSearchForward,和adSearchBackward,其中adSearchForward是預設值),選擇性參數lngStart指定了從哪兒開始尋找,其值要麼是一個Bookmark值,要麼是Bookmark常數,見varStart參數用到的Bookmark常數。
GetRows 返回一個二維Variant數組(行、列),調用文法為avarname=rstName.GetRows(lngRows [,varStart[,{strFieldName|lngFieldIndex|avarFieldNames|avarFieldIndexes}]],其中lngRows是返回記錄行數,varStart指定從哪兒開始尋找,其值要麼是一個Bookmark值,要麼是Bookmark常數,見varStart參數用到的Bookmark常數。第三個參數可以是單個列(欄位)的名稱或索引,也可以是多個列名稱或索引組成的Variant數組。如果不指定第三個參數,GetRows返回Recordset中所有列。
GetString 預設情況下,返回指定數目記錄的String串值,記錄間由傳回碼分隔。記錄內由tab分隔。調用文法為: strClip=rstname.GetString(lngRows,[, strCloumnDelimiter[,strRowDelimiter,[strNullExpr]]])。其中lngRows為返回記錄行數,strColumnDelimiter為可選的資料行分隔符號(vbTab是預設值),strRowDelimiter是可選的行分隔字元(vbCr是預設值),strNullExpr是選擇性參數,用於碰到Null值時的替代值(預設值是Null 字元串)。GetString的主要用途是通過把控制項的Clip屬性設為strClip來處理MSFlexGrid或MSHFlexGrid控制項
Move* 從目前記錄移動記錄指標。調用文法為:rstName.Move lngNumRecords [, varStart],其中lngNumRecords是要跳過的記錄數,可選選參數varStart指定從哪開始移動。其值要麼是一個Bookmark值,要麼是Bookmark常數,見varStart參數用到的Bookmark常數。
MoveFirst* 移動記錄指標到第一條記錄,調用文法為:rstName.MoveFirst
MoveLast* 移動記錄指標到最後一條記錄,調用文法為:rstName.MoveLast
MoveNext 移動記錄指標到下一條記錄,調用文法為:rstName.MoveNext。它是能用於forward-only Recordset的唯一Move方法
MovePrevious* 移動記錄指標到前一條記錄,調用文法為:rstName.MovePrevious
NextRecordset 返回另外的Recordset,它通常由能產生多個Recordset的複合SQL語句(如SELECT * FROM orders;SELECT * FROM customers)或預存程序來建立。調用文法為Next=rstName.NextRecordset [(lngRecordsAffected)],其中選擇性參數lngRecordsAffected指定返回到rstNext中去的記錄數目。如果已不存在Recordset,rstNext被設為Nothing
Open 在一個活動Command或Connection對象上開啟一個Recordset,調用文法為:rstName.Open [varSource [, varActiveConnection [, lngCursorType [, lngLockType [, lngOptions]]]]]。這些參數都是可選的,
Requery 重新從表中擷取Recordset的內容,等效於Close後再Open。它是一個資源集中型操作。文法為:rstName.Requery
Resync* 重新從表中擷取部分Recordset內容。調用文法為rstName.Resync [lngAffectRecords],其中lngAffectRecords的取值見lngAffectRecords用到的常數。如果把該參數設為adAffectCurrent或adAffectGroup,則比adAffectAll(預設值)所耗的資源要少。
Save 建立包含Recordset永久性拷貝的檔案。調用文法為rstName.Save strFileName。其中strFileName為路徑和檔案名稱。通常用.rst作為檔案的副檔名。
Supports 如果資料提供者支援指定的遊標相關的方法,則返回True,否則返回為False。調用文法為Supported=rstname.Supports (lngCursorOptions).關於lngCursorOptions,見Supports方法用到的常數。
Update* 使對Recordset的修改對底層資料來源中的表生效。對於大量操作,Update方法只使修改對本地(Cached)Recordset生效。調用文法為rstName.Update
UpdateBatch* 合對指量類型的Recordset(LockType屬性值為adBatchOptimistic,CursorType屬性值為adOpenKeyset或adOpenStatic)所做的修改對底層資料來源中的表生效。調用文法為rstName.UpdateBatch [lngAffectRecords],其中lngAffectRecords的取值見lngAffectrecords用到的常數。
註:ADODB.Recordset對象不支援Edit方法。為了改變ADODB.Recordset對象目前記錄的一個或多個欄位的值,可以先使用rstName.Fields(n).Value=varValue把相應欄位的值改為所需要的值,而後執行rstName.Update即可。
事件
事件名稱 觸發時機
EndOfRecordset 記錄指標試圖移到最後一條記錄之外時
FieldchangeComplete 欄位值的改變完成之後
MoveComplete Move或Move...方法執行之後
RecordsChangeComplete 對單個記錄編輯完成以後
RecordsetChangeComplete 緩衝中的改變對底層表生效之後
WillChangField 對欄位值改變之前
WillChangeRecord 對單個記錄改變之前
WillChangeRecordset 緩衝中的改變對底層表生效之前
WillMove Move或Move...方法執行之前
註:事件處理模組的函數頭幾乎都用到了adReason參數。該參數的取值見adReason參數用到的常數。