Recordset オブジェクト (ADO)
ベース テーブルのレコードセット全体、または実行されたコマンドの結果を表します。 Recordset オブジェクトは、常に、セット内の 1 つのレコードのみを現在のレコードとして参照します。
備考
Recordset オブジェクトを使用して、プロバイダーからのデータを操作します。 ADO を使用する場合は、Recordset オブジェクトを使用してデータをほぼ完全に操作します。 すべての Recordset オブジェクトは、レコード (行) とフィールド (列) で構成されます。 プロバイダーでサポートされている機能によっては、一部の Recordset メソッドまたはプロパティを使用できない場合があります。
ADODB。Recordset は、Recordset オブジェクトの作成に使用する ProgID です。 古い ADOR を参照する既存のアプリケーション。Recordset ProgID は再コンパイルせずに引き続き機能しますが、新しい開発では ADODB を参照する必要があります。Recordset。
ADO では、次の 4 種類のカーソルが定義されています。
動的カーソル 他のユーザーによる追加、変更、削除を表示できます。では、ブックマークに依存しない Recordset 内のすべての種類の移動が許可されます。プロバイダーがブックマークをサポートしている場合は、ブックマークを許可します。
Keyset カーソル 他のユーザーが追加したレコードが表示されなくなり、他のユーザーが削除したレコードへのアクセスを妨げる点を除き、動的カーソルのように動作します。 他のユーザーによるデータの変更は引き続き表示されます。 これは常にブックマークをサポートするため、Recordset内のすべての種類の移動を許可します。
静的カーソル データの検索やレポートの生成に使用する一連のレコードの静的コピーを提供します。は常にブックマークを許可するため、Recordsetを介してのすべての種類の移動を許可します。 他のユーザーによる追加、変更、または削除は表示されません。 これは、Recordset オブジェクトをクライアント側 開くときに使用できる唯一の種類のカーソルです。
順方向専用カーソルRecordset内をスクロールするだけで済みます。 他のユーザーによる追加、変更、または削除は表示されません。 これにより、Recordsetを 1 つだけ通過させる必要がある場合のパフォーマンスが向上します。
Recordset を開いてカーソルの種類を選択する前に、CursorType プロパティを設定するか、Open メソッドを使用して CursorType 引数を渡します。 一部のプロバイダーでは、すべてのカーソルの種類がサポートされていない場合があります。 プロバイダーのドキュメントを確認します。 カーソルの種類を指定しない場合、ADO は既定で順方向専用カーソルを開きます。
Recordsetを開くために CursorLocation プロパティが adUseClient に設定されている場合、返される Recordset オブジェクトでは、Field オブジェクトの UnderlyingValue プロパティは使用できません。 一部のプロバイダー (Microsoft SQL Server と組み合わせて Microsoft ODBC Provider for OLE DB など) と共に使用する場合は、Open メソッドで接続文字列を渡すことで、以前に定義した Connection オブジェクトとは別に、Recordset オブジェクトを作成できます。 ADO では引き続き Connection オブジェクトが作成されますが、そのオブジェクトはオブジェクト変数に割り当てられません。 ただし、同じ接続を介して複数 Recordset オブジェクトを開く場合は、Connection オブジェクトを明示的に作成して開く必要があります。これにより、Connection オブジェクトがオブジェクト変数に割り当てられます。 Recordset オブジェクトを開くときにこのオブジェクト変数を使用しない場合、同じ接続文字列を渡した場合でも、新しい Recordsetごとに新しい Connection オブジェクトが作成されます。
Recordset オブジェクトは必要な数まで作成できます。
Recordsetを開くと、現在のレコードが最初のレコード (存在する場合) に配置され、BOF プロパティと EOF プロパティが Falseに設定されます。 レコードがない場合、の BOF および EOF プロパティの設定は True 。
MoveFirst、MoveLast、MoveNext、および MovePrevious メソッド 使用できます。Move メソッド。および AbsolutePosition、AbsolutePage、および Filter プロパティを使用して、プロバイダーが関連する機能をサポートしていると仮定して、現在のレコードの位置を変更します。 前方 レコードセット オブジェクトは、MoveNext メソッドのみをサポートします。 Move メソッドを使用して各レコードにアクセスする (または Recordsetを列挙する) 場合は、BOF プロパティと EOF プロパティを使用して、Recordsetの先頭または末尾を超えて移動したかどうかを判断できます。
Recordset オブジェクトの機能を使用する前に、オブジェクトの Supports メソッドを呼び出して、その機能がサポートされているか使用可能であることを確認する必要があります。
Supports メソッドが false を返す場合は、この機能を使用しないでください。 たとえば、MovePrevious メソッドは、Recordset.Supports(adMovePrevious)
が True 返す場合にのみ使用できます。 そうしないと、Recordset オブジェクトが閉じられ、インスタンスで機能が使用できなくなった可能性があるため、エラーが発生します。 関心のある機能がサポートされていない場合は、サポート も false を返します。 この場合は、Recordset オブジェクトで対応するプロパティまたはメソッドを呼び出さないようにする必要があります。
Recordset オブジェクトは、即時更新とバッチ処理の 2 種類の更新をサポートできます。 即時更新では、Update メソッドを呼び出すと、データに対するすべての変更が基になるデータ ソースに直ちに書き込まれます。 AddNew と Update メソッドを使用して値の配列をパラメーターとして渡し、レコード内の複数のフィールドを同時に更新することもできます。
プロバイダーがバッチ更新をサポートしている場合は、複数のレコードに対するプロバイダー キャッシュの変更を行い、UpdateBatch メソッドを使用して 1 回の呼び出しでデータベースに送信できます。 これは、AddNew、Update、および Delete メソッドで行われた変更に適用されます。 UpdateBatch メソッドを呼び出した後、Status プロパティを使用して、データ競合を解決するために確認できます。
手記
Command オブジェクトを使用せずにクエリを実行するには、Recordset オブジェクトの Open メソッドにクエリ文字列を渡します。 ただし、コマンド テキストを永続化して再実行する場合、またはクエリ パラメーターを使用する場合は、Command オブジェクトが必要です。
モード プロパティは、アクセス許可を制御します。
Fields コレクションは、Recordset オブジェクトの既定のメンバーです。 その結果、次の 2 つのコード ステートメントは同等です。
Debug.Print objRs.Fields.Item(0) ' Both statements print
Debug.Print objRs(0) ' the Value of Item(0).
Recordset オブジェクトがプロセス間で渡されると、行セット 値のみがマーシャリングされ、Recordset オブジェクトのプロパティは無視されます。 マーシャリングを解除すると、行セット は、新しく作成された Recordset オブジェクトにアンパックされます。このオブジェクトのプロパティも既定値に設定されます。
Recordset オブジェクトは、スクリプトに安全です。
このセクションには、次のトピックが含まれています。
関連項目
Connection オブジェクト (ADO)
Fields コレクション (ADO)
プロパティ コレクション (ADO)
付録 A: プロバイダー