CDaoQueryDef クラス

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

Note

データ アクセス オブジェクト (DAO) は、Office 2013 でサポートされています。 DAO 3.6 は最終バージョンであり、廃止されています。

構文

class CDaoQueryDef : public CObject

メンバー

パブリック コンストラクター

名前 説明
CDaoQueryDef::CDaoQueryDef CDaoQueryDef オブジェクトを構築します。 次に、ニーズに応じて Open または Createを呼び出します。

パブリック メソッド

名前 説明
CDaoQueryDef::Append 保存されたクエリとして、データベースの QueryDefs コレクションに querydef を追加します。
CDaoQueryDef::CanUpdate クエリでデータベースを更新できる場合は、0 以外の値を返します。
CDaoQueryDef::Close querydef オブジェクトを閉じます。 終了したら、C++ オブジェクトを破棄します。
CDaoQueryDef::Create 基になる DAO querydef オブジェクトを作成します。 querydef を一時クエリとして使用するか、 Append を呼び出してデータベースに保存します。
CDaoQueryDef::Execute querydef オブジェクトによって定義されたクエリを実行します。
CDaoQueryDef::GetConnect querydef に関連付けられている接続文字列を返します。 接続文字列は、データ ソースを識別します。 (SQL パススルー クエリの場合のみ。それ以外の場合は空の文字列)。
CDaoQueryDef::GetDateCreated 保存されたクエリが作成された日付を返します。
CDaoQueryDef::GetDateLastUpdated 保存されたクエリが最後に更新された日付を返します。
CDaoQueryDef::GetFieldCount querydef によって定義されたフィールドの数を返します。
CDaoQueryDef::GetFieldInfo クエリで定義されている指定されたフィールドに関する情報を返します。
CDaoQueryDef::GetName querydef の名前を返します。
CDaoQueryDef::GetODBCTimeout クエリ定義の実行時に ODBC で使用されるタイムアウト値を返します。クエリのアクションが完了するまでの時間を決定します。
CDaoQueryDef::GetParameterCount クエリに定義されているパラメーターの数を返します。
CDaoQueryDef::GetParameterInfo 指定したパラメーターに関する情報をクエリに返します。
CDaoQueryDef::GetParamValue 指定したパラメーターの値をクエリに返します。
CDaoQueryDef::GetRecordsAffected アクション クエリの影響を受けるレコードの数を返します。
CDaoQueryDef::GetReturnsRecords querydef によって定義されたクエリがレコードを返す場合は、0 以外の値を返します。
CDaoQueryDef::GetSQL querydef によって定義されたクエリを指定する SQL 文字列を返します。
CDaoQueryDef::GetType クエリの種類 (delete、update、append、make-table など) を返します。
CDaoQueryDef::IsOpen querydef が開き、実行できる場合は 0 以外の値を返します。
CDaoQueryDef::Open データベースの QueryDefs コレクションに格納されている既存の querydef を開きます。
CDaoQueryDef::SetConnect ODBC データ ソースの SQL パススルー クエリの接続文字列を設定します。
CDaoQueryDef::SetName 保存されたクエリの名前を設定し、querydef の作成時に使用されている名前を置き換えます。
CDaoQueryDef::SetODBCTimeout querydef の実行時に ODBC で使用されるタイムアウト値 (ODBC クエリの場合) を設定します。
CDaoQueryDef::SetParamValue 指定したパラメーターの値をクエリに設定します。
CDaoQueryDef::SetReturnsRecords querydef がレコードを返すかどうかを指定します。 この属性を TRUE に設定することは、SQL パススルー クエリでのみ有効です。
CDaoQueryDef::SetSQL querydef によって定義されたクエリを指定する SQL 文字列を設定します。

パブリック データ メンバー

名前 説明
CDaoQueryDef::m_pDAOQueryDef 基になる DAO querydef オブジェクトの OLE インターフェイスへのポインター。
CDaoQueryDef::m_pDatabase querydef が関連付けられている CDaoDatabase オブジェクトへのポインター。 querydef はデータベースに保存される場合と保存されない場合があります。

解説

querydef は、クエリを記述する SQL ステートメントとそのプロパティ ("Date Created" や "ODBC Timeout" など) を含むデータ アクセス オブジェクトです。一時的な querydef オブジェクトを保存せずに作成することもできますが、一般的に再利用されるクエリをデータベースに保存する方が便利で、はるかに効率的です。 CDaoDatabase オブジェクトは、保存された querydef を含む QueryDefs コレクションと呼ばれるコレクションを保持します。

