Clone 方法 (ADO)

从现有 Recordset 对象创建重复的 Recordset 对象。 (可选)指定克隆为只读。

语法

  
Set rstDuplicate = rstOriginal.Clone (LockType)  

返回值

返回 记录集 对象引用。

参数

rstDuplicate
一个对象变量,用于标识要创建的 Recordset 对象。

rstOriginal
一个对象变量,用于标识要复制的 Recordset 对象。

锁类型
自选。 一个 LockTypeEnum 值,该值指定原始 Recordset的锁类型或只读 Recordset。 有效值 adLockUnspecifiedadLockReadOnly

言论

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

原始 RecordsetFilter 属性将不会应用于克隆。 设置新 RecordsetFilter 属性以筛选结果。 复制任何现有 筛选器 值的最简单方法是直接分配它,如下所示。

rsNew.Filter = rsOriginal.Filter  

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

对一个 Recordset 对象所做的更改在所有克隆中都可见,而不考虑游标类型。 但是,在原始 Recordset上执行 Requery 后,克隆将不再同步到原始副本。

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

只能克隆支持书签的 Recordset 对象。 书签值可互换;也就是说,来自一个 Recordset 对象的书签引用在其任何克隆中引用相同的记录。

触发的某些 Recordset 事件也会在所有 Recordset 克隆中发生。 但是,由于当前记录在克隆 记录集之间可能不同,因此这些事件可能对克隆无效。 例如,如果更改字段的值,则 WillChangeField 事件发生在更改的 Recordset 和所有克隆中。 WillChangeField 克隆 记录集(未更改的位置)的 Fields 参数将引用克隆的当前记录的字段,该字段可能与发生更改的原始 Recordset 的当前记录不同。

下表提供了所有 记录集 事件的完整列表。 它指示它们是否有效,并使用 Clone 方法为生成的任何记录集克隆触发。

事件 在克隆中触发?
EndOfRecordset
FetchComplete
FetchProgress
FieldChangeComplete 是的
MoveComplete
RecordChangeComplete 是的
RecordsetChangeComplete
WillChangeField 是的
WillChangeRecord 是的
WillChangeRecordset
WillMove

适用于

Recordset 对象 (ADO)

另请参阅

Clone 方法示例 (VB)
Clone 方法示例 (VBScript)
Clone 方法示例 (VC++)