Clone

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

構文

Set rstDuplicate = rstOriginal.Clone (LockType)

パラメータ

rstDuplicate
作成する Recordset オブジェクトの複製を表すオブジェクト変数を指定します。
rstOriginal
複製元の Recordset オブジェクトを表すオブジェクト変数を指定します。
LockType
省略可能です。複製元の Recordset オブジェクトのロックの種類を適用するか、または読み取り専用にするかを LockTypeEnum 値で指定します。有効な値は、adLockUnspecified または adLockReadOnly です。

説明

Clone メソッドを使うと、Recordset オブジェクトの複製を複数作成できます。特に、レコードセットの複数のカレント レコードを保持したい場合に、このメソッドを使用します。Clone メソッドを使うと、同じ定義を設定して新規 Recordset オブジェクトを作成して開くよりも効率的です。

元の Recordset オブジェクトの Filter プロパティは、クローンには適用されません。結果をフィルタするには、新しい Recordset の Filter プロパティを設定します。既存の Filter 値をコピーする最も簡単な方法は、次のように値を直接代入することです。(rsNew.Filter = rsOriginal.Filter)

作成したクローンのカレント レコードは、最初のレコードに設定されます。

1 つの Recordset オブジェクトに加えた変更は、カーソルの種類にかかわらず、すべてのクローンで参照できます。ただし、複製元の Recordset オブジェクトで Requery を実行した後は、クローンは複製元の Recordset オブジェクトと同期しなくなります。

複製元の Recordset を閉じても、そのクローンは開いたままです。また、クローンを閉じても、複製元またはほかのクローンは開いています。

ブックマークをサポートする Recordset オブジェクトだけがクローンを作成できます。ブックマークの値は共通です。したがって、1 つの Recordset オブジェクトのブックマークで、すべてのクローンの同じレコードを参照できます。

発生した Recordset イベントは、すべての Recordset クローンでも発生します。ただし、複製された Recordset 間でカレント レコードが異なる可能性があるため、クローンではそのイベントが無効である場合もあります。たとえば、1 つのフィールドの値を変更すると、変更された Recordset とすべてのクローンで WillChangeField イベントが発生します。変更された Recordset の WillChangeField の Fields パラメータは変更された正しいフィールドを返しますが、複製された Recordset の Fields パラメータではそうならない場合があります。複製された (変更されていない) Recordset の WillChangeField イベントの Fields パラメータは、単にそのクローンのカレント レコードのフィールドを参照するだけであり、そのレコードは、変更が発生した元の Recordset のカレント レコードとは異なる可能性があります。


CancelUpdate

(PWS4 IIS4 IIS5)
CancelUpdate — Update メソッドを呼び出す前に行った、Recordset オブジェクトのカレント行または新規行、または Record オブジェクトの Fields コレクションに加えたすべての変更をキャンセルします。

構文

record.CancelUpdate

パラメータ

record
Recordset オブジェクを指定します。

説明

CancelUpdate メソッドを使って、カレント行に加えた変更をすべてキャンセルしたり、新規に追加した行を破棄します。Update メソッドを呼び出した後は、カレント行または新規行に加えた変更をキャンセルすることはできません。ただし、RollbackTrans メソッドでロールバックできるトランザクションの一部か、またはバッチ更新の一部である場合は除きます。バッチ更新の場合は、CancelUpdate メソッドまたは CancelBatch メソッドで Update をキャンセルできます。

新規行を追加しているときに CancelUpdate メソッドを呼び出すと、AddNew を呼び出す前にカレントであった行がカレント行になります。

編集モードでカレント レコードから移動する (たとえば、Move、NextRecordset、Close などを使用する) 場合は、CancelUpdate を使用してすべての保留中の変更をキャンセルすることができます。データ ソースの更新が成功しなかった場合 (たとえば、参照整合性違反によって削除の試みが失敗したことにより、Delete の呼び出しの後に Recordset が編集モードのままになった場合など) には、この処理が必要になる場合があります。

Recordの場合

CancelUpdate メソッドは、Field オブジェクトの保留中の挿入または削除をすべてキャンセルし、既存のフィールドの保留中の更新をキャンセルして元の値に戻します。Fields コレクションのすべてのフィールドの Status プロパティは、adFieldOK に設定されます。


CancelBatch

(PWS4 IIS4 IIS5)
CancelBatch — 保留中のバッチ更新をキャンセルします。

構文

recordset.CancelBatch AffectRecords

パラメータ

AffectRecords
省略可能です。CancelBatch メソッドで操作するレコード数を示す AffectEnum 値を指定します。

戻り値

値を返しません。

説明

CancelBatch メソッドを使って、バッチ更新モードの Recordset の保留中の更新をすべてキャンセルします。即時更新モードの Recordset では、adAffectCurrent を指定せずに CancelBatch メソッドを呼び出すと、エラーが発生します。

カレントレコードの編集中または新規レコードの追加中に CancelBatch メソッドを呼び出すと、まず、CancelUpdate メソッドが呼び出され、キャッシュされているすべての変更がキャンセルされます。その後で、Recordset の保留中の変更がすべてキャンセルされます。

