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 オブジェクトを使用して、既存の保存済みクエリを操作するか、新しい保存されたクエリまたは一時クエリを作成します。
いずれの場合も、最初に
CDaoQueryDef
オブジェクトを構築し、クエリが属する CDaoDatabase オブジェクトへのポインターを指定します。次に、必要に応じて次の操作を行います。
既存の保存されたクエリを使用するには、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 オブジェクト」を参照してください。
継承階層
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 の属性を設定するには、 SetName、 SetSQL、 SetConnect、 SetODBCTimeout、および 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
は、一般に、 UPDATE、 INSERT、 SELECT INTO などの一括操作クエリ、またはデータ定義言語 (DDL) 操作に使用されます。
ヒント
ODBC データ ソースを操作する場合は、Microsoft Jet (.MDB) データベース。 詳細については、DAO ヘルプの「DAO を使用した外部データベースへのアクセス」を参照してください。
querydef オブジェクトの GetRecordsAffected メンバー関数を呼び出して、最新の Execute
呼び出しの影響を受けるレコードの数を確認します。 たとえば、 GetRecordsAffected
は、アクション クエリの実行時に削除、更新、または挿入されたレコードの数に関する情報を返します。 連鎖更新または削除が有効な場合、返される数は関連テーブルの変更を反映しません。
dbInconsistent
とdbConsistent
の両方を含める場合、またはどちらも含めなければ、結果は既定の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 内のすべてのフィールドをループ処理する場合に便利です。 そのためには、GetFieldInfo
でGetFieldCount
を使用します。
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 内のすべてのパラメーターをループ処理する場合に便利です。 そのためには、GetParameterInfo
でGetParameterCount
を使用します。
関連情報については、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
DeldbQUpdate
UpdatedbQAppend
追加dbQMakeTable
Make-tabledbQDDL
データ定義dbQSQLPassThrough
パススルーdbQSetOperation
組合dbQSPTBulk
dbQSQLPassThrough
と共に使用して、レコードを返さないクエリを指定します。
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
クラス