仮想 void オープン (int した nOpenType AFX_DAO_USE_DEFAULT_TYPE、LPCTSTR = lpszSQL = NULL、int nOptions= 0 );
throw (CDaoException, CMemoryException);
仮想 void オープン (CDaoTableDef ※pTableDef,int した nOpenType dbOpenTable、int = nOptions= 0 );
throw (CDaoException, CMemoryException);
仮想 void オープン (CDaoQueryDef ※pQueryDef,int した nOpenType dbOpenDynaset、int = nOptions= 0 );
throw (CDaoException, CMemoryException);
パラメーター
した nOpenType
次の値の 1 つ:
lpszSQL
次のいずれかを含む文字列へのポインター:
nOptions
1 つ以上の次のオプション。既定値は 0 です。使用可能な値は次のとおりです。:
注特価;定数dbConsistentとdbInconsistentは互いに排他的です。いずれかを使用することができますまたは、他の両方はオープンの特定のインスタンスで(&N)。
pTableDef
特価;CDaoTableDefオブジェクトへのポインター。このバージョンはテーブル タイプのレコード セットのみ有効です。このオプションを使用するときは、 CDaoRecordsetを構築するために使用、 CDaoDatabaseポインターを使用しない;テーブル定義が存在するデータベースの使用ではなく、(&N)。
pQueryDef
CDaoQueryDefオブジェクトへのポインター。このバージョンは、ダイナセット タイプとスナップショット タイプのレコード セットに対してのみ有効です。このオプションを使用するときは、 CDaoRecordsetを構築するために使用、 CDaoDatabaseポインターを使用しない;クエリ定義が存在するデータベースの使用ではなく、。
解説
レコード セットのレコードを取得するにはこのメンバー関数を呼び出す必要があります。Openを呼び出す前に、レコード セット オブジェクトを構築する必要があります。これを行うには、いくつかの方法があります。:
注特価;CDaoDatabaseオブジェクトのレコード セットを開くと、データ ソースを非排他アクセスで開きます(&N)。
LpszSQLパラメーターを使用して開くのバージョンについては、レコード セットを開くといくつかの方法の 1 つのレコードを取得できます。最初のオプションは、 DoFieldExchangeの DFX 関数にです。2 つ目は、 GetFieldValueメンバー関数を呼び出して動的バインディングを使用する方法です。これらのオプションは、個別にまたは組み合わせて実装することができます。結合される場合は、SQL ステートメントで自分で開くへの呼び出しで渡す必要があります。動的連結の詳細については、参照してください DAO レコード セット: レコードの動的連結でVisual の C++ プログラマのガイド.nbsp(&N);
2 番目のバージョンは、 CDaoTableDefオブジェクトで渡すのオープンを使用すると、結果の列、 DoFieldExchangeおよび DFX 機構を介してバインドGetFieldValue経由で動的にバインドすることができます。
注特価;あなただけCDaoTableDefオブジェクトでは、テーブル タイプのレコード セットを使用して開くを呼び出すことができます。(&N)。
第 3 版では、クエリが実行され、結果の列はDoFieldExchangeをバインドし、DFX 機構を利用できるし、 GetFieldValue経由で動的にバインドは、 CDaoQueryDefオブジェクト、渡すオープンを使用する場合。
注特価;のみダイナセット タイプとスナップショット タイプのレコード セットは、 CDaoQueryDefオブジェクトを使用して開くを呼び出すことができます。(&N)。
LpszSQLパラメーターを使用してオープンの最初のバージョンは、レコードが、次の表に示す条件に基づいて選択されて。
LpszSQLパラメーターの値 | 選択されたレコードによって決まります | 例 |
NULL | GetDefaultSQLによって返される文字列。 | |
1 つ以上のテーブル定義またはクエリ定義名のカンマ区切りリスト。 | DoFieldExchangeで表されるすべての列。 |
|
選択列の一覧からテーブル リスト | 指定した列から、指定したテーブル定義またはクエリ定義。 |
|
通常の手順は、 NULLをオープンに渡すことです。その場合は、開いている GetDefaultSQLClassWizard は、 CDaoRecordsetを作成するときが生成されます、オーバーライド可能なメンバー関数を呼び出します-クラスを派生します。この値は、ClassWizard で指定したテーブル定義またはクエリ定義の名前を示します。LpszSQLパラメーターにその他の情報を代わりに指定することができます。
何があなたを渡す、オープン最終 SQL 文字列 (文字列を渡すlpszSQL文字列に追加 SQLは、注文のBY句もあります)、クエリを構築し、クエリを実行します。Openを呼び出した後にgetsql 関数を呼び出すことによって作成された文字列を調べることができます。 。
レコード セット クラスのフィールド データ メンバーは、選択したデータの列にバインドされています。すべてのレコードが返された場合は、最初のレコードが現在のレコードになります。
フィルターや並べ替えなど、レコード セットのオプションを設定する場合設定m_strSortまたはm_strFilter後、レコード セット オブジェクトを構築が前に、開いているコールします。レコード セットが既に開かれていた後レコード セット内のレコードを更新する場合は、再クエリを呼び出す。
オープンダイナセット タイプまたはスナップショット タイプのレコード セットで呼び出す SQL ステートメントまたはアタッチ テーブルを表す tabledef にデータ ソースを参照する場合は、型引数をdbOpenTableを使用することはできません;その場合は、MFC は例外をスローします。Tabledef オブジェクトにアタッチ テーブルを表すかどうかを確認するには、 CDaoTableDefオブジェクトを作成し、 GetConnectメンバー関数を呼び出す。
編集するか、同じレコードを削除すると別のユーザーまたは別のプログラムによって行われた変更をトラップする場合は、 dbSeeChangesフラグを使用します。たとえば、2 人のユーザーが同じレコードを編集を開始する場合は、 Updateメンバー関数を呼び出すには、最初のユーザーが成功しました。更新プログラムは、2 番目のユーザーが呼び出されると、 CDaoExceptionがスローされます。同様に、2 番目のユーザーがレコードを削除する削除を呼び出すしようとして、最初のユーザーによって既に変更されている場合は、 CDaoExceptionが発生します。
通常、ユーザーの更新中にこのCDaoExceptionを取得しますコードする必要がありますフィールドの内容を更新し、新しく変更された値を取得します。削除のプロセスで例外が発生した場合は、コードをデータが最近変更された、新しいデータを記録、ユーザーとを示すメッセージを表示できます。この時点で、あなたのコードは、レコードを削除するユーザーを確認要求できます。
ヒント使用、順方向専用アプリケーション、ときにパフォーマンスを向上させるには、オプション (dbForwardOnly)、ODBC データ ソースから開いたレコード セット スクロール。
レコード セットの開きの詳細についてを参照してください DAO レコード セット: レコード セットの作成と DAO: 作成、開く、および DAO オブジェクトを閉じるのVisual の C++ プログラマのガイド。関連情報については、DAO ヘルプの「OpenRecordset メソッド」のトピックを参照してください。
CDaoRecordset の概要|nbsp;クラス メンバー |階層図(&N)