Note

DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく Microsoft Foundation Class (MFC) データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用しても、ODBC データ ソースにアクセスできます。 一般に、DAO に基づく MFC クラスは、ODBC に基づく MFC クラスよりも能力が高くなります。DAO ベースのクラスは、ODBC ドライバーを介して、独自のデータベース エンジンを介してデータにアクセスできます。 DAO ベースのクラスでは、DAO を直接呼び出さなくても、クラスを介したテーブルの追加などのデータ定義言語 (DDL) 操作もサポートされます。

使用方法

querydef オブジェクトを使用して、既存の保存済みクエリを操作するか、新しい保存されたクエリまたは一時クエリを作成します。

  1. いずれの場合も、最初に CDaoQueryDef オブジェクトを構築し、クエリが属する CDaoDatabase オブジェクトへのポインターを指定します。

  2. 次に、必要に応じて次の操作を行います。

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

    • 新しい保存されたクエリを作成するには、querydef オブジェクトの Create メンバー関数を呼び出し、クエリの名前を指定します。 次に、 Append を呼び出して、データベースの QueryDefs コレクションにクエリを追加してクエリを保存します。 Create は querydef をオープン状態にするため、 Create 呼び出した後は Openを呼び出しません。

    • 一時的なクエリ定義を作成するには、 Createを呼び出します。 クエリ名に空の文字列を渡します。 Appendを呼び出さないでください。

querydef オブジェクトの使用が完了したら、その Close メンバー関数を呼び出し、querydef オブジェクトを破棄します。

ヒント

保存されたクエリを作成する最も簡単な方法は、Microsoft Access を使用してクエリを作成し、データベースに格納することです。 その後、MFC コードで開いて使用できます。

目的

querydef オブジェクトは、次のいずれかの目的で使用できます。

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

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

選択、アクション、クロス集計、削除、更新、追加、テーブル作成、データ定義、SQL パススルー、共用体、一括クエリなど、あらゆる種類のクエリに対して querydef オブジェクトを使用できます。 指定する SQL ステートメントの内容によって、クエリの種類が決まります。 クエリの種類については、 Execute および GetType メンバー関数を参照してください。 レコードセットは、行を返すクエリに一般的に使用されます。通常は、 SELECT ..を使用するクエリです。FROM キーワード。 Execute は、一括操作に最も一般的に使用されます。 詳細については、次のトピックを参照してください。 Execute および CDaoRecordset

Querydefs と Recordsets

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

開いている状態でない限り、querydef を使用してレコードセットを作成することはできません (querydef の最も一般的な用途)。 OpenまたはCreateを呼び出して、querydef を開いている状態にします。

外部データベース

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

ヒント

ODBC テーブルを操作する場合は、Microsoft Jet (.MDB) データベース。

関連情報については、DAO SDK のトピック「QueryDef オブジェクト」、「QueryDefs コレクション」、「CdbDatabase オブジェクト」を参照してください。

継承階層

CObject

CDaoQueryDef

要件

ヘッダー: afxdao.h

CDaoQueryDef::Append

Create を呼び出して新しい querydef オブジェクトを作成した後、このメンバー関数を呼び出します。

virtual void Append();

解説

Append は、オブジェクトをデータベースの QueryDefs コレクションに追加することで、querydef をデータベースに保存します。 querydef は追加せずに一時オブジェクトとして使用できますが、永続化する場合は、 Appendを呼び出す必要があります。

一時的な querydef オブジェクトを追加しようとすると、MFC は CDaoException 型の例外をスローします。

CDaoQueryDef::CanUpdate

このメンバー関数を呼び出して、名前や SQL 文字列の変更など、querydef を変更できるかどうかを判断します。

BOOL CanUpdate();

戻り値

querydef を変更できる場合は 0 以外。それ以外の場合は 0。

解説

querydef は、次の場合に変更できます。

  • これは、読み取り専用で開かれているデータベースに基づいていません。

  • データベースに対する更新アクセス許可があります。

    これは、セキュリティ機能を実装したかどうかによって異なります。 MFC はセキュリティのサポートを提供していません。DAO を直接呼び出すか、Microsoft Access を使用して実装する必要があります。 DAO ヘルプの「Permissions プロパティ」のトピックを参照してください。

