Access VBA教程:Recordset属性

返回或设置 ADORecordset 或 DAORecordset对象,代表指定窗体、报表、列表框控件或组合框控件的记录源。可读写。

expression.Recordset

expression   必需。返回“Applies To”列表中的一个对象的表达式。

说明

在 DAO 内,不能将该属性用于 ODBCDirect 记录集类型。

Recordset属性返回的记录集对象提供窗体、报表、列表框控件或组合框控件中正被浏览的数据。例如,如果窗体是基于查询产生的,引用 Recordset属性就相当于用同样的查询复制 Recordset对象。但是,与使用RecordsetClone属性不同的是,如果更改由窗体的 Recordset属性返回的记录集内哪条记录为当前的这一设定,就会设置窗体的当前记录。

该属性仅在使用Visual Basic 时才可用。

Recordset属性的读/写行为取决于该属性所标识的记录集内所包含的记录集类型(ADO 或 DAO)和数据类型(Jet 或 SQL)。

记录集类型 基于 SQL 数据 基于 Jet 数据
ADO 读/写 读/写
DAO N/A 读/写
 

下面的示例将打开一个窗体,打开一个记录集,然后通过将窗体的 Recordset属性设为新建 Recordset对象,从而将窗体与记录集绑定。

Global 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
End Sub

可以使用 Recordset属性进行如下操作:


    Set Me.Recordset = Forms!Form1.Recordset
更改窗体的 Recordset属性可能也将更改 RecordSource、RecordsetType 和 RecordLocks属性。同时,一些与数据相关的属性可能被覆盖;例如:Filter、FilterOn、OrderBy 和 OrderByOn属性。

调用某窗体的记录集的 Requery方法(例如,Forms(0).Recordset.Requery)可能会导致该窗体变为未绑定。若要刷新与记录集绑定的窗体中的数据,请将该窗体的 RecordSource属性设为它自身 (Forms(0).RecordSource = Forms(0).RecordSource)。

当窗体与记录集绑定时,如果使用“按窗体筛选”命令就会出错。

VBA示例

下面的示例使用 Recordset属性从当前窗体创建一个新的 Recordset对象的副本,然后在“调试”窗口内打印字段的名字。


Sub Print_Field_Names()
    Dim rst As DAO.Recordset, intI As Integer
    Dim fld As Field
    Set rst = Me.Recordset
    For Each fld in rst.Fields
        ' Print field names.
        Debug.Print fld.Name
    Next
End Sub

接下来的示例使用 Recordset属性和 Recordset对象将一个记录集与窗体的当前记录同步。当从组合框选择一个公司名称时,将使用 FindFirst方法来为该公司定位记录,并使窗体显示找到的记录。


Sub SupplierID_AfterUpdate()
    Dim rst As DAO.Recordset
    Dim strSearchName As String
    Set rst = Me.Recordset
    strSearchName = CStr(Me!SupplierID)
    rst.FindFirst "SupplierID = " & strSearchName
    If rst.NoMatch Then
        MsgBox "Record not found"
    End If
    rst.Close
End Sub

下面的代码帮助确定在不同情况下,Recordset属性返回什么类型的记录集。


Sub CheckRSType()
    Dim rs as Object
    Set rs=Forms(0).Recordset
    If TypeOf rs Is DAO.Recordset Then
        MsgBox "DAO Recordset"
    ElseIf TypeOf rs is ADODB.Recordset Then
        MsgBox "ADO Recordset"
    End If
End Sub

上页:Access VBA教程:RecordSelectors属性 下页:Access VBA教程:RecordsetClone属性

Access VBA教程:Recordset属性

Access VBA教程:RecordsetClone属性 Access VBA教程:RecordsetType属性
Access VBA教程:RecordSource属性 Access VBA教程:RecordSourceQualifier属性
Access VBA教程:References属性 Access VBA教程:RemovePersonalInformation属性
Access VBA教程:RepeatSection属性 Access VBA教程:ReplicationConflictFunction属性
Access VBA教程:Report属性 Access VBA教程:Reports属性
Access VBA教程:Required属性 Access VBA教程:ResyncCommand属性
Access VBA教程:ReturnsRecords属性 Access VBA教程:RightMargin属性
Access VBA教程:RollbackTransaction属性 Access VBA教程:RowHeight属性
Access VBA教程:RowSource属性 Access VBA教程:RowSourceType属性
Access VBA教程:RowSourceType属性(用户定义函数) - 代码参数值 Access VBA教程:RowSpacing属性
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号