Clone 方法 (ADO)

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

语法

  
Set rstDuplicate = rstOriginal.Clone (LockType)  

返回值

返回 Recordset 对象参考。

参数

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

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

LockType
可选。 一个 LockTypeEnum 值,该值指定原始 Recordset 或只读 Recordset 的锁定类型。 有效值为 adLockUnspecified 或 adLockReadOnly。

备注

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

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

rsNew.Filter = rsOriginal.Filter  

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

无论游标类型如何,对一个 Recordset 对象所做的更改在其所有克隆中都可见。 但是,在原始 Recordset 上执行 Requery 后,克隆将不再同步到原始记录集。

关闭原始 Recordset 不会关闭其副本,关闭副本也不会关闭原始 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

应用于

记录集对象 (ADO)

另请参阅

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