CDaoQueryDef::CDaoQueryDef

CDaoQueryDef オブジェクトを構築します。

CDaoQueryDef(CDaoDatabase* pDatabase);

パラメーター

pDatabase
開いている CDaoDatabase オブジェクトへのポインター。

解説

オブジェクトは、データベースの QueryDefs コレクションに格納されている既存の querydef、コレクションに格納される新しいクエリ、または格納されない一時クエリを表すことができます。 次の手順は、querydef の種類によって異なります。

  • オブジェクトが既存の querydef を表す場合は、オブジェクトの Open メンバー関数を呼び出して初期化します。

  • オブジェクトが保存する新しい querydef を表す場合は、オブジェクトの Create メンバー関数を呼び出します。 これにより、データベースの QueryDefs コレクションにオブジェクトが追加されます。 次 CDaoQueryDef メンバー関数を呼び出して、オブジェクトの属性を設定します。 最後に、 Append を呼び出します。

  • オブジェクトが一時的なクエリ定義 (データベースに保存されない) を表す場合は、 Createを呼び出し、クエリの名前に空の文字列を渡します。 Createを呼び出した後、属性を直接設定して querydef を初期化します。 Appendを呼び出さないでください。

querydef の属性を設定するには、 SetNameSetSQLSetConnectSetODBCTimeout、および SetReturnsRecords メンバー関数を使用できます。

querydef オブジェクトで終了したら、その Close メンバー関数を呼び出します。 querydef へのポインターがある場合は、 delete 演算子を使用して C++ オブジェクトを破棄します。

CDaoQueryDef::Close

querydef オブジェクトの使用が完了したら、このメンバー関数を呼び出します。

virtual void Close();

解説

querydef を閉じると、基になる DAO オブジェクトは解放されますが、保存されている DAO querydef オブジェクトや C++ CDaoQueryDef オブジェクトは破棄されません。 これは、DAO のデータベースの QueryDefs コレクションから querydef を削除する CDaoDatabase::D eleteQueryDef と同じではありません (一時的な querydef ではない場合)。

CDaoQueryDef::Create

このメンバー関数を呼び出して、新しい保存済みクエリまたは新しい一時クエリを作成します。

virtual void Create(
    LPCTSTR lpszName = NULL,
    LPCTSTR lpszSQL = NULL);

パラメーター

lpszName
データベースに保存されたクエリの一意の名前。 文字列の詳細については、DAO ヘルプの「CreateQueryDef メソッド」を参照してください。 既定値 (空の文字列) を受け入れると、一時的な querydef が作成されます。 このようなクエリは QueryDefs コレクションに保存されません。

lpszSQL
クエリを定義する SQL 文字列。 既定値の NULL を受け入れる場合は、後で SetSQL を呼び出して文字列を設定する必要があります。 それまでは、クエリは未定義です。 ただし、未定義のクエリを使用してレコードセットを開くことができます。詳細については、「解説」を参照してください。 QueryDefs コレクションに querydef を追加する前に、SQL ステートメントを定義する必要があります。

解説

lpszNameで名前を渡すと、Appendを呼び出して、querydef をデータベースの QueryDefs コレクションに保存できます。 それ以外の場合、オブジェクトは一時的な querydef であり、保存されません。 どちらの場合も、querydef は開いている状態であり、それを使用して CDaoRecordset オブジェクトを作成するか、querydef の Execute メンバー関数を呼び出すことができます。

lpszSQLで SQL ステートメントを指定しない場合、Executeでクエリを実行することはできませんが、それを使用してレコードセットを作成できます。 その場合、MFC はレコードセットの既定の SQL ステートメントを使用します。

CDaoQueryDef::Execute

このメンバー関数を呼び出して、querydef オブジェクトによって定義されたクエリを実行します。

virtual void Execute(int nOptions = dbFailOnError);

パラメーター

nOptions
クエリの特性を決定する整数。 関連情報については、DAO ヘルプの「メソッドの実行」のトピックを参照してください。 ビットごとの OR 演算子 (|) を使用して、この引数に対して次の定数を組み合わせることができます。

  • dbDenyWrite 他のユーザーへの書き込みアクセス許可を拒否します。

  • dbInconsistent 一貫性のない更新。

  • dbConsistent 一貫性のある更新。

  • dbSQLPassThrough SQL パススルー。 処理のために SQL ステートメントを ODBC データベースに渡します。

  • dbFailOnError 既定値。 エラーが発生した場合は更新プログラムをロールバックし、ユーザーにエラーを報告します。

  • dbSeeChanges 編集中のデータを別のユーザーが変更している場合は、実行時エラーを生成します。

