如何使用ADO及DAO設(shè)置Me.RecordSet

字號:

您可以使用 Recordset 屬性來指定或獲得 ADO Recordset 或 DAO Recordset 對象,這些對象代表窗體的記錄源。
    在 Microsoft Access 數(shù)據(jù)庫 (.mdb) 中要求使用記錄集時, 將返回 DAO 記錄集,在 Microsoft access 項目 (.adp) 中要求使用記錄集時,將返回 ADO 記錄集。
    對于 Recordset 屬性已經(jīng)設(shè)置的使用 Visual Basic 的窗體,它進行的讀/寫行為取決于記錄集 (ADO 或 DAO) 類型和包含在帶有屬性標識的記錄集內(nèi)的數(shù)據(jù) (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 屬性必須設(shè)置為 adUseClient。
    在屬性表上 UniqueTable(表)屬性可在客戶/服務(wù)器模式中使用,但不能用于 access 數(shù)據(jù)庫 (.mdb)。此屬性只能在 Visual Basic 代碼中設(shè)置。
    您可使用 Recordset 屬性作如下操作:
    1)將多個窗體連接為公用數(shù)據(jù)集。這種情況允許多窗體的同步處理。
    例如:
    Set Me.Recordset = Forms!Form1.Recordset
    2)使用窗體不直接支持的 Recordset 對象上的方法。
    例如:當您想要通過 ADO 的 Find 方法或 DAO 的 Find 方法來使用自定義對話框查找記錄時,您可以使用 Recordset 屬性。
    3)回繞一系列影響多窗體的編輯的事務(wù)處理(可以重作)。
    當打開一個新的 Recordset 對象時,它的第一個記錄就是當前記錄。
    另注意:如果您更改窗體的 RecordSource 屬性,您必須使用 Set 語句。更改窗體的 Recordset 屬性可能也將更改 RecordSource、RecordsetType 和 RecordLocks 屬性。同時,一些相關(guān)數(shù)據(jù)屬性可能被覆蓋;例如:Filter、FilterOn、OrderBy 和 OrderByOn 屬性。