Form.RecordsetClone 属性 (Access)

使用 RecordsetClone 属性可引用由窗体的 RecordSource 属性指定的窗体的 Recordset 对象。 此为只读属性。

语法

表达式RecordsetClone

expression:表示 Form 对象的变量。

备注

RecordsetClone 属性设置是由窗体的 RecordSource 属性指定的基础查询或基础表的一个副本。 例如,如果窗体基于一个查询,那么对 RecordsetClone 属性的引用与使用相同查询来复制 Recordset 对象是等效的。 然后,如果向表单应用筛选器,Recordset 对象会反映出筛选。

此属性仅在使用 Visual Basic 时才可用,并在所有视图中均为只读。

使用 RecordsetClone 属性可以独立于窗体本身对窗体上的记录进行导航或操作。 例如,如果要使用不能与窗体一起使用的方法(如 DAO Find 方法),则可以使用 RecordsetClone 属性。

当新的 Recordset 对象打开时,它的第一条记录即为当前记录。 如果使用 Find 方法之一或 Move 方法之一使 Recordset 对象中的其他任何记录成为当前记录,则必须通过将 DAO Bookmark 属性的值分配给窗体的 Bookmark 属性,将 Recordset 对象中的当前记录与窗体的当前记录同步。

示例

以下示例使用 RecordsetClone 属性从 Orders 窗体创建 Recordset 对象的新克隆,然后在“即时”窗口中打印字段的名称。

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

下一个示例使用 RecordsetClone 属性和 Recordset 对象来实现记录集内的记录和窗体当前记录的同步。 从组合框中选择公司名称时, FindFirst 方法用于查找该公司的记录, 并将 Recordset 对象的 DAO Bookmark 属性分配给窗体的 Bookmark 属性,导致窗体显示找到的记录。

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

使用 RecordCount 属性对 Recordset 对象中的记录数进行计数。 以下示例演示如何组合 RecordCount 属性和 RecordsetClone 属性来对窗体中的记录进行计数。

Forms!Orders.RecordsetClone.MoveLast 
MsgBox "My form contains " _ 
    & Forms!Orders.RecordsetClone.RecordCount _ 
    & " records.", vbInformation, "Record Count"

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。