Note

用語 "consistent" と "consistent" の説明については、DAO ヘルプの「メソッドの実行」のトピックを参照してください。

解説

この方法で実行するために使用される Querydef オブジェクトは、次のいずれかのクエリの種類のみを表すことができます。

  • アクション クエリ

  • SQL パススルー クエリ

Execute は、選択クエリなどのレコードを返すクエリでは機能しません。 Execute は、一般に、 UPDATEINSERTSELECT INTO などの一括操作クエリ、またはデータ定義言語 (DDL) 操作に使用されます。

ヒント

ODBC データ ソースを操作する場合は、Microsoft Jet (.MDB) データベース。 詳細については、DAO ヘルプの「DAO を使用した外部データベースへのアクセス」を参照してください。

querydef オブジェクトの GetRecordsAffected メンバー関数を呼び出して、最新の Execute 呼び出しの影響を受けるレコードの数を確認します。 たとえば、 GetRecordsAffected は、アクション クエリの実行時に削除、更新、または挿入されたレコードの数に関する情報を返します。 連鎖更新または削除が有効な場合、返される数は関連テーブルの変更を反映しません。

dbInconsistentdbConsistentの両方を含める場合、またはどちらも含めなければ、結果は既定のdbInconsistentになります。

Execute はレコードセットを返しません。 レコードを選択するクエリで Execute を使用すると、MFC は型 CDaoException の例外をスローします。

CDaoQueryDef::GetConnect

このメンバー関数を呼び出して、querydef のデータ ソースに関連付けられている接続文字列を取得します。

CString GetConnect();

戻り値

querydef の接続文字列を含むCString

解説

この関数は、ODBC データ ソースと特定の ISAM ドライバーでのみ使用されます。 Microsoft Jet (.MDB) データベースでは使用されません。この場合、 GetConnect は空の文字列を返します。 詳細については、SetConnectを参照してください。

ヒント

ODBC テーブルを操作する場合は、それらを .MDB データベース。 詳細については、DAO ヘルプの「DAO を使用した外部データベースへのアクセス」を参照してください。

接続文字列の詳細については、DAO ヘルプの「接続プロパティ」を参照してください。

CDaoQueryDef::GetDateCreated

このメンバー関数を呼び出して、querydef オブジェクトが作成された日付を取得します。

COleDateTime GetDateCreated();

戻り値

querydef が作成された日時を表す COleDateTime オブジェクト。

解説

関連情報については、DAO ヘルプの「DateCreated,LastUpdated プロパティ」を参照してください。

CDaoQueryDef::GetDateLastUpdated

このメンバー関数を呼び出して、querydef オブジェクトのプロパティ (名前、SQL 文字列、接続文字列など) が変更された日付を取得します。

COleDateTime GetDateLastUpdated();

戻り値

querydef が最後に更新された日時を含む COleDateTime オブジェクト。

解説

関連情報については、DAO ヘルプの「DateCreated,LastUpdated プロパティ」を参照してください。

CDaoQueryDef::GetFieldCount

このメンバー関数を呼び出して、クエリ内のフィールドの数を取得します。

short GetFieldCount();

戻り値

クエリで定義されているフィールドの数。

解説

GetFieldCount は、querydef 内のすべてのフィールドをループ処理する場合に便利です。 そのためには、GetFieldInfoGetFieldCountを使用します。

CDaoQueryDef::GetFieldInfo

このメンバー関数を呼び出して、querydef で定義されているフィールドに関するさまざまな種類の情報を取得します。

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

パラメーター

nIndex
querydef の Fields コレクション内の目的のフィールドの 0 から始まるインデックス。インデックスによる検索用です。

fieldinfo
要求された情報を返す CDaoFieldInfo オブジェクトへの参照。

dwInfoOptions
取得するフィールドに関する情報を指定するオプション。 使用可能なオプションと、関数が返す原因を次に示します。

  • AFX_DAO_PRIMARY_INFO (既定) 名前、型、サイズ、属性

  • AFX_DAO_SECONDARY_INFO主情報に加えて、序数位置、必須、長さゼロの許可、ソース フィールド、外部名、ソース テーブル、照合順序

  • AFX_DAO_ALL_INFOプライマリとセカンダリの情報に加えて、既定値、検証テキスト、検証規則

