克隆方法 (ADO)

适用于:Access 2013、Office 2013

用于从现有 Recordset 对象创建重复的 Recordset 对象。 还可以指定克隆为只读状态。

语法

设置rstDuplicate = rstOriginal。克隆 (LockType)

返回值

返回 Recordset 对象引用。

参数

参数 说明
rstDuplicate 一个标识要创建的重复 Recordset 对象的对象变量。
rstOriginal 对象变量,用于标识要重复的 Recordset 对象。
LockType 可选。 LockTypeEnum 值,用于指定原始 Recordset 或只读 Recordset 的锁类型。 有效值为 adLockUnspecifiedadLockReadOnly

备注

可以使用 Clone 方法创建多个重复的 Recordset 对象,尤其是要在给定记录集中保留多个当前记录时。 使用 Clone 方法比采用与原始对象相同的定义创建和打开一个新的 Recordset 对象效率更高。

原始 RecordsetFilter 属性(如果有)不适用于克隆。 可以为新的 Recordset 设置 Filter 属性,以筛选结果。 要复制任何现有的 Filter 值,最简单的方法是直接为其赋值,如下所示:

新创建克隆的当前记录设置为第一条记录。

无论游标类型是什么,对一个 Recordset 对象所做的更改可以在该对象的所有副本中体现出来。 但是,对原始 Recordset 对象执行 Requery 后,副本将不再与原始对象同步。

关闭原始 Recordset 不会关闭其副本,同样,关闭副本也不会关闭原始对象或其他任何副本。

只能克隆支持书签的 Recordset 对象。 书签值是可以互换的;即,一个 Recordset 对象中的书签引用可以引用其任何副本中的同一个记录。

触发的某些 Recordset 事件也将在所有 Recordset 克隆中激发。 不过,由于克隆的 Recordset 之间的当前记录不同,对于某些克隆而言事件可能无效。

例如,如果更改字段值,则在更改的 Recordset 和所有克隆中都将发生 WillChangeField 事件。 克隆的 Recordset(未进行更改)的 WillChangeField 事件的 Fields 参数只是指克隆的当前记录的字段,该记录可能与发生更改的原始 Recordset 的当前记录不同。

下表提供了所有 Recordset 事件的完整列表,并指示这些事件是否有效和对于用 Clone 方法生成的任何记录集克隆是否会触发这些事件。

事件

是否在克隆中触发?

EndOfRecordset

FetchComplete

FetchProgress

FieldChangeComplete

MoveComplete

RecordChangeComplete

RecordsetChangeComplete

WillChangeField

WillChangeRecord

WillChangeRecordset

WillMove