如何使用ADO及DAO設置Me.RecordSet

如何使用ADO及DAO設置Me.RecordSet

您可以使用 Recordset 屬性來指定或獲得 ADO Recordset 或 DAO Recordset 對象,這些對象代表窗體的記錄源。

在 Microsoft Access 數據庫 (.mdb) 中要求使用記錄集時, 將返回 DAO 記錄集,在 Microsoft Access 項目 (.adp) 中要求使用記錄集時,將返回 ADO 記錄集。
對於 Recordset 屬性已經設置的使用 Visual Basic 的窗體,它進行的讀/寫行爲取決於記錄集 (ADO 或 DAO) 類型和包含在帶有屬性標識的記錄集內的數據 (Jet 或 SQL) 類型。

在MDB中,默認情況下,Me.Recordset 是 DAO.Recordset 類型

dim rs as Dao.Recordset
set rs=Currentdb.openrecordset("tblUserOfficeCn")
set me.Recordset=rs


如果你希望使用ADODB.Recordset ,可使用下面方法。
在 Form_Open 裏面加入一下代碼
DGlobal rstSuppliers As ADODB.Recordset
Sub MakeRW()
DoCmd.OpenForm "Suppliers"
Set rstSuppliers = New ADODB.Recordset
rstSuppliers.CursorLocation = adUseClient
rstSuppliers.Open "Select * From Suppliers", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Forms("Suppliers").Recordset = rstSuppliers
Forms("Suppliers").UniqueTable = "Suppliers"
End Sub


注意 ADO Recordset.CursorLocation 屬性必須設置爲 adUseClient
在屬性表上 UniqueTable(唯一表)屬性可在客戶/服務器模式中使用,但不能用於 Access 數據庫 (.mdb)。此屬性只能在 Visual Basic 代碼中設置。


您可使用 Recordset 屬性作如下操作:

1)將多個窗體連接爲公用數據集。這種情況允許多窗體的同步處理。

例如:
Set Me.Recordset = Forms!Form1.Recordset
2)使用窗體不直接支持的 Recordset 對象上的方法。
例如:當您想要通過 ADO 的 Find 方法或 DAO 的 Find 方法來使用自定義對話框查找記錄時,您可以使用 Recordset 屬性。

3)迴繞一系列影響多窗體的編輯的事務處理(可以重作)。

當打開一個新的 Recordset 對象時,它的第一個記錄就是當前記錄。

另注意:如果您更改窗體的 RecordSource 屬性,您必須使用 Set 語句。更改窗體的 Recordset 屬性可能也將更改 RecordSource、RecordsetType 和 RecordLocks 屬性。同時,一些相關數據屬性可能被覆蓋;例如:Filter、FilterOn、OrderBy 和 OrderByOn 屬性。

---參考微軟幫助

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章