次の方法で共有


CDaoQueryDef クラス

更新 : 2007 年 11 月

クエリ定義、つまり "querydef" を表し、通常はデータベースに保存されています。

class CDaoQueryDef : public CObject

解説

querydef は、クエリを記述する SQL ステートメントや、"Date Created" や "ODBC Timeout" のようなプロパティを持つデータ アクセス オブジェクトです。また、保存しない一時的な querydef オブジェクトも作成できます。データベースで共通に再利用されるクエリは、保存する方が便利 (効率的) です。CDaoDatabase オブジェクトは、オブジェクトに保存されたクエリ定義を保持している QueryDefs コレクションと呼ばれるコレクションを管理します。

7ybf5y1k.alert_note(ja-jp,VS.90).gifメモ :

DAO データベース クラスは、オープン データベース コネクティビティ (ODBC: Open Database Connectivity) に基づいている MFC データベース クラスとは性質が異ります。すべての DAO データベース クラス名には、"CDao" というプリフィックスが付きます。DAO クラスを使って ODBC データ ソースにもアクセスできます。一般的に、DAO を基にした MFC クラスは、ODBC を基にした MFC クラスよりも多くの機能を持っています。DAO ベースのクラスは、ODBC ドライバを使ってアクセスできるのに加え、独自のデータベース エンジンを使ってもデータにアクセスできます。DAO を基にしたクラスは、DAO を直接呼び出さずにクラスを経由してテーブルを追加するなどの DDL (Data Definition Language) 操作をサポートします。

使用方法

既存の保存されたクエリ、新しく保存されるクエリ、一時的なクエリのどれに対してもクエリ定義オブジェクトを使います。

  1. いずれの場合も、まずクエリを所有する CDaoDatabase オブジェクトのポインタを指定して CDaoQueryDef オブジェクトを構築します。

  2. 次に、作業内容に応じて、次の操作を実行します。

    • 保存されている既存のクエリを使用するには、保存されているクエリの名前を指定して、クエリ定義オブジェクトの Open メンバ関数を呼び出します。

    • 新しくクエリを作成して保存するには、クエリの名前を指定して、クエリ定義オブジェクトの Create メンバ関数を呼び出します。その後、Append を呼び出して、データベースの QueryDefs コレクションにクエリを追加して保存します。Create は、クエリ定義をオープン状態にするので、Create の呼び出し後に Open を呼び出す必要はありません。

    • クエリ定義を一時的に作成するには、Create を呼び出します。クエリ名には空文字列を渡します。Append は呼び出しません。

クエリ定義オブジェクトを使い終わったときは、Close メンバ関数を呼び出してから、クエリ定義オブジェクトを破棄します。

7ybf5y1k.alert_note(ja-jp,VS.90).gifヒント :

クエリを作成して保存する最も簡単な方法は、Microsoft Access を使用して作成し、保存する方法です。これで、MFC コードでそのテーブルを開いて使用できます。

目的

以下の目的のためにクエリ定義オブジェクトを使用できます。

  • CDaoRecordset オブジェクトを作成する。

  • アクション クエリ、または SQL パススルー クエリを直接実行するためにオブジェクトの Execute メンバ関数を呼び出す。

選択、アクション、クロスタブ、削除、更新、追加、テーブル作成、データ定義、SQL パススルー、結合、一括クエリを含む、いろいろな型のクエリのために、クエリ定義オブジェクトを使用できます。クエリの型は、指定される SQL ステートメントの内容によって決まります。クエリの型については、Execute メンバ関数と GetType メンバ関数を参照してください。SELECT ... FROM キーワードを主に使用して行を返すクエリに対しては、レコードセットを使うのが一般的です。 Execute は、通常一括操作に使います。詳細については、「CDaoQueryDef::Execute」と「CDaoRecordset クラス」を参照してください。

クエリ定義とレコードセット

クエリ定義オブジェクトを使用して CDaoRecordset オブジェクトを作成するには、通常上で説明したようにクエリ定義の作成、またはオープンをします。その後、レコードセット オブジェクトを構築し、CDaoRecordset::Open の呼び出し時にクエリ定義オブジェクトのポインタを渡します。渡すクエリ定義は、オープン状態にしておく必要があります。詳細については、CDaoRecordset クラスを参照してください。

レコードセットを作成 (クエリ定義の最も一般的な使用法) するには、クエリ定義が開かれている必要があります。Open または Create を呼び出して、クエリ定義をオープン状態にします。

外部データベース

クエリ定義オブジェクトは、外部データベース エンジンのネイティブな SQL の表現を使うための望ましい方法です。たとえば、Transact SQL クエリ (Microsoft SQL Server で使われています) を作成し、クエリ定義オブジェクトにそれを格納する場合などです。Microsoft Jet データベース エンジンを基にしない SQL クエリを使う必要があるときは、外部データ ソースを指す接続文字列を指定する必要があります。有効な接続文字列を持つクエリはデータベース エンジンをバイパスして外部データベース サーバーに直接渡されて処理されます。

7ybf5y1k.alert_note(ja-jp,VS.90).gifヒント :

ODBC テーブルを使用して作業するには、テーブルを Microsoft Jet (.MDB) データベースに関連付けます。

関連情報については、DAO ヘルプの「QueryDef Object」、「QueryDefs Collection」、および「CdbDatabase Object」を参照してください。

必要条件

ヘッダー : afxdao.h

参照

参照

CObject クラス

階層図

CDaoRecordset クラス

CDaoDatabase クラス

CDaoTableDef クラス

CDaoException クラス

その他の技術情報

CDaoQueryDef のメンバ