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 | 否 |