Open メソッド (ADO Recordset)

       

カーソルを開きます。

構文

recordset.Open Source, ActiveConnection, CursorType, LockType, Options

パラメータ

Source   省略可能です。有効な Command オブジェクト、SQL ステートメント、テーブル名、ストアド プロシージャの呼び出し、URL、または永続的に保存された Recordset が格納されているファイル名または Stream オブジェクト名の評価に使うバリアント型 (Variant) の値を指定します。

ActiveConnection   省略可能です。有効な Connection オブジェクトのオブジェクト変数の評価に使うバリアント型 (Variant) の値、または ConnectionString パラメータを含む文字列型 (String) の値を指定します。

CursorType   省略可能です。プロバイダRecordset を開くときに使うカーソル タイプを決めるための CursorTypeEnum 値を指定します。既定値は adOpenForwardOnly です。

LockType   省略可能です。プロバイダが Recordset を開くときに使うロック (同時実行) の種類を決めるための LockTypeEnum 値を指定します。既定値は adLockReadOnly です。

Options   省略可能です。Source 引数が Command オブジェクト以外のソースを表す場合にプロバイダが Source 引数を評価する方法、または以前に保存されていたファイルから Recordset を復元する必要があることを示す長整数型 (Long) の値を指定します。1 つまたは複数の CommandTypeEnum 値または ExecuteOptionEnum 値を指定できます。

注意   永続化された Recordset を含む Stream から Recordset を開く場合、ExecuteOptionEnum 値の adAsyncFetchNonBlocking を使用しても無効です。この場合、フェッチは同期であり、ブロッキングが行われます。

解説

Recordset オブジェクトで Open メソッドを使うと、ベース テーブルからのレコード、クエリの結果、または以前に保存された Recordset を表すカーソルを開くことができます。

Source 引数は、Command オブジェクト変数、SQL ステートメント、ストアド プロシージャ、テーブル名、URL、ファイルの完全なパス名のいずれかでデータ ソースを指定する場合に使用します。Source にファイルのパス名を指定する場合は、フル パス ("c:\dir\file.rst")、相対パス ("..\file.rst")、または URL ("http://files/file.rst") で指定することができます。

ActiveConnection 引数は ActiveConnection プロパティに対応しており、Recordset オブジェクトを開く接続を指定します。この引数に接続の定義を指定した場合、ADO では、指定されたパラメータを使って新規接続を開きます。Recordset を開いて別のプロバイダに更新を送出した後で、このプロパティの値を変更することができます。また、このプロパティを Nothing (Microsoft Visual Basic) に設定すると、その Recordset をプロバイダから切断することができます。

Recordset オブジェクトのプロパティに対応するその他の引数 (SourceCursorType、および LockType) と、プロパティの関係は次のとおりです。

Source 引数に Command オブジェクトを指定する場合に、同時に ActiveConnection 引数を指定すると、エラーが発生します。Command オブジェクトの ActiveConnection プロパティは、あらかじめ有効な Connection オブジェクトまたは接続文字列に設定しておく必要があります。

Source 引数に Command オブジェクト以外のソースを指定する場合は、Options 引数を使って Source 引数の評価を最適化することができます。Options 引数が指定されていない場合は、パフォーマンスが低下する可能性があります。これは、引数が SQL ステートメント、ストアド プロシージャ、URL、テーブル名のいずれであるかを判断するために、プロバイダを呼び出す必要があるためです。指定する Source の種類がわかっている場合は、Options 引数を設定することにより、該当するコードに直接ジャンプすることができます。Options 引数が Source の種類と一致しない場合は、エラーが発生します。

Source 引数に Stream オブジェクトを指定する場合は、ほかの引数は指定しないでください。そのようにすると、エラーが発生します。Stream から Recordset を開く場合は、ActiveConnection の情報は保持されません。

Recordset に接続が関連付けられていない場合、Options 引数の既定値は adCmdFile です。代表的な例では、永続的に保存された Recordset オブジェクトの場合がこれに該当します。

データ ソースからレコードが返されない場合、プロバイダは BOF プロパティと EOF プロパティの両方を True に設定し、カレント レコードの位置は未定義になります。カーソル タイプによっては、この空の Recordset オブジェクトに新規データを追加することができます。

開いている Recordset オブジェクトでの操作が完了したら、Close メソッドを使って関連するすべてのシステム リソースを解放します。オブジェクトを閉じてもメモリからは削除されないので、そのオブジェクトのプロパティ設定を変更し、Open メソッドを使ってもう一度開くことができます。オブジェクトをメモリから完全に削除するには、オブジェクト変数に Nothing を設定します。

ActiveConnection プロパティを設定する前に、オペランドなしで Open メソッドを呼び出して、RecordsetFields コレクションにフィールドを追加することによって作成された Recordset のインスタンスを作成します。

CursorLocation プロパティを adUseClient に設定している場合は、2 とおりの方法で非同期に行を取得することができます。推奨される方法は、OptionsadAsyncFetch に設定することです。もう 1 つの方法として、Properties コレクションで "非同期行セット処理" ダイナミック プロパティを使用することもできますが、Options パラメータを adAsyncFetch に設定していない場合は、関連して取得されたイベントが失われる可能性があります。

注意   MS Remote プロバイダのバックグラウンド フェッチは、Open メソッドの Options パラメータを通してのみサポートされます。