Clone メソッド (ADO)

既存の Recordset オブジェクトから複製の Recordset オブジェクトを作成します。 必要に応じて、複製を読み取り専用に指定します。

構文

  
Set rstDuplicate = rstOriginal.Clone (LockType)  

戻り値

Recordset オブジェクト参照を返します。

パラメーター

rstDuplicate
作成する複製の Recordset オブジェクトを特定するオブジェクト変数。

rstOriginal
複製する Recordset オブジェクトを特定するオブジェクト変数。

LockType
省略可能。 元の Recordset のロックの種類、または読み取り専用の Recordset のいずれかを指定する LockTypeEnum 値。 有効な値は adLockUnspecified または adLockReadOnly です。

注釈

特に、特定のレコードのセットに複数の現在のレコードを保持する場合、Clone メソッドを使用して、複数の重複する Recordset オブジェクトを作成します。 Clone メソッドを使う方が、元のオブジェクトと同じ定義を使う新しい Recordset オブジェクトを作成して開くよりも効率的です。

元の RecordsetFilter プロパティがある場合、クローンには適用されません。 結果をフィルター処理するには、新しい RecordsetFilter プロパティを設定します。 既存の Filter 値をコピーする最も簡単な方法は、次のように直接割り当てることです。

rsNew.Filter = rsOriginal.Filter  

新しく作成された複製の現在のレコードは、最初のレコードに設定されます。

1 つの Recordset オブジェクトに対して加えた変更は、カーソルの種類に関係なく、すべての複製に表示されます。 ただし、元の Recordset に対して Requery を実行すると、複製は元の Recordset と同期されなくなります。

元の Recordset を閉じても、そのコピーは閉じられません。また、コピーを閉じても、元のコピーや他のコピーは閉じられません。

Recordset オブジェクトは、ブックマークをサポートしている場合にのみ複製できます。 ブックマーク値は交換可能です。つまり、1 つの Recordset オブジェクトからのブックマーク参照は、すべての複製内の同じレコードを参照します。

トリガーされる一部の Recordset イベントは、すべての Recordset の複製でも発生します。 ただし、複製した Recordset の間で現在のレコードが異なることがあるため、その複製に対してイベントが有効でない場合があります。 たとえば、フィールドの値を変更すると、変更された Recordset とすべての複製で WillChangeField イベントが発生します。 複製された RecordsetWillChangeField イベントの Fields パラメーター (変更が行われなかった場合) は、複製の現在のレコードのフィールドを参照します。これは変更が発生した元の Recordset の現在のレコードとは異なる可能性があります。

次の表は、すべての Recordset イベントの完全な一覧です。 Clone メソッドを使って生成されたレコードセットの複製に対して、それらが有効であり、トリガーされるかどうかを示しています。

イベント 複製内でトリガーされる?
EndOfRecordset いいえ
FetchComplete いいえ
FetchProgress いいえ
FieldChangeComplete はい
MoveComplete いいえ
RecordChangeComplete はい
RecordsetChangeComplete いいえ
WillChangeField はい
WillChangeRecord はい
WillChangeRecordset いいえ
WillMove いいえ

適用対象

Recordset オブジェクト (ADO)

参照

Clone メソッドの例 (VB)
Clone メソッドの例 (VBScript)
Clone メソッドの例 (VC++)