Report.Recordset 属性 (Access)
返回或设置表示指定对象的记录源的 ADO Recordset 或 DAO Recordset 对象。 读取/写入 对象 。
语法
表达式。记录
表达 一个代表 Report 对象的变量。
备注
Recordset 属性返回 Recordset 对象,该对象提供在窗体、报表、列表框控件或组合框控件中浏览的数据。 如果表单基于查询,例如,引用 Recordset 属性等同于克隆 记录集 对象使用相同的查询。 但是,与使用不同的 RecordsetClone 属性,更改哪些记录当前记录集中返回的窗体的 记录集 属性也设置当前记录的窗体。
注意
不能将报表绑定到 ADO 记录集。 必须使用 DAO,否则转储 ADO 记录集的临时表,然后将报表绑定到该临时表。
Recordset 属性的读/写行为取决于记录集 (ADO 或 DAO) 的类型和包含属性标识记录集中的数据 (Access 或 SQL) 的类型。
记录集类型 | 基于 SQL 数据 | 基于 Access 数据库引擎所存储的数据 |
---|---|---|
ADO | 读/写 | 读/写 |
DAO | 不适用 | 读/写 |
下面的示例打开窗体,打开记录集,然后将窗体的窗体的 记录集 属性设置为新创建的 记录集 对象绑定到记录集。
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 属性可以:
将方法与窗体上不直接支持的 Recordset 对象结合使用。 例如,您可以使用 Recordset 属性与 ADO 查找 或 DAO 查找 方法,在自定义对话框中用于查找记录。
包装事务 (,可) 围绕影响多个窗体的一组编辑回滚。
更改窗体 Recordset 属性也可能会更改 记录源 、 RecordsetType ,和 RecordLocks 属性。 此外,某些数据相关的属性可能会覆盖,例如, 筛选器 、 FilterOn 、 OrderBy ,以及 OrderByOn 属性。
调用 重新查询 窗体的记录集 (例如,
Forms(0).Recordset.Requery
) 的方法可能会导致成为未绑定窗体。 若要刷新绑定到记录集的窗体中的数据,请将窗体的 RecordSource 属性设置为自身:Forms(0).RecordSource = Forms(0).RecordSource
。将多个表单绑定到通用数据集。 这样做允许多个窗体的同步。 例如:
Set Me.Recordset = Forms!Form1.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 VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。