lpszName
名前で検索する目的のフィールドの名前を含む文字列。 CString を使用できます。

解説

fieldinfo で返される情報の説明については、CDaoFieldInfo 構造体を参照してください。 この構造体には、上記の dwInfoOptions の説明情報に対応するメンバーがあります。 1 レベルの情報を要求すると、以前のレベルの情報も取得されます。

CDaoQueryDef::GetName

このメンバー関数を呼び出して、querydef によって表されるクエリの名前を取得します。

CString GetName();

戻り値

クエリの名前。

解説

Querydef 名は、一意のユーザー定義名です。 querydef 名の詳細については、DAO ヘルプの「Name プロパティ」を参照してください。

CDaoQueryDef::GetODBCTimeout

ODBC データ ソースに対するクエリがタイムアウトする前に、このメンバー関数を呼び出して現在の制限時間を取得します。

short GetODBCTimeout();

戻り値

クエリがタイムアウトするまでの秒数。

解説

この制限時間の詳細については、DAO ヘルプの「ODBCTimeout プロパティ」を参照してください。

ヒント

ODBC テーブルを操作する場合は、Microsoft Jet (.MDB) データベース。 詳細については、DAO ヘルプの「DAO を使用した外部データベースへのアクセス」を参照してください。

CDaoQueryDef::GetParameterCount

このメンバー関数を呼び出して、保存されたクエリ内のパラメーターの数を取得します。

short GetParameterCount();

戻り値

クエリで定義されているパラメーターの数。

解説

GetParameterCount は、querydef 内のすべてのパラメーターをループ処理する場合に便利です。 そのためには、GetParameterInfoGetParameterCountを使用します。

関連情報については、DAO ヘルプの「パラメーター オブジェクト」、「パラメーター コレクション」、「PARAMETERS 宣言 (SQL)」の各トピックを参照してください。

CDaoQueryDef::GetParameterInfo

querydef で定義されているパラメーターに関する情報を取得するには、このメンバー関数を呼び出します。

