ADO 2.5 API リファレンス

Recordset オブジェクト

ベース テーブルのレコード セット全体、またはコマンドの実行によって返された結果を表します。Recordset オブジェクトでは、常にレコードセット内の 1 つのレコードのみをカレント レコードとして参照します。




解説

Recordset オブジェクトを使って、プロバイダからのデータを操作します。ADO の使用時には、Recordset オブジェクトを使ってほとんどのデータ処理を行います。すべての Recordset オブジェクトは、レコード (行) およびフィールド (列) で構成されます。プロバイダがサポートする機能によっては、一部の Recordset メソッドまたはプロパティが使用できない場合があります。

ADODB.Recordset は、Recordset オブジェクトの作成時に使う ProgID です。古い ADOR.Recordset ProgID を参照する既存のアプリケーションはリコンパイルしなくても機能しますが、新しく開発されたアプリケーションでは、ADODB.Recordset を参照するようにしてください。

ADO では、4 種類のカーソル タイプを定義しています。

Recordset オブジェクトのカーソル タイプを選択するには、Recordset オブジェクトを開く前に CursorType プロパティを設定するか、Open メソッドを使って CursorType 引数を渡します。一部のカーソル タイプしかサポートしていないプロバイダもあります。詳細については、プロバイダのマニュアルを参照してください。カーソル タイプを指定しない場合、既定では前方スクロール カーソルが開きます。

CursorLocation プロパティを adUseClient に設定して Recordset オブジェクトを開く場合、返された Recordset オブジェクトでは、Field オブジェクトの UnderlyingValue プロパティは無効になります。Microsoft SQL Server と連動する Microsoft ODBC Provider for OLE DB などのプロバイダを利用する場合、Open メソッドを使って接続文字列を渡すと、定義済みの Connection オブジェクトとは関係なく、Recordset オブジェクトを作成できます。この場合も Connection オブジェクトが作成されますが、そのオブジェクトは、オブジェクト変数には代入されません。ただし、同じ接続で複数の Recordset オブジェクトを開く場合は、Connection オブジェクトを明示的に作成して開く必要があります。この操作により Connection オブジェクトがオブジェクト変数に代入されます。このオブジェクト変数を使わずに Recordset オブジェクトを開いた場合、同じ接続文字列を渡しても、新規 Recordset オブジェクトごとに新規 Connection オブジェクトが作成されます。

Recordset オブジェクトは必要なだけ作成できます。

Recordset オブジェクトを開くと、カレント レコードが最初のレコードの位置に移動し、BOF プロパティおよび EOF プロパティが False に設定されます。レコードが存在しない場合は、BOF プロパティおよび EOF プロパティの設定値が True になります。

プロバイダが必要な機能をサポートしている場合、カレント レコードは、MoveFirst メソッド、MoveLast メソッド、MoveNext メソッド、MovePrevious メソッド、Move メソッド、AbsolutePosition プロパティ、AbsolutePage プロパティ、および Filter プロパティを使って移動できます。前方スクロール タイプの Recordset オブジェクトは、MoveNext メソッドのみをサポートします。Move メソッドを使って各レコードの参照または Recordset の列挙を行う場合、BOF プロパティおよび EOF プロパティを使えば、Recordset オブジェクトの先頭または末尾を超えているかどうかを確認できます。

Recordset オブジェクトは、即時更新とバッチ更新の 2 種類の更新方法をサポートしています。即時更新では、Update メソッドを呼び出すと、データへのすべての変更が直ちに、基になるデータ ソースに書き込まれます。また、AddNew メソッドおよび Update メソッドを使って値の配列をパラメータとして渡すと、1 レコード中の複数のフィールドを同時に更新できます。

プロバイダがバッチ更新をサポートしている場合、UpdateBatch メソッドを使うと、データベースに対する 1 回の呼び出しを行うだけで、プロバイダで 1 つ以上のレコードの変更をキャッシュし、送信することができます。この操作は AddNew メソッド、Update メソッド、および Delete メソッドによる変更に適用できます。UpdateBatch メソッドを呼び出した後で Status プロパティを使い、データの競合があるかどうかを調べて問題があれば解決することができます。

注意   Command オブジェクトを使わずにクエリを実行するには、クエリ文字列を Recordset オブジェクトの Open メソッドに渡します。ただし、コマンド テキストを永続させて再実行する場合、またはクエリ パラメータを使う場合は、Command オブジェクトが必要です。

Mode プロパティは、アクセス権限を制御します。

Fields コレクションは、Recordset オブジェクトの既定メンバです。したがって、次の 2 つのコード ステートメントは等価です。

Debug.Print objRs.Fields.Item(0)  ' Both statements print 
Debug.Print objRs(0)              '  the Value of Item(0).

関連項目

Recordset オブジェクトのプロパティ、メソッド、およびイベント | Connection オブジェクト | Fields コレクション | Properties コレクション | ADO でのプロバイダの使用

© 1998-2003 Microsoft Corporation. All rights reserved.