RecordsetClone 属性

expandtri全部显示

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

expression.RecordsetClone

expression     必需。返回“应用于”列表中的一个对象的表达式。

说明

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

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

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

当新的 Recordset 对象打开时,它的当前记录即为第一条记录。如果使用一种 Find 方法或一种 Move 方法,使 Recordset 对象中的其他记录成为当前记录时,必须通过将 DAO Bookmark 属性指定为该窗体的 Bookmark 属性,以使 Recordset 对象中的当前记录和窗体的当前记录同步。

可以使用 RecordCount 属性来计算 Recordset 对象中的记录数。下面的示例显示了如何组合 RecordCount 属性和 RecordsetClone 属性,以计算窗体中的记录数:

Forms!Orders.RecordsetClone.MoveLast

MsgBox "My form contains " _

    & Forms!Orders.RecordsetClone.RecordCount _

    & " records.", vbInformation, "Record Count"

注释  如果关闭窗体或更改了窗体的 RecordSource 属性,Recordset 对象就不再有效。如果接着引用 Recordset 对象或引用过去在窗体或 Recordset 对象中保存的书签,则会产生错误。

示例

下面的示例使用 RecordsetClone 属性,从“订单”窗体中新建 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