Recordset 属性

适用对象

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
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
扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×