從現有的 recordset Recordset 物件建立重複 Recordset 物件。 選擇性地指定複製品是唯讀的。
語法
Set rstDuplicate = rstOriginal.Clone (LockType)
傳回值
傳回 Recordset 對象參考。
參數
rstDuplicate
物件變數,識別要建立的重複 Recordset 物件。
rstOriginal
物件變數,識別要複製的 Recordset 物件。
鎖定類型
選擇性。
LockTypeEnum 值,指定原始 Recordset 或唯讀 Recordset 的鎖定類型。 有效值為 adLockUnspecified 或 adLockReadOnly。
備註
使用 Clone 方法來建立多個重複的 資料集 物件,尤其是當您需要在某個資料集中保持多個當前記錄時。 使用 Clone 方法比建立和開啟使用與原始相同定義的新 Recordset 物件更有效率。
原始 Recordset 的 Filter 屬性,如果有的話,將不會套用至複製品。 設定新 Recordset 的 Filter 屬性以篩選結果。 複製任何現有 Filter 值最簡單的方式就是直接指派它,如下所示。
rsNew.Filter = rsOriginal.Filter
新建立之複製品的目前記錄會設定為第一筆記錄。
不論游標類型為何,您對一 Recordset 物件所做的變更都會顯示在其所有複製品中。 不過,在原始 Recordset上執行 Requery 之後,複製品將不再和原始資料同步。
關閉原始 Recordset 不會關閉其副本,關閉一個副本也不會關閉原始或任何其他副本。
您只能複製支援書籤的 Recordset 物件。 書籤值可互換;也就是說,來自一個 Recordset 對象的書籤參考會參考其任何復本中的相同記錄。
所有 Recordset 複製品中也會發生觸發的某些 Recordset 事件。 不過,由於目前記錄在複製的 Recordets 之間可能會有所不同,因此事件對複製而言可能無效。 例如,如果您變更欄位的值,將會在變更的 Recordset 和所有複製品中發生 WillChangeField 事件。 複製之 Recordset 之 WillChangeField 事件的 Fields 參數(其中未進行變更)會參考複製本當前記錄的欄位,這可能與發生變更之原始 Recordset 的當前記錄不同。
下表提供所有 Recordset 事件的完整清單。 它指出它們是否有效,並且針對使用 Clone 方法所產生的任何記錄集複製專案觸發。
| 事件 | 在複製中觸發? |
|---|---|
| EndOfRecordset | 否 |
| FetchComplete | 否 |
| FetchProgress | 否 |
| FieldChangeComplete | 是的 |
| MoveComplete | 否 |
| RecordChangeComplete | 是的 |
| RecordsetChangeComplete | 否 |
| WillChangeField | 是的 |
| WillChangeRecord | 是的 |
| WillChangeRecordset | 否 |
| WillMove | 否 |