要存取資料表中的記錄內容必須透過 Recordset 物件。 Recordset 物件是 DAO 物件的一個成員,代表的可以是一個資料表中所有的記錄,而 Recordset 物件是由直欄和橫列所組成。

所謂直欄就是 Field 物件,而橫列則為 Recordset 物件,透過 OpenRecordset 方法,就可以開啟一個 Recordset 物件,這個物件自動會屬於 Recordsets 集合物件的一個成員,在 Recordsets 物件中只有 Refresh 和 Count 方法。

☛ Recordset 物件的記錄型態

Recordset 物件具有存取的型態,當利用 OpenRecordset 方法,來建立 Recordset 物件時,就可以指定記錄的型態,其型態說明如下所示:

✦ Table-type:設定資料來源為單一的資料表;此類型的 Recordset 物件可以新增、刪除或更新資料表中的記錄。

✦ Snapshot-type:一組快照的記錄可用來找尋資料或讓報表來使用;此類型的 Recordset 物件之欄位可以來自多個資料表,但記錄是無法更新的。

✦ Dynaset-type:此類型的 Recordset 物件是儲存在記憶體中的暫存記錄;可以是查詢的結果,而使用者也可透過此類型的物件來新增、刪除或修改一個或多個資料表。

✦ Forward-Only-type:此類型的 Recordset 物件和 Snapshot-type 類似,但多一樣限制就是記錄只能向前查看。

✦ Dynamic-type:此類型的 Recordset 物件只可以用在 ODBCDirect 工作空間,用來處理遠端的 ODBC 資料庫中的資料。 Recordset 物件可以是查詢的結果,也可以是一個或多個資料表,而資料表也可以進行刪除、新增或修改的作業。

不同的 Recordset 物件可以引用的屬性也會有些許的不同,關於 Recordset 物件重要的屬性列示如下所示:

屬性 說明
AbsolutePosition 傳回目前記錄筆數的編號,第一筆記錄編號以0為開始。
BatchCollisionCount 傳回最近批次更新還沒有完成的記錄筆數。
BatchCollisions 傳回一個陣列用來指出上次批次更新中,在哪些列發生衝突。
BatchSize 設定或傳回每次批次作業要傳回多少陳述式給資料庫伺服器。
BOF 檢查目前的記錄是否為第一筆。
EOF 檢查目前的記錄是否為最後一筆。
Bookmark 在目前的記錄建立書籤,以便尋找。
Bookmarkable 決定 Recordset 物件是否具有書籤的功能。
CacheStart 設定緩衝區起始的位置。
EditMode 傳回目前記錄是否為編輯狀態。
Filter 可以經由此屬性設定篩選條件過濾出 Recordset 符合的記錄。
Index 傳回 Table-type Recordset 物件中 Index 物件的名稱。
LastModefied 將最近一次更新或新增的記錄設成書籤。
LockEdit 設定某頁資料在編輯時,是否允許其他的人同時修改。
NoMatch 透過 Seek 或 Find 方法時,當找不到記錄時會傳回 true。
PercentPosition 傳回目前記錄在整個 Recordset 物件中的百分比,傳回的值介於 0 到 100 之間。
Sort 設定排序的欄位及排序的順序。
UpdateOptions 設定或傳回一個值,代表批次更新時,where 子句是由哪一種結構中所構成。

 

☛ Recordset 物件的方法

關於 Recordset 物件的方法,可以有許多的方法來讓 Recordset 物件使用,以便對各種記錄的型態來操作,關於這些方法說明如下所示:

屬性 說明
AddNew 新增一筆記錄,此記錄通常是放置在實體記錄的最後一筆; 在記憶體中建立一個 Recordset 物件的複本。
Clone 在記憶體中建立一個 Recordset 物件的複本。
Close 關閉 Recordset 物件。
CopyQueryDef 取得 QueryDef 物件的複本。
Delete 拿掉目前的記錄。
Edit 將目前的記錄複製到暫存器以便進行編輯。
FillCache 將 ODBC 指定的記錄筆數放入緩衝區,以加快記錄處理的速度。
FindFirst 尋找第一筆記錄。
FindLast 尋找最後一筆記錄。
FindNext 尋找下一筆記錄。
FindPrevious 尋找上一筆記錄。
GetRows 從記錄集中取得數列的資料。
Move 移動目前記錄的位置。
MoveFirst 將目前記錄切換到第一筆記錄。
MoveLast 將目前記錄切換到最後一筆記錄。
MoveNext 將目前記錄切換到下一筆記錄。
MovePrevious 將目前記錄切換到上一筆記錄。
NextRecordset 若為 true 則代表下一個 Recordset 物件可以被使用。
OpenRecordset 建立或開啟 Recordset 物件。
Requey 重新再執行一次查詢,以便更新 Recordset 中的記錄。
Seek 於 Table-type 型態的 Recordset,將索引欄位中符合條件的記錄找到,並設定為目前的記錄。
Update 對 Recordset 所作的處理暫時先存在暫存器中,處理完畢後再作更新動作,以便將暫存器的內容存回 Recordset 的物件。

 

在 Recordset 物件中,若利用了 AddNew 或 Edit 方法來新增或編輯記錄,可以透過 CancelUpdate 方法來取消動作。 如果 Recordset 物件中沒有包含任何記錄,則 RecordCount 的屬性為 0,而 BOF 和 EOF 的屬性都為 true,在 Recordset 物件中所提到的資料頁是資料儲存的單位,一頁的大小大約是 2K 位元組,可以儲存一筆或多筆記錄。

☛ Field 物件

Field 物件是用來表示一個欄位的資料,此物件不止包含於 Recordset 物件中,而且可以包含於 TableDef、Relation、QueryDef、Index 物件中。 Fields 代表的是所有 Field 的集合,其成員具有 3 個方法列示如下所示:

屬性 說明
CreateProperty 建立自訂的屬性。
AppendChunk 將更改的資料放入到備忘或是 OLE 物件的欄位。
GetChunk 取得備忘或 OLE 物件欄位的資料。

 

Field 物件的屬性如下所示:

属性 说明
AllowZeroLength 決定欄位是否允許空字串。
CollatingOrder 設定欄位資料的排序方式。
DefaultValue 設定欄位的預設值。
OrdinalPosition 設定 Field 物件,在 Fields 集合物件中的位置,可透過此屬性來更改欄位物件的順序,必須透過 Refresh 方法來讓順序的變更生效。
Required 決定欄位是否可以是 Null 值。
Size 設定欄位最大的儲存空間,單位為位元組。
SourceField 取得來源資料的欄位名稱。
SourceTable 取得來源資料的資料表名稱。