Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

适用对象

ComboBox 对象

Form 对象

ListBox 对象

Report 对象

返回或设置表示指定窗体、报表、列表框控件或组合框控件的记录源的 ADO Recordset 或 DAO Recordset 对象。 可读/写。

表达式.Recordset

表达式 必需。 返回“适用范围”列表中的对象之一的表达式。

备注

Recordset 属性返回提供要在窗体、报表、列表框控件或组合框控件中浏览的数据的记录集对象。 例如,如果窗体基于查询,通过使用相同的查询引用 Recordset 属性则等效于克隆 Recordset 对象。 但是,与使用 RecordsetClone 属性不同,更改当前在由窗体的 Recordset 属性返回的记录集中的记录也将设置窗体的记录。

仅当使用 Visual Basic for Applications (VBA) 代码时,此属性才可用。

Recordset 属性的可读/写行为由记录集的类型(ADO 或 DAO)和包含在由此属性标识的记录集中的数据类型(Access 或 SQL)来确定。

Recordset 类型

基于 SQL 数据

基于 Access 数据

ADO

可读/写

可读/写

DAO

N/A

可读/写

以下示例将打开一个窗体、打开一个记录集,然后通过将窗体的 Recordset 属性设置为新创建的 Recordset 对象来将它绑定到记录集。

Global rstSuppliers As ADODB.RecordsetSub MakeRW()DoCmd.OpenForm "Suppliers"Set rstSuppliers = New ADODB.RecordsetrstSuppliers.CursorLocation = adUseClientrstSuppliers.Open "Select * From Suppliers", _CurrentProject.Connection, adOpenKeyset, adLockOptimisticSet Forms("Suppliers").Recordset = rstSuppliersEnd Sub

使用 Recordset 属性执行以下操作:

  • 将多个窗体绑定到一个通用数据集。 这使多个窗体能够同步。 例如,

    Set Me.Recordset = Forms!Form1.Recordset

  • 将窗体上不直接支持的方法与 Recordset 对象结合使用。 例如,可以在自定义对话框中将 ADO Find 或 DAO Find 方法与 Recordset 属性结合使用以查找记录。

  • 使用一组影响多个窗体的编辑内容环绕一个事务(可以回滚此事务)。

更改窗体的 Recordset 属性也将更改 RecordSourceRecordsetTypeRecordLocks 属性。 此外,与数据相关的一些属性可能会被替代,例如 FilterFilterOnOrderByOrderByOn 属性。

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

在窗体绑定到记录集后,如果通过 Form 命令使用 Filter,则会发生错误。

示例

以下示例使用 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    NextEnd 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.CloseEnd 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 IfEnd Sub

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。