Recordset オブジェクト (ADO)

基本テーブルのレコードセット全体、または実行されたコマンドの結果を表します。 レコードセット オブジェクトは、 いつでも セット内の 1 つのレコードのみを現在のレコードとして参照します。

注釈

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

ADODB。レコードセットは、レコードセット オブジェクトの作成に使用する 必要 がある ProgID です。 古い を参照する既存のアプリケーション。レコードセット ProgID は再コンパイルせずに引き続き動作しますが、新しい開発では ADODB を参照する必要があります。レコード。

ADO には、次の 4 種類のカーソルが定義されています。

  • 動的カーソル 他のユーザーによる追加、変更、および削除を表示できます。では、ブックマークに依存しない レコード セット内のすべての種類の移動を許可します。プロバイダーがブックマークをサポートしている場合は、ブックマークを許可します。

  • キーセット カーソル 動的カーソルのように動作します。ただし、他のユーザーが追加したレコードを表示したり、他のユーザーが削除したレコードにアクセスしたりすることを防ぐ場合を除く。 他のユーザーによるデータ変更は引き続き表示されます。 常にブックマークがサポートされるため、レコードセット を介したすべての種類の移動が 可能です

  • 静的カーソル データの検索やレポートの生成に使用する一連のレコードの静的コピーを提供します。では常にブックマークが許可されるため、レコードセット を介したすべての種類の移動が 許可されます。 他のユーザーによる追加、変更、または削除は表示されません。 これは、クライアント側の Recordset オブジェクトを開く場合に許可されるカーソル の唯一の種類 です。

  • 順方向専用カーソル レコードセット を前方にのみスクロール できます。 他のユーザーによる追加、変更、または削除は表示されません。 これにより、レコードセット を 1 回だけ通過させる必要がある場合のパフォーマンスが向上 します

レコードセット を開く前に CursorTypeプロパティを設定してカーソルの種類を選択するか 、Openメソッドで CursorType 引数を渡します。 一部のプロバイダーでは、すべてのカーソルの種類がサポートされていません。 プロバイダーのドキュメントを確認します。 カーソルの種類を指定しない場合、ADO は既定で順方向専用カーソルを開きます。

CursorLocation プロパティが adUseClient に設定され、レコード セットを開く場合、返される Recordset オブジェクトでは Fieldオブジェクトの UnderlyingValue プロパティを 使用 できません。 一部のプロバイダー (microsoft ODBC Provider for OLE DB など) と Microsoft SQL Server を組み合わせて使用する場合は 、Open メソッドを使用して接続文字列を渡して、以前に定義した Connection オブジェクトとは別に レコードセット オブジェクトを作成できます。 ADO は引き続 き Connection オブジェクトを作成しますが、そのオブジェクトをオブジェクト変数に割り当てない。 ただし、同じ接続で複数の Recordset オブジェクトを開く場合は、Connection オブジェクトを明示的に作成して 開く必要 があります。これにより、Connection オブジェクト がオブジェクト 変数に割り当てされます。 レコードセット オブジェクトを開く際にこのオブジェクト変数を使用しない場合、同じ接続文字列を渡した場合でも、ADO は新しいレコードセットごとに新しい Connection オブジェクトを作成します。

必要な数の Recordset オブジェクト を作成できます。

レコード セットを開く場合、現在のレコードは最初のレコード (指定されている場合) に配置され 、BOFプロパティと EOFプロパティは False に設定 されます。 レコードがない場合 、BOF プロパティと EOF プロパティ設定True になります

MoveFirstメソッド 、MoveLast メソッド 、MoveNext メソッド 、MovePrevious メソッドを使用できます。Move メソッド。プロバイダーが 関連する機能をサポートすると仮定して、現在のレコードの位置を変更するための AbsolutePosition プロパティ 、AbsolutePageプロパティ、および Filterプロパティ。 前方専用 レコードセット オブジェクトは、MoveNext メソッドのみをサポートします。 Move メソッドを使用して各レコードにアクセスする (またはレコードセットを列挙する) 場合は 、BOF プロパティと EOF プロパティを使用して、レコードセット の先頭または末尾を越えたかどうかを判断 できます

Recordset オブジェクトの機能を使用する前に、 オブジェクトの Supports メソッドを呼び出して、機能がサポートまたは使用可能な機能を確認する必要があります。 Supports メソッドが false を返す場合 は、この機能 を使用することはできません。 たとえば、True を返す 場合にのみ、MovePrevious Recordset.Supports(adMovePrevious) メソッドを使用 できます。 それ以外の場合は、 レコード セット オブジェクトが閉じ、機能がインスタンスで使用できなくなったため、エラーが発生します。 関心のある機能がサポートされていない場合 、Support は false も返します。 この場合は、Recordset オブジェクトで対応するプロパティまたはメソッドを呼び出すのを 避ける必要 があります。

レコード セット オブジェクトは、イミディエイトとバッチ処理の 2 種類の更新をサポートできます。 即時更新では、Update メソッドを呼び出した後、データに対する変更はすべて、基になるデータ ソースに直ちに 書き込 まれます。 AddNewメソッドと Update メソッドを使用して値の配列をパラメーターとして渡し、レコード内の複数のフィールドを同時に更新することもできます。

プロバイダーがバッチ更新をサポートしている場合は、プロバイダーキャッシュを複数のレコードに変更し 、UpdateBatch メソッドを使用してデータベースへの 1 回の呼び出しで転送できます。 これは 、AddNew メソッド、Update メソッド、Delete メソッドを 使用して 行われた 変更に 適用されます。 UpdateBatch メソッドを呼び出した後 、Statusプロパティを使用して、それらを解決するためにデータの競合を確認できます。

注意

Command オブジェクトを使用せずにクエリ を実行するには、レコード セット オブジェクトの 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 オブジェクトのプロパティは無視されます。 マーシャル解除中に、行セットは新しく作成された Recordset オブジェクトにアンパックされます。このオブジェクトでは、そのプロパティも既定値に設定されます。

Recordset オブジェクト はスクリプトを作成しても安全です。

このセクションでは、次のトピックについて説明します。

参照

接続オブジェクト (ADO)
Fields コレクション (ADO)
Properties コレクション (ADO)
付録 A: プロバイダー