CDaoRecordset クラス
更新 : 2007 年 11 月
データ ソースから選択された 1 組のレコードセットを表現します。
class CDaoRecordset : public CObject
解説
CDaoRecordset オブジェクトは、一般的に "レコードセット" と呼ばれ、次の 3 つのフォームで使用できます。
テーブル タイプのレコードセットは、1 つのデータベース テーブルのレコードのチェック検証、追加、変更、および削除を行うために使用できるベース テーブルを表します。
ダイナセット タイプのレコードセットは、更新できるレコードを持つクエリの結果です。これらのレコードセットは、基になるデータベース テーブルのレコードのチェック、追加、変更、および削除を行うために使用できるレコードの集約です。ダイナセット タイプのレコードセットは、データベースの 1 つ以上のテーブルのフィールドを持つことができます。
スナップショット タイプのレコードセットは、データの検索、レポートの生成などに使用できるレコードの集約の静的コピーです。これらのレコードセットは、データベースの 1 つ以上のテーブルのフィールドを持つことができますが、更新はできません。
どの形式のレコードセットも、レコードセットが開かれたときに固定されるレコードの集約を表します。テーブル タイプのレコードセット、またはダイナセット タイプのレコードセットでレコードにスクロールすると、レコードセットが開かれた後に、ほかのユーザー、またはアプリケーションのほかのレコードセットのどちらかにより行われた変更を反映します。スナップショット タイプのレコードセットは、更新できません。CDaoRecordset を直接使用することも、CDaoRecordset からアプリケーション固有のレコードセット クラスを派生させることもできます。その後、次のことが実行できます。
レコード間のスクロール。
インデックスを設定して、Seek を使用したレコードの高速検索 (テーブル タイプのレコードセットのみ)。
"<"、"<="、"="、"> ="、または ">" を使用した文字列の比較によるレコードの検索 (ダイナセット タイプとスナップショット タイプ)。
レコードの更新と、ロッキング モードの指定 (スナップショット タイプのレコードセットを除く)。
データ ソースで利用できるレコードからどのレコードを選択するかを制限するためのレコードセットのフィルタ。
レコードセットの並べ替え。
レコードセットをパラメータ化し、実行時までは不明な情報を使用して選択をカスタマイズします。
CDaoRecordset クラスには、CRecordset クラスと同じインターフェイスが用意されています。CDaoRecordset クラスは、OLE をベースとした DAO (データ アクセス オブジェクト) を使用してデータベースにアクセスする点が違います。CRecordset クラスは、オープン データ コネクティビティ (ODBC) と、その DBMS の ODBC ドライバを使用して、DBMS にアクセスします。
メモ : |
---|
DAO データベース クラスは、オープン データベース コネクティビティ (ODBC: Open Database Connectivity) に基づいている MFC データベース クラスとは性質が異なります。すべての DAO データベース クラス名には、"CDao" というプリフィックスが付きます。以前のように、DAO クラスを使用して、ODBC データ ソースにアクセスすることもできます。DAO クラスは Microsoft Jet データベース エンジン固有のクラスであるため、一般により充実した機能を提供できます。 |
CDaoRecordset を直接使用することも、CDaoRecordset からクラスを派生させることもできます。どちらの場合も、レコードセット クラスを使用するには、データベースを開き、CDaoDatabase オブジェクトのポインタをコンストラクタに渡して、レコードセット オブジェクトを構築します。CDaoRecordset オブジェクトを構築し、MFC に一時的な CDaoDatabase オブジェクトを作成させることもできます。その後、オブジェクトが、テーブル タイプのレコードセット、ダイナセット タイプのレコードセット、スナップショット タイプのレコードセットのどれかを指定して、レコードセットの Open メンバ関数を呼び出します。Open の呼び出しにより、データベースからデータが選択され、最初のレコードが取り出されます。
レコード間のスクロールやレコードの操作を行うには、オブジェクトのメンバ関数とデータ メンバを使用します。ある操作が利用できるかどうかは、オブジェクトがテーブル タイプのレコードセット、ダイナセット タイプのレコードセット、スナップショット タイプのレコードセットのどれであるか、およびオブジェクトが更新できるか、読み取り専用かどうかによります。さらに、データベースまたは ODBC (Open Database Connectivity) データ ソースの機能によって異なります。Open 関数を呼び出した後の変更や追加を再表示するには Requery メンバ関数を呼び出します。レコードセットを使用した作業を終了するときはオブジェクトの Close メンバ関数を呼び出し、オブジェクトを破棄します。
CDaoRecordset は、CDaoRecordset または CDaoRecordset の派生クラスのタイプセーフな C++ メンバを使用してレコード フィールドの読み込みや更新をサポートするために、DAO レコード フィールド エクスチェンジ (DFX: DAO record field exchange) を使用します。GetFieldValue および SetFieldValue を使用することにより、DFX 機構を使用せずに、データベースの列への動的連結を実装することもできます。
関連情報については、DAO ヘルプの「Recordset Object」を参照してください。
必要条件
ヘッダー : afxdao.h