CancelBatch メソッドの呼び出し後、新規レコードを追加中に呼び出した場合は特に、カレントレコードを特定できない可能性があります。このため、CancelBatch メソッドの実行後に、カレント レコードの位置を Recordset の特定の位置に設定することをお勧めします。たとえば、MoveFirst メソッドを呼び出します。

基になるデータとの競合 (たとえば、ほかのユーザーによってレコードが既に削除されている場合) が原因で未処理の更新がキャンセルできない場合、プロバイダは Errors コレクションに警告を返しますがプログラムの実行は停止しません。要求したすべてのレコードで競合が発生した場合にのみ、実行時エラーが発生します。競合しているレコードを特定するには、Filter プロパティ (adFilterAffectedRecords) と Status プロパティを使用します。


Cancel

(PWS4 IIS4 IIS5)
Cancel — 非同期メソッド呼び出しのうち、保留中のものの実行をキャンセルします。

構文

object.Cancel

パラメータ

object
Recordset オブジェクを指定します。

設定値と戻り値

Cancel メソッドを使って、非同期メソッド (adAsyncConnect、adAsyncExecute、または adAsyncFetch のオプションを指定して呼び出すメソッド) の呼び出しの実行を中止します。

説明

Recordset オブジェクを指定した場合、Openメソッドが中止されます。


AddNew

(PWS4 IIS4 IIS5)
AddNew — 更新可能な Recordset オブジェクトの新規レコードを作成します。

構文

recordset.AddNew FieldList, Values

パラメータ

recordset
Recordset オブジェクトを指定します。
FieldList
省略可能です。新しいレコード中のフィールド名を指定します。複数のフィールド名を指定するには、フィールド名、または位置を表す値の並びを配列として指定します。
Values
省略可能です。新規レコードのフィールド値を指定するか、または複数のフィールドの値を表す配列を指定します。Fieldlist が配列の場合、Values も同じ数の要素を持つ配列である必要があります。そうでない場合は、エラーが発生します。Fieldlist の配列と Values の配列で、フィールド名の順序とフィールド値の順序を一致させる必要があります。

説明

AddNew メソッドを使って、新規レコードの作成と初期化を行います。現在の Recordset オブジェクトにレコードを追加できるかどうかを確認するには、Supports メソッドに adAddNew (CursorOptionEnum 値) を指定して使用します。

AddNew メソッドを呼び出した後は新規レコードがカレント レコードになり、Update メソッドを呼び出した後もそのままカレント レコードになります。ブックマークをサポートしていない Recordset オブジェクトでは、別のレコードに移動すると、新規レコードにアクセスできなくなることがあります。カーソルの種類によっては、新規レコードにアクセスするために、Requery メソッドを呼び出す必要があります。

カレント レコードの編集中または新規レコードの追加中に AddNew メソッドを呼び出すと、ADO によって自動的に Update メソッドが呼び出されてすべての変更が保存され、その後で新規レコードが作成されます。

AddNew メソッドの動作は、Recordset オブジェクトの更新モード、および Fieldlist 引数と Values 引数を指定するかどうかによって異なります。

” 即時更新モード” (Update メソッドを呼び出したときに、基になるデータ ソースに変更が書き込まれる) では、Fieldlist 引数と Values 引数を指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd (EditModeEnum 値) に設定されます。フィールド値のすべての変更はローカル メモリにキャッシュされます。Update メソッドを呼び出すと、新規レコードがデータベースに書き込まれ、EditMode プロパティが adEditNone (EditModeEnum 値) に再設定されます。Fieldlist 引数と Values 引数を指定した場合は、ADO によって新規レコードは直ちにデータベースに書き込まれ (Update メソッドの呼び出しは不要)、EditMode プロパティの値は adEditNone のまま変更されません。

“バッチ更新モード” (変更はキャッシュに格納され、UpdateBatch メソッドを呼び出したときに、基になるデータ ソースに一括で書き込まれる) では、Fieldlist 引数と Values 引数を指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd に設定されます。フィールド値のすべての変更はローカルメモリにキャッシュされます。Update メソッドを呼び出すと、現在の Recordset に新規レコードが追加され、EditMode プロパティが adEditNone に再設定されます。ただし、UpdateBatch メソッドを呼び出すまでは、基になるデータベースに変更は書き込まれません。Fieldlist 引数と Values 引数を指定した場合は、ADO によって新規レコードがプロバイダに送られ、キャッシュに格納されます。基になるデータベースに新規レコードを書き込むには、UpdateBatch メソッドを呼び出す必要があります。


StayInSync

(PWS4 IIS4 IIS5)
StayInSync — 階層 Recordset オブジェクトで、親の行の位置が移動したときに、基になる子のレコード (つまり、”チャプタ”) への参照を変更するかどうかを示します。

構文

object.StayInSync

パラメータ

object
Recordset オブジェクを指定します。

設定値と戻り値

