从现有 Recordset 对象创建重复的 Recordset 对象。 (可选)指定克隆为只读。
语法
Set rstDuplicate = rstOriginal.Clone (LockType)
返回值
返回 记录集 对象引用。
参数
rstDuplicate
一个对象变量,用于标识要创建的 Recordset 对象。
rstOriginal
一个对象变量,用于标识要复制的 Recordset 对象。
锁类型
自选。 一个 LockTypeEnum 值,该值指定原始 Recordset的锁类型或只读 Recordset。 有效值 adLockUnspecified 或 adLockReadOnly。
言论
使用 Clone 方法可创建多个重复 Recordset 对象,尤其是如果要在给定记录集中维护多个当前记录时。 使用 Clone 方法比创建和打开使用与原始定义相同的新 Recordset 对象更高效。
原始 Recordset的 Filter 属性将不会应用于克隆。 设置新 Recordset 的 Filter 属性以筛选结果。 复制任何现有 筛选器 值的最简单方法是直接分配它,如下所示。
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 | 不 |