void GetParameterInfo(
    int nIndex,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetParameterInfo(
    LPCTSTR lpszName,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

パラメーター

nIndex
クエリ定義の Parameters コレクション内の必要なパラメーターの 0 から始まるインデックス 。インデックスによる参照用です。

paraminfo
要求された情報を返す CDaoParameterInfo オブジェクトへの参照。

dwInfoOptions
取得するパラメーターに関する情報を指定するオプション。 使用可能なオプションは、関数が返す原因と共に、次の一覧に示されています。

  • AFX_DAO_PRIMARY_INFO (既定値)名前、種類

lpszName
名前による検索に使用する、目的のパラメーターの名前を含む文字列。 CString を使用できます。

解説

paraminfoで返される情報の説明については、CDaoParameterInfo構造体を参照してください。 この構造体には、上記の dwInfoOptions の説明情報に対応するメンバーがあります。

関連情報については、DAO ヘルプの「PARAMETERS 宣言 (SQL)」を参照してください。

CDaoQueryDef::GetParamValue

このメンバー関数を呼び出して、querydef の Parameters コレクションに格納されている指定されたパラメーターの現在の値を取得します。

virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);

パラメーター

lpszName
名前による検索に使用する値を持つパラメーターの名前。

nIndex
クエリ定義の Parameters コレクション内のパラメーターの 0 から始まるインデックス。インデックスによる検索用です。 この値は、 GetParameterCount および GetParameterInfo の呼び出しで取得できます。

戻り値

パラメーターの値を含むクラス COleVariant のオブジェクト。

解説

パラメーターには、名前またはコレクション内の序数の位置でアクセスできます。

関連情報については、DAO ヘルプの「PARAMETERS 宣言 (SQL)」を参照してください。

CDaoQueryDef::GetRecordsAffected

このメンバー関数を呼び出して、 Execute の最後の呼び出しによって影響を受けるレコードの数を確認します。

long GetRecordsAffected();

戻り値

影響を受けるレコードの数。

解説

連鎖更新または削除が有効な場合、返される数は関連テーブルの変更を反映しません。

関連情報については、DAO ヘルプの「RecordsAffected プロパティ」を参照してください。

CDaoQueryDef::GetReturnsRecords

このメンバー関数を呼び出して、querydef がレコードを返すクエリに基づいているかどうかを判断します。

BOOL GetReturnsRecords();

戻り値

querydef がレコードを返すクエリに基づいている場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、SQL パススルー クエリにのみ使用されます。 SQL クエリの詳細については、 Execute メンバー関数を参照してください。 SQL パススルー クエリの操作の詳細については、 SetReturnsRecords メンバー関数を参照してください。

関連情報については、DAO ヘルプの「ReturnsRecords プロパティ」を参照してください。

CDaoQueryDef::GetSQL

このメンバー関数を呼び出して、querydef の基になっているクエリを定義する SQL ステートメントを取得します。

CString GetSQL();

戻り値

querydef の基になっているクエリを定義する SQL ステートメント。

解説

キーワードやテーブル名などの文字列を解析できます。

関連情報については、DAO ヘルプの「SQL プロパティ」、「Microsoft Jet データベース エンジン SQL と ANSI SQL の比較」、「コード内の SQL を使用したデータベースのクエリ」に関するトピックを参照してください。

CDaoQueryDef::GetType

このメンバー関数を呼び出して、querydef のクエリの種類を決定します。

short GetType();

戻り値

querydef によって定義されたクエリの型。 値については、「解説」を参照してください。

解説

クエリの種類は、querydef を作成するとき、または既存の querydef の SetSQL メンバー関数を呼び出すときに、querydef の SQL 文字列で指定した内容によって設定されます。 この関数によって返されるクエリの種類には、次のいずれかの値を指定できます。

  • dbQSelect 選ぶ

  • dbQAction 動作

  • dbQCrosstab クロス集計

  • dbQDelete Del

  • dbQUpdate Update

  • dbQAppend 追加

  • dbQMakeTable Make-table

  • dbQDDL データ定義

  • dbQSQLPassThrough パススルー

  • dbQSetOperation 組合

  • dbQSPTBulkdbQSQLPassThroughと共に使用して、レコードを返さないクエリを指定します。

Note

SQL パススルー クエリを作成するには、 dbSQLPassThrough 定数を設定しないでください。 これは、querydef オブジェクトを作成して接続文字列を設定するときに、Microsoft Jet データベース エンジンによって自動的に設定されます。

SQL 文字列の詳細については、「 GetSQL」を参照してください。 クエリの種類については、「 Execute」を参照してください。

CDaoQueryDef::IsOpen

このメンバー関数を呼び出して、 CDaoQueryDef オブジェクトが現在開いているかどうかを判断します。

BOOL IsOpen() const;

戻り値

CDaoQueryDef オブジェクトが現在開いている場合は 0 以外、それ以外の場合は 0。

解説

querydef を使用して Execute を呼び出したり、 CDaoRecordset オブジェクトを作成したりする前に、querydef が開いている状態である必要があります。 querydef を開いている状態にするには、 Create (新しい querydef の場合) または Open (既存の querydef の場合) を呼び出します。

CDaoQueryDef::m_pDatabase

querydef オブジェクトに関連付けられている CDaoDatabase オブジェクトへのポインターを格納します。

解説

データベースに直接アクセスする必要がある場合は、このポインターを使用します。 たとえば、データベースのコレクション内の他の querydef オブジェクトまたはレコードセット オブジェクトへのポインターを取得します。

CDaoQueryDef::m_pDAOQueryDef

基になる DAO querydef オブジェクトの OLE インターフェイスへのポインターを格納します。

解説

このポインターは、他のクラスとの完全性と一貫性を確保するために提供されます。 ただし、MFC は DAO クエリ定義を完全にカプセル化するので、必要な可能性はほとんどありません。 使用する場合は、慎重に行います。 特に、何を行っているか分からない限り、ポインターの値を変更しないでください。

CDaoQueryDef::Open

このメンバー関数を呼び出して、以前にデータベースの QueryDefs コレクションに保存された querydef を開きます。

virtual void Open(LPCTSTR lpszName = NULL);

パラメーター

lpszName
開く保存済みの querydef の名前を含む文字列。 CString を使用できます。

解説

querydef が開いたら、その Execute メンバー関数を呼び出すか、querydef を使用して CDaoRecordset オブジェクトを作成できます。

CDaoQueryDef::SetConnect

このメンバー関数を呼び出して、querydef オブジェクトの接続文字列を設定します。

void SetConnect(LPCTSTR lpszConnect);

パラメーター

lpszConnect
関連付けられた CDaoDatabase オブジェクトの接続文字列を含む文字列。

解説

接続文字列は、必要に応じて ODBC および特定の ISAM ドライバーに追加情報を渡すために使用されます。 Microsoft Jet (.MDB) データベースには使用されません。

ヒント

ODBC テーブルを操作する場合は、それらを .MDB データベース。

ODBC データ ソースへの SQL パススルー クエリを表す querydef を実行する前に、SetConnectで接続文字列を設定し、SetReturnsRecords を呼び出して、クエリがレコードを返すかどうかを指定します。

接続文字列の構造と接続文字列コンポーネントの例の詳細については、DAO ヘルプの「接続プロパティ」を参照してください。

CDaoQueryDef::SetName

一時的ではない querydef の名前を変更する場合は、このメンバー関数を呼び出します。

void SetName(LPCTSTR lpszName);

パラメーター

lpszName
関連付けられた CDaoDatabase オブジェクト内の非一時クエリの新しい名前を含む文字列。

解説

Querydef 名は、一意のユーザー定義名です。 querydef オブジェクトが QueryDefs コレクションに追加される前に、 SetName を呼び出すことができます。

CDaoQueryDef::SetODBCTimeout

ODBC データ ソースに対するクエリがタイムアウトするまでの時間制限を設定するには、このメンバー関数を呼び出します。

void SetODBCTimeout(short nODBCTimeout);

パラメーター

nODBCTimeout
クエリがタイムアウトするまでの秒数。

解説

このメンバー関数を使用すると、接続されたデータ ソースに対する後続の操作が "タイムアウト" するまでの既定の秒数をオーバーライドできます。ネットワーク アクセスの問題、過剰なクエリ処理時間などが原因で、操作がタイムアウトする可能性があります。 クエリのタイムアウト値を変更する場合は、この querydef を使用してクエリを実行する前に、 SetODBCTimeout を呼び出します。 (ODBC では接続が再利用されるため、タイムアウト値は同じ接続上のすべてのクライアントで同じです)。

クエリ タイムアウトの既定値は 60 秒です。

CDaoQueryDef::SetParamValue

このメンバー関数を呼び出して、実行時に querydef のパラメーターの値を設定します。

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

パラメーター

lpszName
値を設定するパラメーターの名前。

varValue
設定する値。「解説」を参照してください。

nIndex
querydef の Parameters コレクション内のパラメーターの序数位置。 この値は、 GetParameterCount および GetParameterInfo の呼び出しで取得できます。

解説

パラメーターは、querydef の SQL 文字列の一部として既に確立されている必要があります。 パラメーターには、名前またはコレクション内の序数の位置でアクセスできます。

COleVariant オブジェクトとして設定する値を指定します。 COleVariant オブジェクトで目的の値と型を設定する方法については、クラス COleVariant を参照してください。

CDaoQueryDef::SetReturnsRecords

外部データベースへの SQL パススルー クエリを設定するプロセスの一環として、このメンバー関数を呼び出します。

void SetReturnsRecords(BOOL bReturnsRecords);

パラメーター

bReturnsRecords
外部データベースのクエリがレコードを返す場合は TRUE を渡します。それ以外の場合は FALSE。

解説

このような場合は、querydef を作成し、他の CDaoQueryDef メンバー関数を使用してそのプロパティを設定する必要があります。 外部データベースの詳細については、「 SetConnect」を参照してください。

CDaoQueryDef::SetSQL

このメンバー関数を呼び出して、querydef が実行する SQL ステートメントを設定します。

void SetSQL(LPCTSTR lpszSQL);

パラメーター

lpszSQL
実行に適した完全な SQL ステートメントを含む文字列。 この文字列の構文は、クエリの対象となる DBMS によって異なります。 Microsoft Jet データベース エンジンで使用される構文の詳細については、DAO ヘルプの「コードでの SQL ステートメントの作成」のトピックを参照してください。

解説

SetSQLの一般的な用途は、SQL パススルー クエリで使用する querydef オブジェクトを設定することです。 (ターゲット DBMS に対する SQL パススルー クエリの構文については、DBMS のドキュメントを参照してください)。

関連項目

CObject クラス
階層図
CDaoRecordset クラス
CDaoDatabase クラス
CDaoTableDef クラス
CDaoException クラス