ブール型 (Boolean) の値を設定します。また、値の取得も可能です。既定値は True です。True の場合は、親の Recordset オブジェクトの行が変更されるとチャプタが更新されます。False の場合は、親の Recordset オブジェクトの行が変更されても、チャプタは以前のチャプタのデータを参照し続けます。

説明

このプロパティは、Microsoft Data Shaping Service for OLE DB によってサポートされるような階層 Recordset に適用されます。また、このプロパティは、子の Recordset を取得する前に親の Recordset に設定しておく必要があります。このプロパティにより、階層 Recordset 内での移動が簡単になります。


Status

(PWS4 IIS4 IIS5)
State — 対象になるすべてのオブジェクトについて、そのオブジェクトが開いているか、または閉じているかを示します。
非同期メソッドを実行している対象の全オブジェクトについて、そのオブジェクトが現在、接続、実行、取得のどの状態であるかを示します。

構文

object.Status

パラメータ

object
Recordset オブジェクを指定します。

戻り値

ObjectStateEnum 値となる長整数型 (Long) の値を返します。既定値は adStateClosed です。

説明

State プロパティを使えば、オブジェクトの現在の状態をいつでも調べることができます。

オブジェクトの State プロパティの値は組み合わせることができます。たとえば、ステートメントが実行中のときは、プロパティの値は adStateOpen と adStateExecuting の組み合わせになります。

State プロパティは読み取り専用です。


State

(PWS4 IIS4 IIS5)
State — 対象になるすべてのオブジェクトについて、そのオブジェクトが開いているか、または閉じているかを示します。

非同期メソッドを実行している対象の全オブジェクトについて、そのオブジェクトが現在、接続、実行、取得のどの状態であるかを示します。

構文

object.State

パラメータ

object
Recordset オブジェクを指定します。

戻り値

ObjectStateEnum 値となる長整数型 (Long) の値を返します。既定値は adStateClosed です。

説明

State プロパティを使えば、オブジェクトの現在の状態をいつでも調べることができます。

オブジェクトの State プロパティの値は組み合わせることができます。たとえば、ステートメントが実行中のときは、プロパティの値は adStateOpen と adStateExecuting の組み合わせになります。

State プロパティは読み取り専用です。


Source

(PWS4 IIS4 IIS5)
Source — Recordset オブジェクトのデータ ソースを示します。

構文

object.Source

パラメータ

object
Recordset オブジェクを指定します。

設定値と戻り値

文字列型 (String) の値または Command オブジェクトへの参照を設定します。Recordset のソースを表す文字列型 (String) のみが返されます。

説明

Recordset オブジェクトのデータ ソースを指定するには、Source プロパティを使います。Source プロパティには、Command オブジェクト変数、SQL ステートメント、ストアド プロシージャ、またはテーブル名を設定できます。

Source プロパティを Command オブジェクトに設定すると、Recordset オブジェクトの ActiveConnection プロパティは指定された Command オブジェクトの ActiveConnection プロパティの値を継承します。ただし、Source プロパティを読み込んでも Command オブジェクトは返されず、代わりに Source プロパティで設定した Command オブジェクトの CommandText プロパティが返されます。

Source プロパティが SQL ステートメント、ストアド プロシージャ、またはテーブル名の場合、Open メソッドを呼び出して適切な Options 引数を渡すことにより、パフォーマンスを最適化することができます。

Source プロパティは、Recordset オブジェクトが閉じている場合は読み取り/書き込み可能になり、開いている Recordset オブジェクトでは読み取り専用になります。


Sort

(PWS4 IIS4 IIS5)
Sort — Recordset をソートする 1 つ以上のフィールド名、および各フィールドのソート順序が昇順か降順かを示します。

構文

object.Sort

パラメータ

object
Recordset オブジェクを指定します。

設定値と戻り値

ソートする Recordset のフィールド名を表す文字列型 (String) の値を設定します。また、値の取得も可能です。それぞれの名前はカンマで区切ります。名前の後には、空白、およびキーワードとして、フィールドを昇順でソートする ASC または降順でソートする DESC を追加できます。既定では、キーワードを指定しない場合、フィールドは昇順でソートされます。

説明

このプロパティでは、CursorLocation プロパティに adUseClient を設定する必要があります。インデックスがない場合、Sort プロパティに指定された各フィールドに対して一時インデックスが作成されます。

データは、物理的に並べ替えられるわけではなく、インデックスで指定されている順序でアクセスされるだけなので、ソート処理は効率的です。

Sort プロパティに空文字列を設定すると、行は元の順序にリセットされ、一時インデックスは削除されます。既存のインデックスは削除されません。

Recordset に、[firstName]、[middleInitial]、[lastName] という 3 つのフィールドがあるとします。Sort プロパティに文字列 “lastName DESC, firstName ASC” を設定すると、Recordset は名字で降順にソートされ、次に名前で昇順にソートされます。ミドル ネームは無視されます。

キーワード ASC および DESC と競合するので、フィールド名に “ASC” または “DESC” は指定できません。名前が競合する場合は、Recordset を返すクエリで AS キーワードを使って、競合する名前のフィールドに別名を指定してください。