CDaoRecordset クラス

データ ソースから選択された 1 組のレコードセットを表現します。

構文

class CDaoRecordset : public CObject

メンバー

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

名前 説明
CDaoRecordset::CDaoRecordset CDaoRecordset オブジェクトを構築します。

パブリック メソッド

名前 説明
CDaoRecordset::AddNew 新しいレコードを追加する準備をします。 Update を呼び出して追加を完了します。
CDaoRecordset::CanAppend AddNew メンバー関数を使用してレコードセットに新しいレコードを追加できる場合は、0 以外の値を返します。
CDaoRecordset::CanBookmark レコードセットがブックマークをサポートしている場合は、0 以外の値を返します。
CDaoRecordset::CancelUpdate 編集操作または AddNew 操作が原因で保留中の更新を取り消します。
CDaoRecordset::CanRestart レコードセットのクエリを再実行するために Requery を呼び出すことができる場合は、0 以外の値を返します。
CDaoRecordset::CanScroll レコードをスクロールできる場合は、0 以外の値を返します。
CDaoRecordset::CanTransact データ ソースがトランザクションをサポートしている場合は、0 以外の値を返します。
CDaoRecordset::CanUpdate レコードセットを更新できる (レコードを追加、更新、または削除できる) 場合は、0 以外の値を返します。
CDaoRecordset::Close レコードセットを閉じます。
CDaoRecordset::D elete レコードセットから現在のレコードを削除します。 削除後、別のレコードまで明示的にスクロールする必要があります。
CDaoRecordset::D oFieldExchange レコードセットのフィールド データ メンバーとデータ ソース上の対応するレコードの間でデータを (双方向に) 交換するために呼び出されます。 DAO レコード フィールド交換 (DFX) を実装します。
CDaoRecordset::Edit 現在のレコードに対する変更を準備します。 呼び出 Update して編集を完了します。
CDaoRecordset::FillCache ODBC データ ソースからのデータを含むレコードセット オブジェクトのローカル キャッシュのすべてまたは一部を入力します。
CDaoRecordset::Find 指定した基準を満たし、そのレコードを現在のレコードにするダイナセットタイプのレコードセット内の特定の文字列の最初、次、前、または最後の位置を検索します。
CDaoRecordset::FindFirst 指定した条件を満たし、そのレコードを現在のレコードにするダイナセットタイプまたはスナップショットタイプのレコードセット内の最初のレコードを検索します。
CDaoRecordset::FindLast 指定した基準を満たし、そのレコードを現在のレコードにするダイナセットタイプまたはスナップショットタイプのレコードセット内の最後のレコードを検索します。
CDaoRecordset::FindNext 指定した条件を満たし、そのレコードを現在のレコードにするダイナセットタイプまたはスナップショットタイプのレコードセット内の次のレコードを検索します。
CDaoRecordset::FindPrev 指定した基準を満たし、そのレコードを現在のレコードにするダイナセットタイプまたはスナップショットタイプのレコードセット内の前のレコードを検索します。
CDaoRecordset::GetAbsolutePosition レコードセット オブジェクトの現在のレコードのレコード番号を返します。
CDaoRecordset::GetBookmark レコードのブックマークを表す値を返します。
CDaoRecordset::GetCacheSize ODBC データ ソースからローカルにキャッシュされるデータを含むダイナセットタイプのレコードセット内のレコードの数を指定する値を返します。
CDaoRecordset::GetCacheStart キャッシュするレコードセットの最初のレコードのブックマークを指定する値を返します。
CDaoRecordset::GetCurrentIndex インデックス付きの CString テーブル型で最近使用されたインデックスの名前を含む値を返します CDaoRecordset
CDaoRecordset::GetDateCreated オブジェクトの基になるベース テーブルが作成された日時を CDaoRecordset 返します。
CDaoRecordset::GetDateLastUpdated オブジェクトの基になる基本テーブルのデザインに対して行われた最新の変更の日時を CDaoRecordset 返します。
CDaoRecordset::GetDefaultDBName 既定のデータ ソースの名前を返します。
CDaoRecordset::GetDefaultSQL 実行する既定の SQL 文字列を取得するために呼び出されます。
CDaoRecordset::GetEditMode 現在のレコードの編集状態を示す値を返します。
CDaoRecordset::GetFieldCount レコードセット内のフィールドの数を表す値を返します。
CDaoRecordset::GetFieldInfo レコードセット内のフィールドに関する特定の種類の情報を返します。
CDaoRecordset::GetFieldValue レコードセット内のフィールドの値を返します。
CDaoRecordset::GetIndexCount レコードセットの基になるテーブル内のインデックスの数を取得します。
CDaoRecordset::GetIndexInfo インデックスに関するさまざまな種類の情報を返します。
CDaoRecordset::GetLastModifiedBookmark 最近追加または更新されたレコードを決定するために使用されます。
CDaoRecordset::GetLockingMode 編集中に有効なロックの種類を示す値を返します。
CDaoRecordset::GetName レコードセットの CString 名前を含む値を返します。
CDaoRecordset::GetParamValue 基になる DAOParameter オブジェクトに格納されている指定されたパラメーターの現在の値を取得します。
CDaoRecordset::GetPercentPosition 現在のレコードの位置を、レコードの合計数に対する割合として返します。
CDaoRecordset::GetRecordCount レコードセット オブジェクトでアクセスされるレコードの数を返します。
CDaoRecordset::GetSQL レコードセットのレコードを選択するために使用する SQL 文字列を取得します。
CDaoRecordset::GetType レコードセットの種類 (テーブルタイプ、ダイナセットタイプ、またはスナップショットタイプ) を決定するために呼び出されます。
CDaoRecordset::GetValidationRule フィールドに CString 入力されたデータを検証する値を含む値を返します。
CDaoRecordset::GetValidationText 検証規則が満たされていない場合に表示されるテキストを取得します。
CDaoRecordset::IsBOF レコードセットが最初のレコードの前に配置されている場合は、0 以外の値を返します。 現在のレコードはありません。
CDaoRecordset::IsDeleted レコードセットが削除されたレコードに配置されている場合は、0 以外の値を返します。
CDaoRecordset::IsEOF レコードセットが最後のレコードの後に配置されている場合は、0 以外の値を返します。 現在のレコードはありません。
CDaoRecordset::IsFieldDirty 現在のレコード内の指定したフィールドが変更された場合は、0 以外の値を返します。
CDaoRecordset::IsFieldNull 現在のレコード内の指定したフィールドが Null (値を持たない) の場合は、0 以外の値を返します。
CDaoRecordset::IsFieldNullable 現在のレコード内の指定したフィールドを Null (値を持たない) に設定できる場合は、0 以外の値を返します。
CDaoRecordset::IsOpen Open が以前に呼び出された場合は、0 以外の値を返します。
CDaoRecordset::Move レコードセットを、現在のレコードの指定された数のレコードに、どちらの方向にも配置します。
CDaoRecordset::MoveFirst レコードセットの最初のレコードに現在のレコードを配置します。
CDaoRecordset::MoveLast レコードセット内の最後のレコードに現在のレコードを配置します。
CDaoRecordset::MoveNext レコードセット内の次のレコードに現在のレコードを配置します。
CDaoRecordset::MovePrev レコードセット内の前のレコードに現在のレコードを配置します。
CDaoRecordset::Open テーブル、ダイナセット、またはスナップショットから新しいレコードセットを作成します。
CDaoRecordset::Requery レコードセットのクエリをもう一度実行して、選択したレコードを更新します。
CDaoRecordset::Seek 現在のインデックスの指定した条件を満たし、そのレコードを現在のレコードにするインデックス付きテーブル型レコードセット オブジェクト内のレコードを検索します。
CDaoRecordset::SetAbsolutePosition レコードセット オブジェクトの現在のレコードのレコード番号を設定します。
CDaoRecordset::SetBookmark 指定したブックマークを含むレコードにレコードセットを配置します。
CDaoRecordset::SetCacheSize ODBC データ ソースからローカルにキャッシュされるデータを含むダイナセットタイプのレコードセット内のレコードの数を指定する値を設定します。
CDaoRecordset::SetCacheStart キャッシュするレコードセットの最初のレコードのブックマークを指定する値を設定します。
CDaoRecordset::SetCurrentIndex テーブル型レコードセットのインデックスを設定するために呼び出されます。
CDaoRecordset::SetFieldDirty 現在のレコード内の指定したフィールドを変更としてマークします。
CDaoRecordset::SetFieldNull 現在のレコード内の指定したフィールドの値を Null (値なし) に設定します。
CDaoRecordset::SetFieldValue レコードセット内のフィールドの値を設定します。
CDaoRecordset::SetFieldValueNull レコードセット内のフィールドの値を Null に設定します。 (値がありません)。
CDaoRecordset::SetLockingMode 編集中に有効にするロックの種類を示す値を設定します。
CDaoRecordset::SetParamValue 基になる DAOParameter オブジェクトに格納されている指定されたパラメーターの現在の値を設定します。
CDaoRecordset::SetParamValueNull 指定したパラメーターの現在の値を Null (値なし) に設定します。
CDaoRecordset::SetPercentPosition 現在のレコードの位置を、レコードセット内のレコードの合計数に対する割合に対応する位置に設定します。
CDaoRecordset::Update AddNew新しいデータまたは編集されたデータをデータ ソースに保存して、またはEdit操作を完了します。

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

名前 説明
CDaoRecordset::m_bCheckCacheForDirtyFields フィールドが自動的に変更済みとしてマークされるかどうかを示すフラグが含まれます。
CDaoRecordset::m_nFields レコードセット クラスのフィールド データ メンバーの数と、データ ソースからレコードセットによって選択された列の数を格納します。
CDaoRecordset::m_nParams レコードセット クラスのパラメーター データ メンバーの数を格納します。レコードセットのクエリで渡されたパラメーターの数です。
CDaoRecordset::m_pDAORecordset レコードセット オブジェクトの基になる DAO インターフェイスへのポインター。
CDaoRecordset::m_pDatabase この結果セットのソース データベース。 CDaoDatabase オブジェクトへのポインターを格納します。
CDaoRecordset::m_strFilter SQL WHERE ステートメントの構築に使用される文字列を格納します。
CDaoRecordset::m_strSort SQL ORDER BY ステートメントの構築に使用される文字列が含まれています。

解説

"レコードセット" CDaoRecordset と呼ばれるオブジェクトは、次の 3 つの形式で使用できます。

  • テーブル型レコードセットは、1 つのデータベース テーブルのレコードの調査、追加、変更、または削除に使用できるベース テーブルを表します。

  • ダイナセットタイプのレコードセットは、更新可能なレコードを持つクエリの結果です。 これらのレコードセットは、基になるデータベース テーブルまたはテーブルのレコードの調査、追加、変更、または削除に使用できる一連のレコードです。 Dynaset タイプのレコードセットには、データベース内の 1 つ以上のテーブルのフィールドを含めることができます。

  • スナップショットタイプのレコードセットは、データの検索やレポートの生成に使用できる一連のレコードの静的コピーです。 これらのレコードセットには、データベース内の 1 つ以上のテーブルのフィールドを含めることができますが、更新することはできません。

各形式のレコードセットは、レコードセットを開いた時点で固定されたレコードのセットを表します。 テーブルタイプのレコードセットまたはダイナセットタイプのレコードセット内のレコードまでスクロールすると、レコードセットを開いた後に、他のユーザーまたはアプリケーション内の他のレコードセットによって行われた変更が反映されます。 (スナップショットタイプのレコードセットは更新できません。直接使用CDaoRecordsetすることも、アプリケーション固有のレコードセット クラスCDaoRecordsetを派生することもできます。 次に以下のことを行えます。

  • レコードをスクロールします。

  • Seek (テーブル型レコードセットのみ) を使用してインデックスを設定し、レコードをすばやく検索します。

  • 文字列比較に基づいてレコードを検索します:"<"、"<="、"="、">="、または ">" (ダイナセット型およびスナップショット型のレコードセット)。

  • レコードを更新し、ロック モードを指定します (スナップショット タイプのレコードセットを除く)。

  • レコードセットをフィルター処理して、データ ソースで使用可能なレコードから選択するレコードを制限します。

  • レコードセットを並べ替えます。

  • 実行時まで不明な情報でレコードセットの選択をカスタマイズするには、パラメーター化します。

クラスは、クラス CDaoRecordset と同様のインターフェイスを提供します CRecordset。 メイン違いは、クラスCDaoRecordsetが OLE に基づいてデータ アクセス オブジェクト (DAO) を介してデータにアクセスすることです。 クラス CRecordset は、Open Database Connectivity (ODBC) と、その DBMS の ODBC ドライバーを介して DBMS にアクセスします。

Note

DAO データベース クラスは、Open Database Connectivity (ODBC) に基づく MFC データベース クラスとは異なります。 すべての DAO データベース クラス名には、"CDao" プレフィックスがあります。 DAO クラスを使用して ODBC データ ソースに引き続きアクセスできます。DAO クラスは、Microsoft Jet データベース エンジンに固有であるため、一般に優れた機能を提供します。

直接使用 CDaoRecordset することも、クラスの派生元に CDaoRecordsetすることもできます。 どちらの場合もレコードセット クラスを使用するには、データベースを開き、レコードセット オブジェクトを構築し、コンストラクターにオブジェクトへのポインターを CDaoDatabase 渡します。 また、オブジェクトを CDaoRecordset 構築し、MFC で一時 CDaoDatabase オブジェクトを作成することもできます。 次に、オブジェクトがテーブルタイプのレコードセット、ダイナセットタイプのレコードセット、またはスナップショットタイプのレコードセットのいずれであるかを指定して、レコードセットの Open メンバー関数を呼び出します。 呼び出すと Open 、データベースからデータが選択され、最初のレコードが取得されます。

オブジェクトのメンバー関数とデータ メンバーを使用して、レコードをスクロールして操作します。 使用できる操作は、オブジェクトがテーブルタイプのレコードセット、ダイナセットタイプのレコードセット、またはスナップショットタイプのレコードセットであるかどうか、および更新可能であるか読み取り専用であるかによって異なります。これは、データベースまたは Open Database Connectivity (ODBC) データ ソースの機能によって異なります。 呼び出し以降に変更または追加された可能性のあるレコードを Open 更新するには、オブジェクトの Requery メンバー関数を呼び出します。 オブジェクト Close のメンバー関数を呼び出し、終了したらオブジェクトを破棄します。

CDaoRecordsetは、DAO レコード フィールド交換 (DFX) を使用して、ユーザーまたはCDaoRecordset派生クラスのタイプ セーフな C++ メンバーを使用したレコード フィールドの読み取りと更新をCDaoRecordsetサポートします。 GetFieldValue と SetFieldValue を使用する DFX メカニズムを使用せずに、データベース内の列の動的バインドを実装することもできます。

関連情報については、DAO ヘルプの「Recordset オブジェクト」を参照してください。

継承階層

CObject

CDaoRecordset

必要条件

ヘッダー: afxdao.h

CDaoRecordset::AddNew

このメンバー関数を呼び出して、テーブルタイプまたはダイナセットタイプのレコードセットに新しいレコードを追加します。

virtual void AddNew();

解説

レコードのフィールドは最初は Null です。 (データベース用語では、Null は "値を持たない" ことを意味し、C++ では NULL と同じではありません)。操作を完了するには、Update メンバー関数を呼び出す必要があります。 Update は、変更をデータ ソースに保存します。

注意事項

レコードを編集した後、呼び出 Updateさずに別のレコードまでスクロールすると、変更は警告なしに失われます。

AddNew を呼び出してダイナセットタイプのレコードセットにレコードを追加すると、レコードはレコードセットに表示され、基になるテーブルに含まれます。このレコードは、新しいCDaoRecordsetオブジェクトに表示されます。

新しいレコードの位置は、レコードセットの種類によって異なります。

  • ダイナセットタイプのレコードセットでは、新しいレコードが挿入される保証はありません。 この動作は、パフォーマンスとコンカレンシーの理由から Microsoft Jet 3.0 で変更されました。 新しく追加したレコードを現在のレコードにすることが目的の場合は、最後に変更されたレコードのブックマークを取得し、そのブックマークに移動します。
rs.SetBookmark(rs.GetLastModifiedBookmark());
  • インデックスが指定されているテーブル型レコードセットでは、レコードは並べ替え順序で適切な場所に返されます。 インデックスが指定されていない場合は、レコードセットの末尾に新しいレコードが返されます。

現在メイン使用AddNewする前の最新のレコード。 新しいレコードを最新の状態にし、レコードセットがブックマークをサポートしている場合は、基になる DAO レコードセット オブジェクトの LastModified プロパティ設定で識別されるブックマークに SetBookmark を呼び出します。 これを行うと、追加されたレコードのカウンター (自動インクリメント) フィールドの値を決定するのに役立ちます。 詳細については、「GetLastModifiedBookmark」を参照してください

データベースがトランザクションをサポートしている場合は、呼び出しを AddNew トランザクションの一部にすることができます。 トランザクションの詳細については、CDaoWorkspace クラスを参照してください。 呼び出す前に CDaoWorkspace::BeginTrans を呼び出すAddNew必要があることに注意してください。

Open メンバー関数が呼び出されていないレコードセットの呼び出AddNewしは無効です。 追加できないレコードセットを呼び出AddNewすと、A CDaoException がスローされます。 CanAppend を呼び出すことで、レコードセットが更新可能かどうかを判断できます。

フレームワークは、変更されたフィールド データ メンバーが DAO レコード フィールド交換 (DFX) メカニズムによってデータ ソースのレコードに確実に書き込まれるようにマークします。 通常、フィールドの値を変更すると、フィールドダーティが自動的に設定されるため、SetFieldDirty を自分で呼び出す必要はほとんどありませんが、フィールド データ メンバー内の値に関係なく、列が明示的に更新または挿入されるようにしたい場合があります。 DFX メカニズムでは、P Standard Edition UDO NULL も使用されます。 詳細については、「CDaoFieldExchange::m_nOperation」を 参照してください

ダブル バッファリング メカニズムが使用されていない場合、フィールドの値を変更しても、フィールドは自動的にダーティとして設定されません。 この場合は、フィールドダーティを明示的に設定する必要があります。 m_bCheckCacheForDirtyFields含まれるフラグは、この自動フィールドのチェックを制御します。

Note

レコードがダブル バッファリングされている場合 (つまり、フィールドの自動チェックが有効になっている場合)、呼び出しCancelUpdateはメンバー変数を以前AddNewまたはEdit呼び出された値に復元します。

関連情報については、DAO ヘルプの「AddNew メソッド」、「CancelUpdate メソッド」、「LastModified プロパティ」、「EditMode プロパティ」の各トピックを参照してください。

CDaoRecordset::CanAppend

このメンバー関数を呼び出して、以前に開いたレコードセットで AddNew メンバー関数を呼び出して新しいレコードを追加できるかどうかを判断します。

BOOL CanAppend() const;

戻り値

レコードセットで新しいレコードを追加できる場合は 0 以外。それ以外の場合は 0。 CanAppend レコードセットを読み取り専用として開いた場合、0 が返されます。

解説

関連情報については、DAO ヘルプの「Append メソッド」を参照してください。

CDaoRecordset::CanBookmark

このメンバー関数を呼び出して、以前に開いたレコードセットでブックマークを使用してレコードを個別にマークできるかどうかを判断します。

BOOL CanBookmark();

戻り値

レコードセットがブックマークをサポートしている場合は 0 以外、それ以外の場合は 0。

解説

Microsoft Jet データベース エンジン テーブルに完全に基づくレコードセットを使用している場合は、前方スクロール レコードセットとしてフラグが設定されたスナップショットタイプのレコードセットを除き、ブックマークを使用できます。 他のデータベース製品 (外部 ODBC データ ソース) ではブックマークがサポートされない場合があります。

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

CDaoRecordset::CancelUpdate

メンバー関数はCancelUpdate、Edit または AddNew 操作が原因で保留中の更新を取り消します。

virtual void CancelUpdate();

解説

たとえば、アプリケーションが Or AddNew メンバー関数をEdit呼び出し、Update を呼び出していない場合は、CancelUpdateび出された後またはAddNew呼び出された変更Editを取り消します。

Note

レコードがダブル バッファリングされている場合 (つまり、フィールドの自動チェックが有効になっている場合)、呼び出しCancelUpdateはメンバー変数を以前AddNewまたはEdit呼び出された値に復元します。

保留中またはAddNew操作がないEdit場合は、 CancelUpdate MFC によって例外がスローされます。 GetEditMode メンバー関数を呼び出して、取り消すことができる保留中の操作があるかどうかを判断します。

関連情報については、DAO ヘルプのトピック「CancelUpdate メソッド」を参照してください。

CDaoRecordset::CanRestart

このメンバー関数を呼び出して、レコードセットがメンバー関数を呼び出 Requery すことによってクエリの再起動 (レコードの更新) を許可するかどうかを判断します。

BOOL CanRestart();

戻り値

レコードセットのクエリを再度実行するために呼び出すことができる場合 Requery は 0 以外、それ以外の場合は 0。

解説

テーブル型レコードセットはサポート Requeryされていません。

サポートされていない場合Requeryは、[閉じる] を呼び出し、[開く] を呼び出してデータを更新します。 パラメーター値が変更された後で、レコードセット オブジェクトの基になるパラメーター クエリを更新するために呼び出 Requery すことができます。

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

CDaoRecordset::CanScroll

このメンバー関数を呼び出して、レコードセットがスクロールを許可するかどうかを判断します。

BOOL CanScroll() const;

戻り値

レコードをスクロールできる場合は 0 以外、それ以外の場合は 0。

解説

Open with をdbForwardOnly呼び出すと、レコードセットは前方にのみスクロールできます。

関連情報については、DAO ヘルプの「DAO を使用した現在のレコード ポインターの配置」を参照してください。

CDaoRecordset::CanTransact

レコードセットがトランザクションを許可するかどうかを判断するには、このメンバー関数を呼び出します。

BOOL CanTransact();

戻り値

基になるデータ ソースがトランザクションをサポートしている場合は 0 以外、それ以外の場合は 0。

解説

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

CDaoRecordset::CanUpdate

このメンバー関数を呼び出して、レコードセットを更新できるかどうかを判断します。

BOOL CanUpdate() const;

戻り値

レコードセットを更新できる場合は 0 以外 (レコードの追加、更新、削除)、それ以外の場合は 0。

解説

基になるデータ ソースが読み取り専用の場合、またはレコードセットに対して Open を呼び出したときに nOptions指定したdbReadOnly場合、レコードセットは読み取り専用になることがあります。

関連情報については、DAO ヘルプのトピック「AddNew メソッド」、「メソッドの編集」、「メソッドの削除」、「メソッドの更新」、および「更新可能なプロパティ」を参照してください。

CDaoRecordset::CDaoRecordset

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

CDaoRecordset(CDaoDatabase* pDatabase = NULL);

パラメーター

pDatabase
CDaoDatabase オブジェクトまたは値 NULL へのポインターを格納します。 NULL でなく、 CDaoDatabase オブジェクトの Open メンバー関数がデータ ソースに接続するために呼び出されていない場合、レコードセットは独自 の Open 呼び出し中に開こうとします。 NULL を渡すと、 CDaoDatabase レコードセット クラス CDaoRecordsetを派生させた場合に指定したデータ ソース情報を使用して、オブジェクトが構築され、接続されます。

解説

直接使用 CDaoRecordset するか、アプリケーション固有のクラス CDaoRecordsetを派生させることができます。 ClassWizard を使用して、レコードセット クラスを派生させることができます。

Note

クラスを派生させる CDaoRecordset 場合、派生クラスは独自のコンストラクターを指定する必要があります。 派生クラスのコンストラクターで、適切なパラメーターを渡してコンストラクターを呼び出します CDaoRecordset::CDaoRecordset

オブジェクトを自動的に構築して接続するには、 CDaoDatabase NULL をレコードセット コンストラクターに渡します。 これは便利なショートカットであり、レコードセットを作成する前にオブジェクトを CDaoDatabase 構築して接続する必要はありません。 オブジェクトが CDaoDatabase 開かない場合は、既定の ワークスペースを使用する CDaoWorkspace オブジェクトも自動的に作成されます。 詳細については、「CDaoDatabase::CDaoDatabase」を参照してください

CDaoRecordset::Close

オブジェクトを CDaoRecordset 閉じると、関連付けられているデータベース内の開いているレコードセットのコレクションからオブジェクトが削除されます。

virtual void Close();

解説

CloseオブジェクトはCDaoRecordset破棄されないため、同じデータ ソースまたは別のデータ ソースを呼び出Openすことによって、オブジェクトを再利用できます。

保留中 のすべての AddNew ステートメントまたは Edit ステートメントが取り消され、保留中のすべてのトランザクションがロールバックされます。 保留中の追加または編集を保持する場合は、レコードセットごとに呼び出す前に Update を呼びCloseします。

呼び出した後にもう一度呼び出OpenCloseすことができます。 これにより、レコードセット オブジェクトを再利用できます。 可能であれば、Requery を呼び出す方が良い方法です。

関連情報については、DAO ヘルプの「Close メソッド」を参照してください。

CDaoRecordset::D elete

このメンバー関数を呼び出して、開いているダイナセット タイプまたはテーブル タイプのレコードセット オブジェクトの現在のレコードを削除します。

virtual void Delete();

解説

削除が成功すると、レコードセットのフィールド データ メンバーは Null 値に設定され、削除されたレコードから移動するには、レコードセット ナビゲーション メンバー関数 (Move、SeekSetBookmark など) のいずれかを明示的に呼び出す必要があります。 レコードセットからレコードを削除する場合は、呼び出す Delete前にレコードセットに現在のレコードが存在する必要があります。それ以外の場合、MFC は例外をスローします。

Delete は現在のレコードを削除し、アクセスできないようにします。 削除されたレコードを編集または使用することはできませんが、現在メインされます。 ただし、別のレコードに移動すると、削除されたレコードを再び最新の状態にすることはできません。

注意事項

レコードセットは更新可能である必要があり、呼び出 Deleteすときにレコードセット内に有効なレコードが存在する必要があります。 たとえば、レコードを削除しても、再度呼び出す Delete 前に新しいレコードまでスクロールしない場合、 Delete CDaoException がスロー されます

トランザクションを使用し、CDaoWorkspace::Rollback メンバー関数を呼び出すと、レコードの削除を取り消すことができます。 ベース テーブルが連鎖削除リレーションシップのプライマリ テーブルである場合、現在のレコードを削除すると、外部テーブル内の 1 つ以上のレコードが削除される場合もあります。 詳細については、DAO ヘルプの「連鎖削除」の定義を参照してください。

とは異なりAddNewEdit呼び出しの後UpdateDelete .

関連情報については、DAO ヘルプのトピック「AddNew メソッド」、「メソッドの編集」、「メソッドの削除」、「メソッドの更新」、および「更新可能なプロパティ」を参照してください。

CDaoRecordset::D oFieldExchange

フレームワークは、このメンバー関数を呼び出して、レコードセット オブジェクトのフィールド データ メンバーと、データ ソース上の現在のレコードの対応する列の間でデータを自動的に交換します。

virtual void DoFieldExchange(CDaoFieldExchange* pFX);

パラメーター

Pfx
オブジェクトへのポインターを CDaoFieldExchange 格納します。 フレームワークでは、フィールド交換操作のコンテキストを指定するために、このオブジェクトが既に設定されています。

解説

また、パラメーター データ メンバー (存在する場合) を、レコードセットの選択に使用する SQL ステートメント文字列のパラメーター プレースホルダーにバインドします。 DAO レコード フィールド交換 (DFX) と呼ばれるフィールド データの交換は、レコードセット オブジェクトのフィールド データ メンバーからデータ ソースのレコードのフィールド、およびデータ ソースのレコードからレコード セット オブジェクトへの双方向で機能します。 列を動的にバインドする場合は、実装 DoFieldExchangeする必要はありません。

派生レコードセット クラスに実装するために DoFieldExchange 通常実行する必要がある唯一のアクションは、ClassWizard を使用してクラスを作成し、フィールド データ メンバーの名前とデータ型を指定することです。 パラメーター データ メンバーを指定するために ClassWizard が書き込むコードを追加することもできます。 パラメーター データ メンバーを指定しない限り、すべてのフィールドを動的にバインドする場合、この関数は非アクティブになります。

ClassWizard を使用して派生レコードセット クラスを宣言すると、ウィザードによってオーバーライド DoFieldExchange が書き込まれます。これは次の例のようになります。

void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

CDaoRecordset::Edit

現在のレコードへの変更を許可するには、このメンバー関数を呼び出します。

virtual void Edit();

解説

メンバー関数を Edit 呼び出すと、現在のレコードのフィールドに加えられた変更がコピー バッファーにコピーされます。 レコードに必要な変更を加えた後、呼び出 Update して変更を保存します。 Edit は、レコードセットのデータ メンバーの値を保存します。 呼び出 Editして変更を加えた後、再度呼び出 Edit すと、レコードの値は最初 Edit の呼び出しの前の値に復元されます。

注意事項

レコードを編集した後、最初に呼び出 Updateさずに別のレコードに移動する操作を実行すると、変更は警告なしで失われます。 さらに、レコードセットまたは親データベースを閉じると、編集したレコードは警告なしでカード削除されます。

場合によっては、列を Null (データを含まない) にして更新することが必要になる場合があります。 これを行うには、TRUE のパラメーターを指定してフィールド Null をマークする呼び出し SetFieldNull を行います。これにより、列も更新されます。 値が変更されていない場合でもフィールドをデータ ソースに書き込む場合は、TRUE のパラメーターを指定して呼び出 SetFieldDirty します。 これは、フィールドの値が Null の場合でも機能します。

フレームワークは、変更されたフィールド データ メンバーが DAO レコード フィールド交換 (DFX) メカニズムによってデータ ソースのレコードに確実に書き込まれるようにマークします。 通常、フィールドの値を変更すると、フィールドダーティが自動的に設定されるため、SetFieldDirty を自分で呼び出す必要はほとんどありませんが、フィールド データ メンバー内の値に関係なく、列が明示的に更新または挿入されるようにしたい場合があります。 DFX メカニズムでは、P Standard Edition UDO NULL も使用されます。 詳細については、「CDaoFieldExchange::m_nOperation」を 参照してください

ダブル バッファリング メカニズムが使用されていない場合、フィールドの値を変更しても、フィールドは自動的にダーティとして設定されません。 この場合は、フィールドダーティを明示的に設定する必要があります。 m_bCheckCacheForDirtyFields含まれるフラグは、この自動フィールドのチェックを制御します。

レコードセット オブジェクトがマルチユーザー環境で悲観的にロックされている場合、その時点Editからロックされたレコードメインは更新が完了するまで使用されます。 レコードセットが楽観的にロックされている場合、レコードはロックされ、データベースで更新される直前に事前に編集されたレコードと比較されます。 呼び出 Editしてからレコードが変更された場合、操作は Update 失敗し、MFC は例外をスローします。 でロックモード SetLockingModeを変更できます。

Note

オプティミスティック ロックは、ODBC やインストール可能な ISAM などの外部データベース形式で常に使用されます。

現在のレコードは、呼び出Editした後メイン現在のレコードです。 呼び出すには Edit、現在のレコードが存在する必要があります。 現在のレコードがない場合、またはレコードセットが開いているテーブルタイプまたはダイナセットタイプのレコードセットオブジェクトを参照していない場合は、例外が発生します。 呼び出すと Edit 、次の条件下で a CDaoException がスローされます。

  • 現在のレコードはありません。

  • データベースまたはレコードセットは読み取り専用です。

  • レコード内のフィールドは更新できません。

  • データベースまたはレコードセットは、別のユーザーが排他的に使用するために開かれました。

  • 別のユーザーがレコードを含むページをロックしました。

データ ソースがトランザクションをサポートしている場合は、呼び出しを Edit トランザクションの一部にすることができます。 呼び出す前に、レコードセットを開いた後に呼び出CDaoWorkspace::BeginTransEditす必要があることに注意してください。 また、呼び出し CDaoWorkspace::CommitTrans は、操作を完了するための呼び出し Update の代わりではないことに Edit 注意してください。 トランザクションの詳細については、クラス CDaoWorkspaceを参照してください。

関連情報については、DAO ヘルプのトピック「AddNew メソッド」、「メソッドの編集」、「メソッドの削除」、「メソッドの更新」、および「更新可能なプロパティ」を参照してください。

CDaoRecordset::FillCache

レコードセットから指定した数のレコードをキャッシュするには、このメンバー関数を呼び出します。

void FillCache(
    long* pSize = NULL,
    COleVariant* pBookmark = NULL);

パラメーター

pSize
キャッシュに格納する行数を指定します。 このパラメーターを省略した場合、値は基になる DAO オブジェクトの CacheSize プロパティ設定によって決まります。

pBookmark
ブックマークを指定する COleVariant。 キャッシュは、このブックマークによって示されるレコードから開始して塗りつぶされます。 このパラメーターを省略すると、基になる DAO オブジェクトの CacheStart プロパティによって示されるレコードからキャッシュが塗りつぶされます。

解説

キャッシュを使用すると、リモート サーバーからデータを取得またはフェッチするアプリケーションのパフォーマンスが向上します。 キャッシュとは、アプリケーションの実行中にデータが再び要求される可能性があることを前提として、サーバーから最後にフェッチされたデータを保持するローカル メモリ内の領域です。 データが要求されると、Microsoft Jet データベース エンジンは、サーバーからデータをフェッチするのではなく、最初にデータのキャッシュをチェックします。これには時間がかかります。 ODBC 以外のデータ ソースでデータ キャッシュを使用しても、データはキャッシュに保存されないため、効果はありません。

キャッシュがフェッチされる際にレコードが格納されるのを待つのではなく、メンバー関数を呼び出すことで、いつでもキャッシュを明示的に FillCache 埋めることができます。 これは、一度に 1 つではなく一度に複数のレコードをフェッチするため FillCache 、キャッシュを埋めるより高速な方法です。 たとえば、各スクリーンフルなレコードが表示されている間に、アプリケーションを呼び出 FillCache して次のスクリーンフルレコードをフェッチすることができます。

レコードセット オブジェクトでアクセスされる ODBC データベースには、ローカル キャッシュを使用できます。 キャッシュを作成するには、リモート データ ソースからレコードセット オブジェクトを開き、レコードセットの SetCacheSize メンバー関数を SetCacheStart 呼び出します。 lSize と lBookmark によって指定された範囲の一部または全部が範囲外の範囲が作成されたSetCacheStartSetCacheSize場合、この範囲外のレコードセットの部分は無視され、キャッシュに読み込まれません。 リモート データ ソースで reメイン より多くのレコードを要求した場合FillCache、再メインレコードのみがフェッチされ、例外はスローされません。

キャッシュからフェッチされたレコードは、他のユーザーによってソース データに同時に行われた変更を反映しません。

FillCache は、まだキャッシュされていないレコードのみをフェッチします。 キャッシュされたすべてのデータを強制的に更新するには、lSize パラメーターが 0 のメンバー関数を呼び出SetCacheSizeし、最初に要求したキャッシュのサイズと同じ lSize パラメーターを使用して再度呼SetCacheSizeび出してから呼び出FillCacheします。

関連情報については、DAO ヘルプの「FillCache メソッド」を参照してください。

CDaoRecordset::Find

このメンバー関数を呼び出して、比較演算子を使用してダイナセットまたはスナップショットタイプのレコードセット内の特定の文字列を検索します。

virtual BOOL Find(
    long lFindType,
    LPCTSTR lpszFilter);

パラメーター

lFindType
必要な検索操作の種類を示す値。 指定できる値は、

  • AFX_DAO_NEXT一致する文字列の次の場所を検索します。

  • AFX_DAO_PREV 一致する文字列の前の場所を検索します。

  • AFX_DAO_FIRST 一致する文字列の最初の場所を検索します。

  • AFX_DAO_LAST 一致する文字列の最後の場所を検索します。

Lpszfilter
レコードの検索に使用される文字列式 (WHERE という単語のない SQL ステートメントの WHERE 句など)。 次に例を示します。

rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));

戻り値

一致するレコードが見つかった場合は 0 以外、それ以外の場合は 0。

解説

文字列の最初、次、前、または最後のインスタンスを見つけることができます。 Find は仮想関数であるため、オーバーライドして独自の実装を追加できます。 、、およびメンバー関数はFindFirstメンバー関数をFind呼び出して、すべての Find 操作の動作を制御するために使用Findできます。FindPrevFindNextFindLast

テーブル型レコードセット内のレコードを検索するには、Seek メンバー関数を呼び出します。

ヒント

レコードのセットが小さいほど、より効果的 Find になります。 一般に、特に ODBC データでは、必要なレコードだけを取得する新しいクエリを作成することをお勧めします。

関連情報については、DAO ヘルプのトピック「FindFirst、FindLast、FindNext、FindPrevious メソッド」を参照してください。

CDaoRecordset::FindFirst

このメンバー関数を呼び出して、指定した条件に一致する最初のレコードを検索します。

BOOL FindFirst(LPCTSTR lpszFilter);

パラメーター

Lpszfilter
レコードの検索に使用される文字列式 (WHERE という単語のない SQL ステートメントの WHERE 句など)。

戻り値

一致するレコードが見つかった場合は 0 以外、それ以外の場合は 0。

解説

メンバー関数は FindFirst 、レコードセットの先頭から検索を開始し、レコードセットの末尾まで検索します。

(特定の条件を満たすレコードだけでなく) すべてのレコードを検索に含める場合は、いずれかの移動操作を使用してレコード間を移動します。 テーブル型レコードセット内のレコードを検索するには、メンバー関数を Seek 呼び出します。

条件に一致するレコードが見つからない場合、現在のレコード ポインターは不確定になり FindFirst 、0 が返されます。 レコードセットに条件を満たす複数のレコードが含まれている場合は、 FindFirst 最初の出現箇所を検索し、 FindNext 次に出現するレコードを検索します。

注意事項

現在のレコードを編集する場合は、別のレコードに移動する前にメンバー関数を Update 呼び出して変更を保存してください。 更新せずに別のレコードに移動すると、変更は警告なしで失われます。

メンバー関数は Find 、次の表に示す位置と方向から検索します。

検索操作 Begin 検索の方向
FindFirst レコードセットの先頭 レコードセットの末尾
FindLast レコードセットの末尾 レコードセットの先頭
FindNext 現在のレコード レコードセットの末尾
FindPrevious 現在のレコード レコードセットの先頭

Note

呼び出 FindLastすと、検索を開始する前に、Microsoft Jet データベース エンジンによってレコードセットが完全に設定されます (まだ完了していない場合)。 最初の検索には、後続の検索よりも長い時間がかかる場合があります。

Find 操作の 1 つを使用することは、呼び出し MoveFirstMoveNext同じではなく、条件を指定せずに最初または次のレコードを最新の状態にするだけです。 移動操作では、検索操作に従うことができます。

検索操作を使用する場合は、次の点に注意してください。

  • 0 以外の値が返された場合 Find 、現在のレコードは定義されません。 この場合は、現在のレコード ポインターを有効なレコードに戻す必要があります。

  • 前方スクロールスナップショットタイプのレコードセットでは、検索操作を使用できません。

  • 米国バージョンの Microsoft Jet データベース エンジンを使用していない場合でも、日付を含むフィールドを検索する場合は、米国の日付形式 (月日-年) を使用する必要があります。そうしないと、一致するレコードが見つからない可能性があります。

  • ODBC データベースと大きなダイナセットを操作する場合、特に大きなレコードセットを操作する場合は、検索操作の使用が遅くなる場合があります。 カスタマイズされた ORDERBY 句、 WHERE 句、パラメーター クエリ、または CDaoQuerydef 特定のインデックス付きレコードを取得するオブジェクトで SQL クエリを使用することで、パフォーマンスを向上させることができます。

関連情報については、DAO ヘルプのトピック「FindFirst、FindLast、FindNext、FindPrevious メソッド」を参照してください。

CDaoRecordset::FindLast

このメンバー関数を呼び出して、指定した条件に一致する最後のレコードを検索します。

BOOL FindLast(LPCTSTR lpszFilter);

パラメーター

Lpszfilter
レコードの検索に使用される文字列式 (WHERE という単語のない SQL ステートメントの WHERE 句など)。

戻り値

一致するレコードが見つかった場合は 0 以外、それ以外の場合は 0。

解説

メンバー関数は FindLast 、レコードセットの末尾で検索を開始し、レコードセットの先頭に向かって後方に検索します。

(特定の条件を満たすレコードだけでなく) すべてのレコードを検索に含める場合は、いずれかの移動操作を使用してレコード間を移動します。 テーブル型レコードセット内のレコードを検索するには、メンバー関数を Seek 呼び出します。

条件に一致するレコードが見つからない場合、現在のレコード ポインターは不確定になり FindLast 、0 が返されます。 レコードセットに条件を満たす複数のレコードが含まれている場合は、 FindFirst 最初の出現箇所を検索し、 FindNext 最初の出現箇所の後に次の出現箇所を検索します。

注意事項

現在のレコードを編集する場合は、別のレコードに移動する前にメンバー関数を Update 呼び出して変更を保存してください。 更新せずに別のレコードに移動すると、変更は警告なしで失われます。

Find 操作の 1 つを使用することは、呼び出し MoveFirstMoveNext同じではなく、条件を指定せずに最初または次のレコードを最新の状態にするだけです。 移動操作では、検索操作に従うことができます。

検索操作を使用する場合は、次の点に注意してください。

  • 0 以外の値が返された場合 Find 、現在のレコードは定義されません。 この場合は、現在のレコード ポインターを有効なレコードに戻す必要があります。

  • 前方スクロールスナップショットタイプのレコードセットでは、検索操作を使用できません。

  • 米国バージョンの Microsoft Jet データベース エンジンを使用していない場合でも、日付を含むフィールドを検索する場合は、米国の日付形式 (月日-年) を使用する必要があります。そうしないと、一致するレコードが見つからない可能性があります。

  • ODBC データベースと大きなダイナセットを操作する場合、特に大きなレコードセットを操作する場合は、検索操作の使用が遅くなる場合があります。 カスタマイズされた ORDERBY 句、 WHERE 句、パラメーター クエリ、または CDaoQuerydef 特定のインデックス付きレコードを取得するオブジェクトで SQL クエリを使用することで、パフォーマンスを向上させることができます。

関連情報については、DAO ヘルプのトピック「FindFirst、FindLast、FindNext、FindPrevious メソッド」を参照してください。

CDaoRecordset::FindNext

このメンバー関数を呼び出して、指定した条件に一致する次のレコードを検索します。

BOOL FindNext(LPCTSTR lpszFilter);

パラメーター

Lpszfilter
レコードの検索に使用される文字列式 (WHERE という単語のない SQL ステートメントの WHERE 句など)。

戻り値

一致するレコードが見つかった場合は 0 以外、それ以外の場合は 0。

解説

メンバー関数は FindNext 、現在のレコードで検索を開始し、レコードセットの末尾まで検索します。

(特定の条件を満たすレコードだけでなく) すべてのレコードを検索に含める場合は、いずれかの移動操作を使用してレコード間を移動します。 テーブル型レコードセット内のレコードを検索するには、メンバー関数を Seek 呼び出します。

条件に一致するレコードが見つからない場合、現在のレコード ポインターは不確定になり FindNext 、0 が返されます。 レコードセットに条件を満たす複数のレコードが含まれている場合は、 FindFirst 最初の出現箇所を検索し、 FindNext 次に出現するレコードを検索します。

注意事項

現在のレコードを編集する場合は、別のレコードに移動する前にメンバー関数を Update 呼び出して変更を保存してください。 更新せずに別のレコードに移動すると、変更は警告なしで失われます。

Find 操作の 1 つを使用することは、呼び出し MoveFirstMoveNext同じではなく、条件を指定せずに最初または次のレコードを最新の状態にするだけです。 移動操作では、検索操作に従うことができます。

検索操作を使用する場合は、次の点に注意してください。

  • 0 以外の値が返された場合 Find 、現在のレコードは定義されません。 この場合は、現在のレコード ポインターを有効なレコードに戻す必要があります。

  • 前方スクロールスナップショットタイプのレコードセットでは、検索操作を使用できません。

  • 米国バージョンの Microsoft Jet データベース エンジンを使用していない場合でも、日付を含むフィールドを検索する場合は、米国の日付形式 (月日-年) を使用する必要があります。そうしないと、一致するレコードが見つからない可能性があります。

  • ODBC データベースと大きなダイナセットを操作する場合、特に大きなレコードセットを操作する場合は、検索操作の使用が遅くなる場合があります。 カスタマイズされた ORDERBY 句、 WHERE 句、パラメーター クエリ、または CDaoQuerydef 特定のインデックス付きレコードを取得するオブジェクトで SQL クエリを使用することで、パフォーマンスを向上させることができます。

関連情報については、DAO ヘルプのトピック「FindFirst、FindLast、FindNext、FindPrevious メソッド」を参照してください。

CDaoRecordset::FindPrev

このメンバー関数を呼び出して、指定した条件に一致する前のレコードを検索します。

BOOL FindPrev(LPCTSTR lpszFilter);

パラメーター

Lpszfilter
レコードの検索に使用される文字列式 (WHERE という単語のない SQL ステートメントの WHERE 句など)。

戻り値

一致するレコードが見つかった場合は 0 以外、それ以外の場合は 0。

解説

メンバー関数は FindPrev 、現在のレコードで検索を開始し、レコードセットの先頭に向かって後方に検索します。

(特定の条件を満たすレコードだけでなく) すべてのレコードを検索に含める場合は、いずれかの移動操作を使用してレコード間を移動します。 テーブル型レコードセット内のレコードを検索するには、メンバー関数を Seek 呼び出します。

条件に一致するレコードが見つからない場合、現在のレコード ポインターは不確定になり FindPrev 、0 が返されます。 レコードセットに条件を満たす複数のレコードが含まれている場合は、 FindFirst 最初の出現箇所を検索し、 FindNext 次に出現するレコードを検索します。

注意事項

現在のレコードを編集する場合は、別のレコードに移動する前にメンバー関数を Update 呼び出して変更を保存してください。 更新せずに別のレコードに移動すると、変更は警告なしで失われます。

Find 操作の 1 つを使用することは、呼び出し MoveFirstMoveNext同じではなく、条件を指定せずに最初または次のレコードを最新の状態にするだけです。 移動操作では、検索操作に従うことができます。

検索操作を使用する場合は、次の点に注意してください。

  • 0 以外の値が返された場合 Find 、現在のレコードは定義されません。 この場合は、現在のレコード ポインターを有効なレコードに戻す必要があります。

  • 前方スクロールスナップショットタイプのレコードセットでは、検索操作を使用できません。

  • 米国バージョンの Microsoft Jet データベース エンジンを使用していない場合でも、日付を含むフィールドを検索する場合は、米国の日付形式 (月日-年) を使用する必要があります。そうしないと、一致するレコードが見つからない可能性があります。

  • ODBC データベースと大きなダイナセットを操作する場合、特に大きなレコードセットを操作する場合は、検索操作の使用が遅くなる場合があります。 カスタマイズされた ORDERBY 句、 WHERE 句、パラメーター クエリ、または CDaoQuerydef 特定のインデックス付きレコードを取得するオブジェクトで SQL クエリを使用することで、パフォーマンスを向上させることができます。

関連情報については、DAO ヘルプのトピック「FindFirst、FindLast、FindNext、FindPrevious メソッド」を参照してください。

CDaoRecordset::GetAbsolutePosition

レコードセット オブジェクトの現在のレコードのレコード番号を返します。

long GetAbsolutePosition();

戻り値

0 からレコードセット内のレコードの数までの整数。 レコードセット内の現在のレコードの序数位置に対応します。

解説

基になる DAO オブジェクトの AbsolutePosition プロパティ値は 0 から始まります。0 に設定すると、レコードセットの最初のレコードが参照されます。 GetRecordCount を呼び出すことによって、レコードセットに設定されたレコードの数を確認できます。 呼び出し GetRecordCount は、カウントを決定するためにすべてのレコードにアクセスする必要があるため、しばらく時間がかかる場合があります。

レコードセットにレコードがない場合と同様に、現在のレコードがない場合は-1 が返されます。 現在のレコードが削除された場合、AbsolutePosition プロパティ値は定義されず、MFC は参照されている場合に例外をスローします。 ダイナセットタイプのレコードセットの場合、新しいレコードがシーケンスの末尾に追加されます。

Note

このプロパティは、サロゲート レコード番号として使用するためのものではありません。 ブックマークは、特定の位置を保持して戻す推奨される方法であり、現在のレコードをすべての種類のレコードセット オブジェクトに配置する唯一の方法です。 特に、特定のレコードの位置は、そのレコードの前にあるレコードが削除されるときに変更されます。 また、レコードセット内の個々のレコードの順序は、ORDERBY 句を使用して SQL ステートメントを使用して作成されない限り保証されないため、レコードセットが再作成された場合、特定のレコードが同じ絶対位置を持つことも保証されません。

Note

このメンバー関数は、ダイナセットタイプおよびスナップショットタイプのレコードセットに対してのみ有効です。

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

CDaoRecordset::GetBookmark

このメンバー関数を呼び出して、特定のレコードのブックマーク値を取得します。

COleVariant GetBookmark();

戻り値

現在のレコードのブックマークを表す値を返します。

解説

レコードセット オブジェクトが作成または開かれると、レコードがサポートされている場合、各レコードには一意のブックマークが既に設定されています。 レコードセットがブックマークをサポートしているかどうかを判断する呼び出 CanBookmark し。

ブックマークの値をオブジェクトに割り当てることで、現在のレコードのブックマークを COleVariant 保存できます。 別のレコードに移動した後、いつでもそのレコードにすばやく戻すには、そのCOleVariantオブジェクトの値に対応するパラメーターを使用して呼び出SetBookmarkします。

Note

Requery を呼び出すと、DAO ブックマークが変更されます。

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

CDaoRecordset::GetCacheSize

キャッシュされたレコードの数を取得するには、このメンバー関数を呼び出します。

long GetCacheSize();

戻り値

ODBC データ ソースからローカルにキャッシュされるデータを含むダイナセットタイプのレコードセット内のレコードの数を指定する値。

解説

データ キャッシュにより、ダイナセット タイプのレコードセット オブジェクトを介してリモート サーバーからデータを取得するアプリケーションのパフォーマンスが向上します。 キャッシュは、アプリケーションの実行中にデータが再度要求される場合に、サーバーから最後に取得したデータを保持するローカル メモリ内の領域です。 データが要求されると、Microsoft Jet データベース エンジンは、要求されたデータのキャッシュをサーバーから取得するのではなく、最初にキャッシュをチェックします。これには時間がかかります。 ODBC データ ソースから取得されていないデータはキャッシュに保存されません。

接続されたテーブルなどの ODBC データ ソースには、ローカル キャッシュを使用できます。

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

CDaoRecordset::GetCacheStart

このメンバー関数を呼び出して、キャッシュするレコードセットの最初のレコードのブックマーク値を取得します。

COleVariant GetCacheStart();

戻り値

キャッシュするレコードセット内の最初のレコードのブックマークを指定する A COleVariant

解説

Microsoft Jet データベース エンジンは、キャッシュ範囲内のレコードをキャッシュから要求し、サーバーからキャッシュ範囲外のレコードを要求します。

Note

キャッシュから取得されたレコードには、他のユーザーがソース データに同時に行った変更は反映されません。

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

CDaoRecordset::GetCurrentIndex

このメンバー関数を呼び出して、インデックス付きテーブル型 CDaoRecordset オブジェクトで現在使用されているインデックスを決定します。

CString GetCurrentIndex();

戻り値

CStringテーブル型レコードセットで現在使用されているインデックスの名前を含む。 インデックスが設定されていない場合は、空の文字列を返します。

解説

このインデックスは、テーブル型レコードセット内のレコードを並べ替える基準であり、Seek メンバー関数によってレコードを検索するために使用されます。

オブジェクトは CDaoRecordset 複数のインデックスを持つことができますが、一度に使用できるインデックスは 1 つだけです (ただし、CDaoTableDef オブジェクトには複数のインデックスが定義されている場合があります)。

関連情報については、DAO ヘルプの「Index オブジェクト」および「現在のインデックス」の定義を参照してください。

CDaoRecordset::GetDateCreated

このメンバー関数を呼び出して、ベース テーブルが作成された日時を取得します。

COleDateTime GetDateCreated();

戻り値

ベース テーブルが作成された日時を含む COleDateTime オブジェクト。

解説

日付と時刻の設定は、ベース テーブルが作成されたコンピューターから派生します。

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

CDaoRecordset::GetDateLastUpdated

このメンバー関数を呼び出して、スキーマが最後に更新された日時を取得します。

COleDateTime GetDateLastUpdated();

戻り値

ベース テーブル構造 (スキーマ) が最後に更新された日時を含む COleDateTime オブジェクト。

解説

日付と時刻の設定は、ベース テーブル構造 (スキーマ) が最後に更新されたコンピューターから派生します。

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

CDaoRecordset::GetDefaultDBName

このメンバー関数を呼び出して、このレコードセットのデータベースの名前を決定します。

virtual CString GetDefaultDBName();

戻り値

このレコードセットの派生元データベースのパスと名前を含む A CString

解説

CDaoDatabase へのポインターなしでレコードセットが作成された場合、このパスはレコードセットによって既定のデータベースを開くために使用されます。 既定では、この関数は空の文字列を返します。 ClassWizard から新しいレコードセット CDaoRecordsetを派生させると、この関数が作成されます。

次の例は、文字列を正しく解釈するために必要な、文字列内での二重円記号 (\\) の使用を示しています。

CString CCustSet::GetDefaultDBName()
{
   return _T("c:\\mydir\\datasrc.mdb");
}

CDaoRecordset::GetDefaultSQL

フレームワークは、このメンバー関数を呼び出して、レコードセットの基になっている既定の SQL ステートメントを取得します。

virtual CString GetDefaultSQL();

戻り値

既定の SQL ステートメントを含む A CString

解説

これは、テーブル名または SQL Standard Edition LECT ステートメントです。

ClassWizard を使用してレコードセット クラスを宣言することで、既定の SQL ステートメントを間接的に定義すると、ClassWizard によってこのタスクが実行されます。

Open に NULL SQL 文字列を渡すと、この関数が呼び出され、レコードセットのテーブル名または SQL が決定されます。

CDaoRecordset::GetEditMode

このメンバー関数を呼び出して、次のいずれかの値である編集の状態を確認します。

short GetEditMode();

戻り値

現在のレコードの編集状態を示す値を返します。

解説

Value 説明
dbEditNone 編集操作は進行中です。
dbEditInProgress Edit が呼び出されました。
dbEditAdd AddNew が呼び出されました。

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

CDaoRecordset::GetFieldCount

レコードセットで定義されているフィールド (列) の数を取得するには、このメンバー関数を呼び出します。

short GetFieldCount();

戻り値

レコードセット内のフィールドの数。

解説

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

CDaoRecordset::GetFieldInfo

レコードセット内のフィールドに関する情報を取得するには、このメンバー関数を呼び出します。

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
レコードセットの Fields コレクション内の定義済みフィールドの 0 から始まるインデックス。インデックスによる参照用です。

Fieldinfo
CDaoFieldInfo 構造体への参照。

dwInfoOptions
取得するレコードセットに関する情報を指定するオプション。 使用可能なオプションと、関数が返される原因を示します。 パフォーマンスを最大限に高めるには、必要な情報のレベルのみを取得します。

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

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

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

lpszName
フィールドの名前。

解説

関数の 1 つのバージョンでは、インデックスでフィールドを検索できます。 もう 1 つのバージョンでは、名前でフィールドを検索できます。

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

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

CDaoRecordset::GetFieldValue

レコードセット内のデータを取得するには、このメンバー関数を呼び出します。

virtual void GetFieldValue(
    LPCTSTR lpszName,
    COleVariant& varValue);

virtual void GetFieldValue(
    int nIndex,
    COleVariant& varValue);

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

パラメーター

lpszName
フィールドの名前を含む文字列へのポインター。

varValue
フィールドの値を COleVariant 格納するオブジェクトへの参照。

Nindex
インデックスで検索するレコードセットの Fields コレクション内のフィールドの 0 から始まるインデックス。

戻り値

値を返す 2 つのバージョンは、フィールドの GetFieldValue 値を 含む COleVariant オブジェクトを返します。

解説

フィールドは、名前または序数で検索できます。

Note

オブジェクトを返すCOleVariantバージョンを呼び出すのではなく、オブジェクト参照をパラメーターとして受け取るCOleVariantこのメンバー関数のいずれかのバージョンを呼び出す方が効率的です。 この関数の後者のバージョンは、下位互換性のために保持されます。

DoFieldExchange メカニズムを使用して列を静的にバインドするのではなく、実行時にフィールドを動的にバインドするには、SetFieldValue を使用GetFieldValueします。

GetFieldValue とメカニズムを DoFieldExchange 組み合わせてパフォーマンスを向上させることができます。 たとえば、必要に応じて必要な値を取得し、その呼び出しをインターフェイスの [詳細情報] ボタンに割り当てる場合に使用 GetFieldValue します。

関連情報については、DAO ヘルプの「フィールド オブジェクト」および「値プロパティ」のトピックを参照してください。

CDaoRecordset::GetIndexCount

このメンバー関数を呼び出して、テーブル型レコードセットで使用できるインデックスの数を決定します。

short GetIndexCount();

戻り値

テーブル型レコードセット内のインデックスの数。

解説

GetIndexCount は、レコードセット内のすべてのインデックスをループ処理する場合に便利です。 そのためには、GetIndexInfo と組み合わせて使用GetIndexCountします。 ダイナセットタイプまたはスナップショットタイプのレコードセットでこのメンバー関数を呼び出すと、MFC は例外をスローします。

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

CDaoRecordset::GetIndexInfo

レコードセットの基になるベース テーブルで定義されているインデックスに関するさまざまな種類の情報を取得するには、このメンバー関数を呼び出します。

void GetIndexInfo(
    int nIndex,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetIndexInfo(
    LPCTSTR lpszName,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

パラメーター

Nindex
テーブルの Indexes コレクション内の 0 から始まるインデックス。数値の位置による参照用です。

indexinfo
CDaoIndexInfo 構造体への参照。

dwInfoOptions
取得するインデックスに関する情報を指定するオプション。 使用可能なオプションと、関数が返される原因を示します。 パフォーマンスを最大限に高めるには、必要な情報のレベルのみを取得します。

  • AFX_DAO_PRIMARY_INFO (既定値)名前、フィールド情報、フィールド

  • AFX_DAO_SECONDARY_INFO プライマリ情報に加えて、プライマリ、一意、クラスター化、IgnoreNulls、Required、Foreign

  • AFX_DAO_ALL_INFO プライマリとセカンダリの情報に加えて、個別のカウント

lpszName
名前で検索するためのインデックス オブジェクトの名前へのポインター。

解説

関数の 1 つのバージョンでは、コレクション内の位置でインデックスを検索できます。 もう 1 つのバージョンでは、名前でインデックスを検索できます。

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

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

CDaoRecordset::GetLastModifiedBookmark

このメンバー関数を呼び出して、最近追加または更新されたレコードのブックマークを取得します。

COleVariant GetLastModifiedBookmark();

戻り値

COleVariant最後に追加または変更されたレコードを示すブックマークを含む。

解説

レコードセット オブジェクトが作成または開かれると、レコードがサポートされている場合、各レコードには一意のブックマークが既に設定されています。 GetBookmark を呼び出して、レコードセットがブックマークをサポートしているかどうかを判断します。 レコードセットがブックマークをサポートしていない場合は、a CDaoException がスローされます。

レコードを追加すると、レコードはレコードセットの末尾に表示され、現在のレコードではありません。 新しいレコードを最新の状態にするには、呼び出 GetLastModifiedBookmark して、 SetBookmark 新しく追加されたレコードに戻ります。

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

CDaoRecordset::GetLockingMode

このメンバー関数を呼び出して、レコードセットに対して有効なロックの種類を決定します。

BOOL GetLockingMode();

戻り値

ロックの種類がペシミスティックの場合は 0 以外、オプティミスティック レコード ロックの場合は 0。

解説

ペシミスティック ロックが有効な場合、編集するレコードを含むデータ ページは、Edit メンバー関数を呼び出すとすぐにロックされます。 このページは、Update または Close メンバー関数、または Move 操作または Find 操作を呼び出すとロック解除されます。

オプティミスティック ロックが有効な場合、レコードを含むデータ ページは、レコードがメンバー関数で Update 更新されている間のみロックされます。

ODBC データ ソースを使用する場合、ロック モードは常にオプティミスティックです。

関連情報については、DAO ヘルプの「LockEdits プロパティ」および「マルチユーザー アプリケーションでの動作のロック」に関するトピックを参照してください。

CDaoRecordset::GetName

このメンバー関数を呼び出して、レコードセットの名前を取得します。

CString GetName();

戻り値

CStringレコードセットの名前を含む。

解説

レコードセットの名前は文字で始まる必要があり、最大 40 文字を含めることができます。 数字とアンダースコア文字を含めることができますが、句読点やスペースを含めることはできません。

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

CDaoRecordset::GetParamValue

このメンバー関数を呼び出して、基になる DAOParameter オブジェクトに格納されている指定されたパラメーターの現在の値を取得します。

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

パラメーター

Nindex
基になる DAOParameter オブジェクト内のパラメーターの数値位置。

lpszName
必要な値を持つパラメーターの名前。

戻り値

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

解説

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

関連情報については、DAO ヘルプのトピック「パラメーター オブジェクト」を参照してください。

CDaoRecordset::GetPercentPosition

ダイナセットタイプまたはスナップショットタイプのレコードセットを操作する場合、レコードセットを完全に設定する前に呼び出GetPercentPositionすと、移動の量は、GetRecordCount を呼び出すことによって示されたアクセスレコードの数に対して相対的になります。

float GetPercentPosition();

戻り値

レコードセット内のレコードの割合に基づいて、レコードセット オブジェクト内の現在のレコードのおおよその位置を示す 0 から 100 までの数値。

解説

MoveLast を呼び出してすべてのレコードセットの作成を完了することで、最後のレコードに移動できますが、これにはかなりの時間がかかる場合があります。

インデックスのないテーブルを含め、3 種類のレコードセット オブジェクトすべてを呼び出 GetPercentPosition すことができます。 ただし、前方スクロールスナップショットや、外部データベースに対するパススルー クエリから開かれたレコードセットを呼び出GetPercentPositionすことはできません。 現在のレコードがない場合、または現在のレコードが削除されている場合は、a CDaoException がスローされます。

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

CDaoRecordset::GetRecordCount

このメンバー関数を呼び出して、アクセスされたレコードセット内のレコードの数を確認します。

long GetRecordCount();

戻り値

レコードセット オブジェクトでアクセスされるレコードの数を返します。

解説

GetRecordCountは、すべてのレコードがアクセスされるまで、ダイナセットタイプまたはスナップショットタイプのレコードセットに含まれるレコードの数を示しません。 このメンバー関数呼び出しが完了するまでにかなりの時間がかかる場合があります。

最後のレコードにアクセスすると、戻り値はレコードセット内の削除されていないレコードの合計数を示します。 最後のレコードに強制的にアクセスするには、レコードセットの MoveLast or FindLast メンバー関数を呼び出します。 また、SQL カウントを使用して、クエリから返されるおおよそのレコード数を決定することもできます。

アプリケーションがダイナセットタイプのレコードセット内のレコードを削除すると、戻り値は GetRecordCount 減少します。 ただし、他のユーザーによって削除された GetRecordCount レコードは、現在のレコードが削除されたレコードに配置されるまで反映されません。 レコード数に影響を与えるトランザクションを実行した後にトランザクションをロールバックした場合、GetRecordCount再メインレコードの実際の数は反映されません。

スナップショット型レコードセットからのGetRecordCount値は、基になるテーブルの変更の影響を受けません。

テーブル型レコードセットの GetRecordCount 値は、テーブル内のおおよそのレコード数を反映し、テーブル レコードが追加および削除されるとすぐに影響を受けます。

レコードのないレコードセットは、値 0 を返します。 アタッチされたテーブルまたは ODBC データベースを操作する場合は、 GetRecordCount 常に - 1 を返します。 レコードセットで Requery メンバー関数を呼び出すと、クエリが再実行された場合と同じように値 GetRecordCount がリセットされます。

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

CDaoRecordset::GetSQL

このメンバー関数を呼び出して、レコードセットを開いたときにレコードセットのレコードを選択するために使用された SQL ステートメントを取得します。

CString GetSQL() const;

戻り値

SQL ステートメントを含む A CString

解説

これは通常、SQL Standard Edition LECT ステートメントです。

通常、返されるGetSQL文字列は、lpszSQL パラメーターレコードセットに Open メンバー関数に渡した文字列とは異なります。 これは、渡した内容、ClassWizard で指定したOpen内容、およびm_strFilterおよびm_strSortデータ メンバーで指定した内容に基づいて、レコードセットによって完全な SQL ステートメントが構築されるためです。

Note

呼び出した後でのみ、このメンバー関数を呼び出します Open

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

CDaoRecordset::GetType

レコードセットを開いた後、このメンバー関数を呼び出して、レコードセット オブジェクトの型を決定します。

short GetType();

戻り値

レコードセットの種類を示す次のいずれかの値。

  • dbOpenTable テーブル型レコードセット

  • dbOpenDynaset ダイナセットタイプレコードセット

  • dbOpenSnapshot スナップショットタイプのレコードセット

解説

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

CDaoRecordset::GetValidationRule

このメンバー関数を呼び出して、データの検証に使用される規則を決定します。

CString GetValidationRule();

戻り値

CString変更またはテーブルに追加されるときにレコード内のデータを検証する値を含むオブジェクト。

解説

このルールはテキストベースであり、基になるテーブルが変更されるたびに適用されます。 データが有効でない場合、MFC は例外をスローします。 返されるエラー メッセージは、基になるフィールド オブジェクトの ValidationText プロパティのテキスト (指定されている場合)、または基になるフィールド オブジェクトの ValidationRule プロパティで指定された式のテキストです。 GetValidationText を呼び出して、エラー メッセージのテキストを取得できます。

たとえば、月の日を必要とするレコード内のフィールドには、"DAY BETW Enterprise Edition N 1 AND 31" などの検証規則がある場合があります。

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

CDaoRecordset::GetValidationText

基になるフィールド オブジェクトの ValidationText プロパティのテキストを取得するには、このメンバー関数を呼び出します。

CString GetValidationText();

戻り値

CStringフィールドの値が基になるフィールド オブジェクトの検証規則を満たしていない場合に表示されるメッセージのテキストを含むオブジェクト。

解説

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

CDaoRecordset::IsBOF

レコードからレコードまでスクロールする前に、このメンバー関数を呼び出して、レコードセットの最初のレコードの前に移動したかどうかを確認します。

BOOL IsBOF() const;

戻り値

レコードセットにレコードが含まれている場合、または最初のレコードの前に後方にスクロールした場合は 0 以外。それ以外の場合は 0。

解説

また、レコードセットにレコードが含まれているか空であるかを判断するために、一緒IsEOFに呼び出IsBOFすこともできます。 呼び出 Openした直後に、レコードセットにレコードが含まれている場合は、 IsBOF 0 以外の値が返されます。 少なくとも 1 つのレコードを含むレコードセットを開くと、最初のレコードが現在のレコードになり、 IsBOF 0 が返されます。

最初のレコードが現在のレコードであり、呼び出 MovePrevした場合は、 IsBOF 0 以外の値が返されます。 IsBOF 0 以外の値を返し、呼び出MovePrevすと、例外がスローされます。 0 以外の値が返された場合 IsBOF 、現在のレコードは未定義になり、現在のレコードを必要とするアクションは例外になります。

特定のメソッド IsBOF の効果と IsEOF 設定:

  • 内部的に呼び出すとOpen*、レコードセット内の最初のレコードが現在のレコードになります。MoveFirst そのため、空のレコード セットを呼び出すと Open 、0 以外の IsBOF レコードが IsEOF 返されます。 (失敗 MoveFirst または MoveLast 呼び出しの動作については、次の表を参照してください)。

  • レコードを正常に見つけるすべての Move 操作により、両方 IsBOF とも IsEOF 0 が返されます。

  • AddNew新しいレコードをUpdate正常に挿入する呼び出しの後に続く呼び出しはIsBOF、既に 0 以外の場合IsEOFにのみ 0 を返します。 状態IsEOFは常に再メイン変更されません。 Microsoft Jet データベース エンジンで定義されているように、空のレコード セットの現在のレコード ポインターはファイルの末尾に存在するため、現在のレコードの後に新しいレコードが挿入されます。

  • Deleteレコードセットから唯一の再メインレコードを削除した場合でも、呼び出しの値IsBOFIsEOFは変更されません。

次の表は、さまざまな組み合わせで許可される移動操作を IsBOF/ IsEOF示しています。

都道府県 MoveFirst, MoveLast MovePrev、

Move < 0
Move 0 MoveNext、

Move > 0
IsBOF=0 以外、

IsEOF=0
許可 例外 例外 許可
IsBOF=0,

IsEOF=0 以外
許可 許可 例外 例外
両方とも 0 以外 例外 例外 例外 例外
両方 0 許可 許可 許可 許可

移動操作を許可しても、操作でレコードが正常に検索されるわけではありません。 指定した移動操作の実行が許可され、例外が生成されないことを示すだけです。 およびIsEOFメンバー関数のIsBOF値は、移動の試行の結果として変更される可能性があります。

レコードが見つからない移動操作の値とIsEOF設定への影響を次のIsBOF表に示します。

操作 IsBOF Iseof
MoveFirst, MoveLast 0 以外 0 以外
Move 0 変更なし 変更なし
MovePrevMove< 0 0 以外 変更なし
MoveNextMove> 0 変更なし 0 以外

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

CDaoRecordset::IsDeleted

このメンバー関数を呼び出して、現在のレコードが削除されたかどうかを確認します。

BOOL IsDeleted() const;

戻り値

レコードセットが削除されたレコードに配置されている場合は 0 以外。それ以外の場合は 0。

解説

レコードにスクロールして IsDeleted TRUE (0 以外) を返す場合は、他のレコードセット操作を実行する前に、別のレコードまでスクロールする必要があります。

Note

スナップショットレコードセットまたはテーブルタイプレコードセット内のレコードに対して、削除されたステータスをチェックする必要はありません。 レコードはスナップショットから削除できないため、呼び出すIsDeleted必要はありません。 テーブル型レコードセットの場合、削除されたレコードはレコードセットから実際に削除されます。 自分、別のユーザー、または別のレコードセットでレコードが削除されると、そのレコードに戻ることはできません。 したがって、呼び出 IsDeletedす必要はありません.

ダイナセットからレコードを削除すると、そのレコードはレコードセットから削除され、そのレコードまでスクロールすることはできません。 ただし、ダイナセット内のレコードが別のユーザーまたは同じテーブルに基づく別のレコードセットによって削除された場合、 IsDeleted そのレコードまで後でスクロールすると TRUE が返されます。

関連情報については、DAO ヘルプの「Delete メソッド」、「LastModified プロパティ」、「EditMode プロパティ」の各トピックを参照してください。

CDaoRecordset::IsEOF

レコードからレコードまでスクロールして、レコードセットの最後のレコードを超えたかどうかを確認するには、このメンバー関数を呼び出します。

BOOL IsEOF() const;

戻り値

レコードセットにレコードが含まれている場合、または最後のレコードを超えてスクロールした場合は 0 以外。それ以外の場合は 0。

解説

また、レコードセットにレコードが含まれているか空であるかを判断するために呼び出 IsEOF すこともできます。 呼び出 Openした直後に、レコードセットにレコードが含まれている場合は、 IsEOF 0 以外の値が返されます。 少なくとも 1 つのレコードを含むレコードセットを開くと、最初のレコードが現在のレコードになり、 IsEOF 0 が返されます。

最後のレコードが呼び出 MoveNextし時に現在のレコードである場合、その後は IsEOF 0 以外の値が返されます。 IsEOF 0 以外の値を返し、呼び出MoveNextすと、例外がスローされます。 0 以外の値が返された場合 IsEOF 、現在のレコードは未定義になり、現在のレコードを必要とするアクションは例外になります。

特定のメソッド IsBOF の効果と IsEOF 設定:

  • 内部的に呼び出すとOpen、レコードセット内の最初のレコードが現在のレコードになります。MoveFirst そのため、空のレコード セットを呼び出すと Open 、0 以外の IsBOF レコードが IsEOF 返されます。 (失敗した MoveFirst 呼び出しの動作については、次の表を参照してください)。

  • レコードを正常に見つけるすべての Move 操作により、両方 IsBOF とも IsEOF 0 が返されます。

  • AddNew新しいレコードをUpdate正常に挿入する呼び出しの後に続く呼び出しはIsBOF、既に 0 以外の場合IsEOFにのみ 0 を返します。 状態IsEOFは常に再メイン変更されません。 Microsoft Jet データベース エンジンで定義されているように、空のレコード セットの現在のレコード ポインターはファイルの末尾に存在するため、現在のレコードの後に新しいレコードが挿入されます。

  • Deleteレコードセットから唯一の再メインレコードを削除した場合でも、呼び出しの値IsBOFIsEOFは変更されません。

次の表は、さまざまな組み合わせで許可される移動操作を IsBOF/ IsEOF示しています。

都道府県 MoveFirst, MoveLast MovePrev、

Move < 0
Move 0 MoveNext、

Move > 0
IsBOF=0 以外、

IsEOF=0
許可 例外 例外 許可
IsBOF=0,

IsEOF=0 以外
許可 許可 例外 例外
両方とも 0 以外 例外 例外 例外 例外
両方 0 許可 許可 許可 許可

移動操作を許可しても、操作でレコードが正常に検索されるわけではありません。 指定した移動操作の実行が許可され、例外が生成されないことを示すだけです。 およびメンバー関数のIsBOFIsEOF値は、Move の試行の結果として変更される可能性があります。

レコードが見つからない移動操作の値とIsEOF設定への影響を次のIsBOF表に示します。

操作 IsBOF Iseof
MoveFirst, MoveLast 0 以外 0 以外
Move 0 変更なし 変更なし
MovePrevMove< 0 0 以外 変更なし
MoveNextMove> 0 変更なし 0 以外

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

CDaoRecordset::IsFieldDirty

このメンバー関数を呼び出して、ダイナセットの指定されたフィールド データ メンバーに "ダーティ" (変更) のフラグが設定されているかどうかを確認します。

BOOL IsFieldDirty(void* pv);

パラメーター

Pv
状態をチェックするフィールド データ メンバーへのポインター。フィールドのいずれかがダーティされているかどうかを判断する場合は NULL。

戻り値

指定したフィールド データ メンバーにダーティフラグが設定されている場合は 0 以外、それ以外の場合は 0。

解説

現在のレコードがメンバー関数の呼び出し (または呼び出Updateしの後) によって更新されると、すべてのダーティフィールド データ メンバーのデータがデータ ソースのCDaoRecordsetレコードにEditAddNew転送されます。 この知識があれば、フィールド データ メンバーのフラグを解除して列をマークし、データ ソースに書き込まれないようにするなど、さらに手順を実行できます。

IsFieldDirty を使用して DoFieldExchange実装されます。

CDaoRecordset::IsFieldNull

このメンバー関数を呼び出して、レコードセットの指定されたフィールド データ メンバーに Null のフラグが設定されているかどうかを確認します。

BOOL IsFieldNull(void* pv);

パラメーター

Pv
状態をチェックするフィールド データ メンバーへのポインター。フィールドのいずれかが Null かどうかを判断する場合は NULL。

戻り値

指定されたフィールド データ メンバーに Null のフラグが設定されている場合は 0 以外。それ以外の場合は 0。

解説

(データベース用語では、Null は "値を持たない" ことを意味し、C++ では NULL と同じではありません)。フィールド データ メンバーに Null のフラグが設定されている場合、値がない現在のレコードの列として解釈されます。

Note

次のコード例に示すように、特定の状況では、使用 IsFieldNull が非効率的になる場合があります。

COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;

// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
   rs.GetFieldValue(nField, varValue);

// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
   varValue.Attach(varNewVal); // do something

Note

動的レコード バインディングを使用している場合は、次 CDaoRecordsetの例に示すように、必ずVT_NULLを使用してください。

CDaoRecordset::IsFieldNullable

このメンバー関数を呼び出して、指定されたフィールド データ メンバーが "null 許容" かどうかを判断します (Null 値に設定できます。C++ NULL は Null と同じではありません。データベースの用語では、"値を持たない" ことを意味します)。

BOOL IsFieldNullable(void* pv);

パラメーター

Pv
状態をチェックするフィールド データ メンバーへのポインター。フィールドのいずれかが Null かどうかを判断する場合は NULL。

戻り値

指定したフィールド データ メンバーを Null にできる場合は 0 以外。それ以外の場合は 0。

解説

Null にできないフィールドには値が必要です。 レコードの追加または更新時にこのようなフィールドを Null に設定しようとすると、データ ソースは追加または更新を拒否し Update 、例外をスローします。 この例外は、呼び出し時ではなく、呼び出UpdateSetFieldNullし時に発生します。

CDaoRecordset::IsOpen

このメンバー関数を呼び出して、レコードセットが開いているかどうかを確認します。

BOOL IsOpen() const;

戻り値

レコードセット オブジェクト Open または Requery メンバー関数が以前に呼び出され、レコードセットが閉じていない場合は 0 以外。それ以外の場合は 0。

解説

CDaoRecordset::m_bCheckCacheForDirtyFields

キャッシュされたフィールドが自動的にダーティ (変更) および Null としてマークされるかどうかを示すフラグが含まれています。

解説

フラグの既定値は TRUE です。 このデータ メンバーの設定は、ダブル バッファリング メカニズム全体を制御します。 フラグを TRUE に設定すると、DFX メカニズムを使用してフィールドごとにキャッシュをオフにすることができます。 フラグを FAL Standard Edition に設定する場合は、自分でSetFieldNull呼び出すSetFieldDirty必要があります。

呼び出す Open前に、このデータ メンバーを設定します。 このメカニズムは、主に使いやすさを目的とします。 変更が行われると、フィールドがダブルバッファリングされるため、パフォーマンスが低下する可能性があります。

CDaoRecordset::m_nFields

レコードセット クラスのフィールド データ メンバーの数と、データ ソースからレコードセットによって選択された列の数を格納します。

解説

レコードセット クラスのコンストラクターは、静的にバインドされたフィールドの正しい数で初期化 m_nFields する必要があります。 ClassWizard は、この初期化を使用してレコードセット クラスを宣言するときに書き込みます。 手動で記述することもできます。

フレームワークでは、この数値を使用して、フィールド データ メンバーと、データ ソース上の現在のレコードの対応する列の間の相互作用を管理します。

Note

この数は、パラメーターCDaoFieldExchange::outputColumnを使用した呼び出しの後にDoFieldExchange登録された出力列の数に対応するSetFieldType必要があります。

を使用CDaoRecordset::GetFieldValueCDaoRecordset::SetFieldValueして列を動的にバインドできます。 その場合は、メンバー関数内の m_nFields DFX 関数呼び出しの数を反映するためにカウントをインクリメントする DoFieldExchange 必要はありません。

CDaoRecordset::m_nParams

レコードセット クラス内のパラメーター データ メンバーの数 (レコードセットのクエリで渡されたパラメーターの数) を格納します。

解説

レコードセット クラスにパラメーター データ メンバーがある場合、クラスのコンストラクターは正しい数値でm_nParams初期化する必要があります。 m_nParams値の既定値は 0 です。 パラメーター データ メンバーを追加する場合 (手動で行う必要があります)、パラメーターの数を反映するために、クラス コンストラクターに初期化を手動で追加する必要もあります (m_strFilterまたはm_strSort文字列内の '' プレースホルダーの数以上である必要があります)。

フレームワークは、レコードセットのクエリをパラメーター化するときにこの数を使用します。

Note

この番号は、パラメーターCFieldExchange::paramを呼び出した後にDoFieldExchange登録された "params" の数に対応するSetFieldType必要があります。

関連情報については、DAO ヘルプのトピック「パラメーター オブジェクト」を参照してください。

CDaoRecordset::m_pDAORecordset

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

解説

DAO インターフェイスに直接アクセスする必要がある場合は、このポインターを使用します。

関連情報については、DAO ヘルプの「Recordset オブジェクト」を参照してください。

CDaoRecordset::m_pDatabase

レコードセットがデータ ソースに CDaoDatabase 接続されているオブジェクトへのポインターを格納します。

解説

この変数は 2 つの方法で設定されます。 通常は、レコードセット オブジェクトを構築するときに、既に開 CDaoDatabase いているオブジェクトへのポインターを渡します。 代わりに NULL を渡す場合は、 CDaoRecordset オブジェクトを CDaoDatabase 作成して開きます。 どちらの場合も、 CDaoRecordset ポインターをこの変数に格納します。

通常、格納されている m_pDatabaseポインターを直接使用する必要はありません。 ただし、独自の拡張機能を記述する CDaoRecordset場合は、ポインターを使用する必要がある場合があります。 たとえば、独自 CDaoExceptionのポインターをスローする場合は、ポインターが必要になる場合があります。

関連情報については、DAO ヘルプの「データベース オブジェクト」を参照してください。

CDaoRecordset::m_strFilter

SQL ステートメントの WHERE 句を構築するために使用される文字列を格納します。

解説

レコードセットをフィルター処理するための予約語 WHERE は含まれません。 このデータ メンバーの使用は、テーブル型のレコードセットには適用されません。 ポインターを m_strFilter 使用してレコードセットを開く場合、使用しても CDaoQueryDef 効果はありません。

米国バージョンの Microsoft Jet データベース エンジンを使用していない場合でも、日付を含むフィールドをフィルター処理する場合は、米国の日付形式 (月日-年) を使用します。それ以外の場合、データは期待どおりにフィルター処理されない可能性があります。

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

CDaoRecordset::m_strSort

予約語 ORDERBY を含まない SQL ステートメントの ORDERBY 句を含む文字列を格納します。

解説

ダイナセットタイプおよびスナップショットタイプのレコードセットオブジェクトを並べ替えることができます。

テーブルタイプのレコードセットオブジェクトを並べ替えることはできません。 テーブル型レコードセットの並べ替え順序を決定するには、SetCurrentIndex を呼び出 します

ポインターを 使用してレコードセットを開く場合、m_strSort を使用 CDaoQueryDef しても効果はありません。

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

CDaoRecordset::Move

このメンバー関数を呼び出して、現在のレコードのレコードセット lRows レコードを配置します。

virtual void Move(long lRows);

パラメーター

lRows
前後に移動するレコードの数。 正の値は、レコードセットの末尾に向かって前方に移動します。 負の値は、先頭に向かって後方に移動します。

解説

前後に移動できます。 Move( 1 )は 、 にMoveNext相当MovePrevし、.Move( -1 )

注意事項

レコードセットにレコードがない場合、 Move いずれかの関数を呼び出すと例外がスローされます。 一般に、移動操作のIsEOF前後の両方IsBOFを呼び出して、レコードセットにレコードがあるかどうかを判断します。 呼び出した後、またはいずれかの呼び出Openしを行いますIsEOFIsBOFRequery

Note

レコードセットの先頭または末尾をスクロールした ( IsBOF または IsEOF 0 以外の値を返す) 場合は、呼び出し Move がスロー CDaoExceptionされます。

Note

現在のレコードの更新または追加中に Move いずれかの関数を呼び出すと、更新は警告なしで失われます。

前方スクロール スナップショットを呼び出Moveす場合、lRows パラメーターは正の整数である必要があり、ブックマークは許可されないため、前に進むだけです。

レコードセット内の最初、最後、次、または前のレコードを現在のレコードにするには、関数 、、MoveNextMoveLastまたはMovePrevメンバー関数をMoveFirst呼び出します。

関連情報については、DAO ヘルプの「Move メソッド」および「MoveFirst、MoveLast、MoveNext、MovePrevious メソッド」のトピックを参照してください。

CDaoRecordset::MoveFirst

このメンバー関数を呼び出して、レコードセット内の最初のレコード (存在する場合) を現在のレコードにします。

void MoveFirst();

解説

レコードセットを開いた直後に呼び出す MoveFirst 必要はありません。 その時点で、最初のレコード (存在する場合) は自動的に現在のレコードになります。

注意事項

レコードセットにレコードがない場合、 Move いずれかの関数を呼び出すと例外がスローされます。 一般に、移動操作のIsEOF前後の両方IsBOFを呼び出して、レコードセットにレコードがあるかどうかを判断します。 呼び出した後、またはいずれかの呼び出Openしを行いますIsEOFIsBOFRequery

Note

現在のレコードの更新または追加中に Move いずれかの関数を呼び出すと、更新は警告なしで失われます。

条件を Move 適用せずにレコードからレコードに移動するには、この関数を使用します。 検索操作を使用して、特定の条件を満たすダイナセット タイプまたはスナップショットタイプのレコードセット オブジェクト内のレコードを検索します。 テーブル型レコードセット オブジェクト内のレコードを検索するには、次を呼び出します Seek

レコードセットがテーブル型のレコードセットを参照している場合、移動はテーブルの現在のインデックスに従います。 基になる DAO オブジェクトの Index プロパティを使用して、現在のインデックスを設定できます。 現在のインデックスを設定しない場合、返されるレコードの順序は未定義です。

SQL クエリまたは querydef に基づいてレコードセット オブジェクトを呼び出 MoveLast すと、クエリが強制的に完了し、レコードセット オブジェクトが完全に設定されます。

前方スクロール スナップショットで MoveFirst or MovePrev メンバー関数を呼び出すことはできません。

レコードセット オブジェクト内の現在のレコードの位置を特定の数のレコードを前後に移動するには、次を呼び出します Move

関連情報については、DAO ヘルプの「Move メソッド」および「MoveFirst、MoveLast、MoveNext、MovePrevious メソッド」のトピックを参照してください。

CDaoRecordset::MoveLast

このメンバー関数を呼び出して、レコードセット内の最後のレコード (存在する場合) を現在のレコードにします。

void MoveLast();

解説

注意事項

レコードセットにレコードがない場合、 Move いずれかの関数を呼び出すと例外がスローされます。 一般に、移動操作のIsEOF前後の両方IsBOFを呼び出して、レコードセットにレコードがあるかどうかを判断します。 呼び出した後、またはいずれかの呼び出Openしを行いますIsEOFIsBOFRequery

Note

現在のレコードの更新または追加中に Move いずれかの関数を呼び出すと、更新は警告なしで失われます。

条件を Move 適用せずにレコードからレコードに移動するには、この関数を使用します。 検索操作を使用して、特定の条件を満たすダイナセット タイプまたはスナップショットタイプのレコードセット オブジェクト内のレコードを検索します。 テーブル型レコードセット オブジェクト内のレコードを検索するには、次を呼び出します Seek

レコードセットがテーブル型のレコードセットを参照している場合、移動はテーブルの現在のインデックスに従います。 基になる DAO オブジェクトの Index プロパティを使用して、現在のインデックスを設定できます。 現在のインデックスを設定しない場合、返されるレコードの順序は未定義です。

SQL クエリまたは querydef に基づいてレコードセット オブジェクトを呼び出 MoveLast すと、クエリが強制的に完了し、レコードセット オブジェクトが完全に設定されます。

レコードセット オブジェクト内の現在のレコードの位置を特定の数のレコードを前後に移動するには、次を呼び出します Move

関連情報については、DAO ヘルプの「Move メソッド」および「MoveFirst、MoveLast、MoveNext、MovePrevious メソッド」のトピックを参照してください。

CDaoRecordset::MoveNext

このメンバー関数を呼び出して、レコードセット内の次のレコードを現在のレコードにします。

void MoveNext();

解説

前のレコードに移動する前に呼び出 IsBOF しておくことをお勧めします。 if をスロー CDaoExceptionIsBOFするMovePrev呼び出しは、0 以外の値を返します。これは、最初のレコードの前に既にスクロールしたか、レコードセットによって選択されたレコードがないことを示します。

注意事項

レコードセットにレコードがない場合、 Move いずれかの関数を呼び出すと例外がスローされます。 一般に、移動操作のIsEOF前後の両方IsBOFを呼び出して、レコードセットにレコードがあるかどうかを判断します。 呼び出した後、またはいずれかの呼び出Openしを行いますIsEOFIsBOFRequery

Note

現在のレコードの更新または追加中に Move いずれかの関数を呼び出すと、更新は警告なしで失われます。

条件を Move 適用せずにレコードからレコードに移動するには、この関数を使用します。 検索操作を使用して、特定の条件を満たすダイナセット タイプまたはスナップショットタイプのレコードセット オブジェクト内のレコードを検索します。 テーブル型レコードセット オブジェクト内のレコードを検索するには、次を呼び出します Seek

レコードセットがテーブル型のレコードセットを参照している場合、移動はテーブルの現在のインデックスに従います。 基になる DAO オブジェクトの Index プロパティを使用して、現在のインデックスを設定できます。 現在のインデックスを設定しない場合、返されるレコードの順序は未定義です。

レコードセット オブジェクト内の現在のレコードの位置を特定の数のレコードを前後に移動するには、次を呼び出します Move

関連情報については、DAO ヘルプの「Move メソッド」および「MoveFirst、MoveLast、MoveNext、MovePrevious メソッド」のトピックを参照してください。

CDaoRecordset::MovePrev

このメンバー関数を呼び出して、レコードセット内の前のレコードを現在のレコードにします。

void MovePrev();

解説

前のレコードに移動する前に呼び出 IsBOF しておくことをお勧めします。 if をスロー CDaoExceptionIsBOFするMovePrev呼び出しは、0 以外の値を返します。これは、最初のレコードの前に既にスクロールしたか、レコードセットによって選択されたレコードがないことを示します。

注意事項

レコードセットにレコードがない場合、 Move いずれかの関数を呼び出すと例外がスローされます。 一般に、移動操作のIsEOF前後の両方IsBOFを呼び出して、レコードセットにレコードがあるかどうかを判断します。 呼び出した後、またはいずれかの呼び出Openしを行いますIsEOFIsBOFRequery

Note

現在のレコードの更新または追加中に Move いずれかの関数を呼び出すと、更新は警告なしで失われます。

条件を Move 適用せずにレコードからレコードに移動するには、この関数を使用します。 検索操作を使用して、特定の条件を満たすダイナセット タイプまたはスナップショットタイプのレコードセット オブジェクト内のレコードを検索します。 テーブル型レコードセット オブジェクト内のレコードを検索するには、次を呼び出します Seek

レコードセットがテーブル型のレコードセットを参照している場合、移動はテーブルの現在のインデックスに従います。 基になる DAO オブジェクトの Index プロパティを使用して、現在のインデックスを設定できます。 現在のインデックスを設定しない場合、返されるレコードの順序は未定義です。

前方スクロール スナップショットで MoveFirst or MovePrev メンバー関数を呼び出すことはできません。

レコードセット オブジェクト内の現在のレコードの位置を特定の数のレコードを前後に移動するには、次を呼び出します Move

関連情報については、DAO ヘルプの「Move メソッド」および「MoveFirst、MoveLast、MoveNext、MovePrevious メソッド」のトピックを参照してください。

CDaoRecordset::Open

レコードセットのレコードを取得するには、このメンバー関数を呼び出す必要があります。

virtual void Open(
    int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
    LPCTSTR lpszSQL = NULL,
    int nOptions = 0);

virtual void Open(
    CDaoTableDef* pTableDef,
    int nOpenType = dbOpenTable,
    int nOptions = 0);

virtual void Open(
    CDaoQueryDef* pQueryDef,
    int nOpenType = dbOpenDynaset,
    int nOptions = 0);

パラメーター

nOpenType
次のいずれかの値:

  • dbOpenDynaset 双方向スクロールを使用するダイナセットタイプのレコードセット。 これが既定です。

  • dbOpenTable 双方向スクロールを含むテーブル型のレコードセット。

  • dbOpenSnapshot双方向スクロールを使用するスナップショット型のレコードセット。

Lpszsql
次のいずれかを含む文字列ポインター:

  • NULL ポインター。

  • 1 つ以上の tabledef や querydef の名前 (コンマ区切り)。

  • SQL Standard Edition LECT ステートメント (必要に応じて、SQL WHERE 句または ORDERBY 句を使用)。

  • パススルー クエリ。

nOptions
以下に示すオプションの 1 つ以上。 既定値は 0 です。 使用できる値は次のとおりです。

  • dbAppendOnly 新しいレコードのみを追加できます (ダイナセットタイプのレコードセットのみ)。 このオプションは、文字どおり、レコードを追加することしかできないことを意味します。 MFC ODBC データベース クラスには、レコードの取得と追加を許可する追加専用オプションがあります。

  • dbForwardOnlyレコードセットは前方スクロールスナップショットです。

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

  • dbDenyWrite 他のユーザーはレコードを変更または追加できません。

  • dbDenyRead 他のユーザーはレコードを表示できません (テーブル型レコードセットのみ)。

  • dbReadOnly レコードのみを表示できます。他のユーザーが変更できます。

  • dbInconsistent 一貫性のない更新が許可されます (ダイナセットタイプのレコードセットのみ)。

  • dbConsistent 一貫性のある更新のみが許可されます (ダイナセットタイプのレコードセットのみ)。

Note

定数であり dbConsistentdbInconsistent 相互に排他的です。 一方または他方を使用できますが、特定の Openインスタンスでは両方を使用することはできません。

pTableDef
CDaoTableDef オブジェクトへのポインター。 このバージョンは、テーブル型レコードセットに対してのみ有効です。 このオプションを使用する場合、 CDaoDatabase 作成に使用される CDaoRecordset ポインターは使用されません。代わりに、tabledef が存在するデータベースが使用されます。

pQueryDef
CDaoQueryDef オブジェクトへのポインター。 このバージョンは、ダイナセットタイプおよびスナップショットタイプのレコードセットに対してのみ有効です。 このオプションを CDaoDatabase 使用する場合、構築 CDaoRecordset に使用されるポインターは使用されません。代わりに、querydef が存在するデータベースが使用されます。

解説

呼び出す Open前に、レコードセット オブジェクトを構築する必要があります。 これにはいくつかの方法があります。

  • レコードセット オブジェクトを構築するときに、既に開いているオブジェクトへの CDaoDatabase ポインターを渡します。

  • レコードセット オブジェクトを構築するときに、開かっていないオブジェクトへのポインターを CDaoDatabase 渡します。 レコードセットはオブジェクトを CDaoDatabase 開きますが、レコードセット オブジェクトが閉じると閉じません。

  • レコードセット オブジェクトを構築するときに、NULL ポインターを渡します。 レコードセット オブジェクトは、Microsoft Access の名前を取得するために呼び出します GetDefaultDBName 。開くMDBファイル。 その後、レコードセットはオブジェクトを CDaoDatabase 開き、レコードセットが開いている限り開いたままにします。 レコードセットを呼び出 Close すと、 CDaoDatabase オブジェクトも閉じられます。

    Note

    レコードセットがオブジェクトを CDaoDatabase 開くと、非決定的アクセス権を持つデータ ソースが開きます。

lpszSQL パラメーターを使用するバージョンOpenでは、レコードセットを開くと、いくつかの方法のいずれかでレコードを取得できます。 1 つ目のオプションは、DFX 関数を使用することです DoFieldExchange。 2 番目のオプションは、メンバー関数を呼び出して動的バインディングを GetFieldValue 使用することです。 これらのオプションは、個別に、または組み合わせて実装できます。 これらを組み合わせる場合は、SQL ステートメントを自分 Openで渡す必要があります。

オブジェクトを渡す CDaoTableDef 2 番目のOpenバージョンを使用すると、結果の列を使用してバインドしたり、DFX メカニズムを介してDoFieldExchangeGetFieldValue動的にバインドしたりできます。

Note

テーブル型レコードセットのオブジェクトのみをCDaoTableDef使用して呼び出Openすことができます。

オブジェクトを渡す CDaoQueryDef 3 番目のOpenバージョンを使用すると、そのクエリが実行され、結果の列を使用してバインドしたり、DFX メカニズムを介してDoFieldExchangeGetFieldValue動的にバインドしたりできます。

Note

ダイナセットタイプおよびスナップショットタイプのレコードセットに対してのみ、オブジェクトを使用してCDaoQueryDef呼び出Openすことができます。

パラメーターを使用lpszSQLする最初のバージョンでは、次のOpen表に示す条件に基づいてレコードが選択されます。

パラメーター lpszSQL の値。 レコードの選択基準
NULL GetDefaultSQL の返す文字列。
1 つ以上の tabledef 名または querydef 名のコンマ区切りのリスト。 DoFieldExchange表されるすべての列。 "Customer"
Standard Edition LECT column-list FROM table-list 指定した tabledef または querydef の指定された列。 "SELECT CustId, CustName

FROM Customer"

通常のプロシージャは、Open-derived クラスの作成時CDaoRecordsetOpenClassWizard によって生成されるオーバーライド可能なメンバー関数を 、その場合は呼び出しGetDefaultSQLに NULL を渡すことです。 この値は、ClassWizard で指定した tabledef や querydef の名前を示します。 代わりに、lpszSQL パラメーターで他の情報を指定できます。

渡した内容に関係なく、Openクエリの最終的な SQL 文字列を構築し (文字列には、渡した lpszSQL 文字列に SQL WHERE 句と ORDERBY 句が追加されている可能性があります)、クエリを実行します。 呼び出Openし後に呼び出GetSQLすことで、構築された文字列を調べることができます。

レコードセット クラスのフィールド データ メンバーは、選択したデータの列に結び付けられています。 いくつかのレコードが返された場合、最初のレコードが現在のレコードになります。

フィルターや並べ替えなどのレコードセットのオプションを設定する場合は、レコードセット オブジェクトを作成した後、または呼び出すOpen前に設定m_strSortm_strFilterします。 レコードセットが既に開いている後にレコードセット内のレコードを更新する場合は、 を呼び出します Requery

ダイナセットタイプまたはスナップショットタイプのレコードセットを呼び出すOpen場合、またはデータ ソースがアタッチされたテーブルを表す SQL ステートメントまたは tabledef を参照している場合は、型引数に使用dbOpenTableできません。その場合、MFC は例外をスローします。 tabledef オブジェクトがアタッチされたテーブルを表しているかどうかを確認するには、CDaoTableDef オブジェクトを作成し、その GetConnect メンバー関数を呼び出します。

同じレコードを dbSeeChanges 編集または削除するときに、コンピューター上の別のユーザーまたは別のプログラムによって行われた変更をトラップする場合は、フラグを使用します。 たとえば、2 人のユーザーが同じレコードの編集を開始した場合、メンバー関数を呼び出す最初のユーザーは Update 成功します。 2 番目のユーザーによって呼び出されると Update 、a CDaoException がスローされます。 同様に、2 番目のユーザーがレコードの削除を呼び出 Delete そうとしたときに、最初のユーザーによって既に変更されている場合は、a CDaoException が発生します。

通常、更新中にユーザーがこれを CDaoException 取得した場合、コードはフィールドの内容を更新し、新しく変更された値を取得する必要があります。 削除中に例外が発生した場合、コードで新しいレコード データがユーザーに表示され、データが最近変更されたことを示すメッセージが表示される可能性があります。 この時点で、コードは、ユーザーがまだレコードを削除することを望んでいるという確認を要求できます。

ヒント

前方スクロール オプション (dbForwardOnly) を使用して、アプリケーションが ODBC データ ソースから開かれたレコードセットを 1 回通過する場合のパフォーマンスを向上させます。

関連情報については、DAO ヘルプの「OpenRecordset メソッド」を参照してください。

CDaoRecordset::Requery

レコードセットを再構築 (更新) するには、このメンバー関数を呼び出します。

virtual void Requery();

解説

いくつかのレコードが返された場合、最初のレコードが現在のレコードになります。

自分または他のユーザーがデータ ソースに対して行っている追加と削除をレコードセットに反映させるには、レコードセットを呼び出 Requeryして再構築する必要があります。 レコードセットがダイナセットの場合、自分または他のユーザーが既存のレコードに対して行った更新が自動的に反映されます (ただし、追加は反映されません)。 レコードセットがスナップショットの場合は、他のユーザーによる編集と追加と削除を反映するように呼び出すRequery必要があります。

ダイナセットまたはスナップショットの場合は、パラメーター値を使用してレコードセットを再構築するたびに呼び出Requeryします。 新しいフィルターを設定するか、呼び出すRequery前にm_strFilterm_strSortを設定して並べ替えます。 呼び出す Requery前にパラメーター データ メンバーに新しい値を割り当てることで、新しいパラメーターを設定します。

レコードセットの再構築が失敗した場合、レコードセットは閉じられます。 呼び出すRequery前に、CanRestart メンバー関数を呼び出してレコードセットを再クエリできるかどうかを判断できます。 CanRestart は、それが成功することを Requery 保証しません。

注意事項

あなたが呼び出した後にのみ呼び出 Requery します Open.

Note

Requery を呼び出すと、DAO ブックマークが変更されます。

呼び出しで 0 が返された場合、ダイナセットタイプまたはスナップショットタイプのレコードセットを呼び出RequeryCanRestartすことはできません。また、テーブルタイプのレコードセットで使用することもできません。

呼び出Requeryした後に両方IsBOFとも IsEOF 0 以外の値が返された場合、クエリはレコードを返さなかったため、レコードセットにはデータが含まれません。

関連情報については、DAO ヘルプの「Requery メソッド」を参照してください。

CDaoRecordset::Seek

このメンバー関数を呼び出して、現在のインデックスの指定された条件を満たすインデックス付きテーブル型レコードセット オブジェクト内のレコードを検索し、そのレコードを現在のレコードにします。

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKey1,
    COleVariant* pKey2 = NULL,
    COleVariant* pKey3 = NULL);

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKeyArray,
    WORD nKeys);

パラメーター

lpszComparison
""、"="、"<="、"="、<">="、または ">" のいずれかの文字列式。

pKey1
インデックスの最初の フィールドに対応する値を持つ COleVariant へのポインター。 必須。

pKey2
インデックス内の COleVariant 2 番目のフィールド (存在する場合) に対応する値を指すポインター。 既定値は NULL です。

pKey3
インデックス内の COleVariant 3 番目のフィールド (存在する場合) に対応する値を指すポインター。 既定値は NULL です。

pKeyArray
バリアントの配列へのポインター。 配列サイズは、インデックス内のフィールドの数に対応します。

nKeys
配列のサイズに対応する整数。インデックス内のフィールドの数です。

Note

キーにワイルドカードを指定しないでください。 ワイルドカードでは、Seek一致するレコードが返されません。

戻り値

一致するレコードが見つかった場合は 0 以外、それ以外の場合は 0。

解説

4 つ以上のフィールドの Seek インデックスを処理するには、2 番目の (配列) バージョンを使用します。

Seek では、テーブル型のレコードセットに対する高パフォーマンスのインデックス検索が可能になります。 呼び出Seekす前に呼び出SetCurrentIndexすことによって、現在のインデックスを設定する必要があります。 インデックスが一意でないキー フィールドを識別する場合は、 Seek 条件を満たす最初のレコードを検索します。 インデックスを設定しない場合は、例外がスローされます。

UNICODE レコードセットを作成しない場合は、オブジェクトを COleVariant 明示的に ANSI として宣言する必要があることに注意してください。 これを行うには、vtSrc を (ANSI) に設定VT_BSTRTしたコンストラクターの COleVariant::COleVariant(lpszSrc,vtSrc) 形式を使用するか、関数 SetString(lpszSrc,vtSrc) を vtSrc に設定してVT_BSTRT使用COleVariantします。

呼び出 Seekすときに、1 つ以上のキー値と比較演算子 (""<、"="、"<="、"="、">="、または "">) を渡します。 Seekは、指定したキー フィールドを検索し、lpszComparison および pKey1指定された条件を満たす最初のレコードを検索します。 見つかったら、 Seek 0 以外の値を返し、そのレコードを最新の状態にします。 一致の検索に失敗した場合 SeekSeek 0 を返し、現在のレコードは未定義です。 DAO を直接使用する場合は、NoMatch プロパティを明示的にチェックする必要があります。

"="、">="、または ">"の場合lpszComparisonは、Seekインデックスの先頭から開始します。 lpszComparison が "<" または "<=" の場合は、インデックスの末尾から開始し、Seek末尾に重複するインデックス エントリがない限り、後方に検索します。 この場合、 Seek インデックスの末尾にある重複するインデックス エントリの中から任意のエントリから開始します。

使用 Seekするときに現在のレコードである必要はありません。

特定の条件を満たすダイナセットタイプまたはスナップショットタイプのレコードセット内のレコードを検索するには、検索操作を使用します。 特定の条件を満たすレコードだけでなく、すべてのレコードを含めるには、移動操作を使用してレコード間を移動します。

アタッチテーブルはダイナセットタイプまたはスナップショットタイプのレコードセットとして開く必要があるため、任意のタイプのアタッチテーブルを呼び出Seekすことはできません。 ただし、インストール可能な ISAM データベースを直接開くために呼び出 CDaoDatabase::Open す場合は、パフォーマンスが低下する可能性がありますが、そのデータベース内のテーブルを呼び出 Seek すことができます。

関連情報については、DAO ヘルプのトピック「Seek メソッド」を参照してください。

CDaoRecordset::SetAbsolutePosition

レコードセット オブジェクトの現在のレコードの相対レコード番号を設定します。

void SetAbsolutePosition(long lPosition);

パラメーター

lPosition
レコードセット内の現在のレコードの序数位置に対応します。

解説

呼び出しSetAbsolutePositionを使用すると、ダイナセットタイプまたはスナップショットタイプのレコードセット内の序数位置に基づいて、現在のレコードポインターを特定のレコードに配置できます。 GetAbsolutePosition を呼び出して、現在のレコード番号を確認することもできます。

Note

このメンバー関数は、ダイナセットタイプおよびスナップショットタイプのレコードセットに対してのみ有効です。

基になる DAO オブジェクトの AbsolutePosition プロパティ値は 0 から始まります。0 に設定すると、レコードセットの最初のレコードが参照されます。 設定されたレコードの数より大きい値を設定すると、MFC によって例外がスローされます。 メンバー関数を呼び出すことによって、レコードセットに設定されたレコードの数を GetRecordCount 確認できます。

現在のレコードが削除された場合、AbsolutePosition プロパティ値は定義されず、MFC は参照されている場合に例外をスローします。 新しいレコードがシーケンスの末尾に追加されます。

Note

このプロパティは、サロゲート レコード番号として使用するためのものではありません。 ブックマークは引き続き、特定の位置を保持して戻す推奨される方法であり、ブックマークをサポートするすべての種類のレコードセット オブジェクトに現在のレコードを配置する唯一の方法です。 特に、特定のレコードの位置は、そのレコードの前にあるレコードが削除されるときに変更されます。 また、レコードセット内の個々のレコードの順序は、ORDERBY 句を使用して SQL ステートメントを使用して作成されない限り保証されないため、レコードセットが再作成された場合、特定のレコードが同じ絶対位置を持つことも保証されません。

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

CDaoRecordset::SetBookmark

このメンバー関数を呼び出して、指定したブックマークを含むレコードにレコードセットを配置します。

void SetBookmark(COleVariant varBookmark);

パラメーター

varBookmark
特定のレコードの ブックマーク値を含む COleVariant オブジェクト。

解説

レコードセット オブジェクトが作成または開かれると、その各レコードには一意のブックマークが既に存在します。 現在のレコードのブックマークを取得するには、値を呼び出 GetBookmark してオブジェクトに COleVariant 保存します。 後で保存されたブックマーク値を使用して呼び出 SetBookmark すことで、そのレコードに戻ることができます。

Note

Requery を呼び出すと、DAO ブックマークが変更されます。

UNICODE レコードセットを作成しない場合は、オブジェクトを COleVariant 明示的に ANSI として宣言する必要があります。 これを行うには、vtSrc を (ANSI) に設定VT_BSTRTしたコンストラクターの COleVariant::COleVariant(lpszSrc,vtSrc) 形式を使用するか、関数 SetString(lpszSrc,vtSrc) を vtSrc に設定してVT_BSTRT使用COleVariantします。

関連情報については、DAO ヘルプの「Bookmark プロパティ」および「Bookmarkable プロパティ」のトピックを参照してください。

CDaoRecordset::SetCacheSize

このメンバー関数を呼び出して、キャッシュするレコードの数を設定します。

void SetCacheSize(long lSize);

パラメーター

lSize
レコードの数を指定します。 一般的な値は 100 です。 0 に設定すると、キャッシュがオフになります。 この設定は、5 から 1200 レコードの間である必要があります。 キャッシュで大量のメモリが使用される場合があります。

解説

キャッシュは、アプリケーションの実行中にデータが再度要求される場合に、サーバーから最後に取得したデータを保持するローカル メモリ内の領域です。 データ キャッシュにより、ダイナセット タイプのレコードセット オブジェクトを介してリモート サーバーからデータを取得するアプリケーションのパフォーマンスが向上します。 データが要求されると、Microsoft Jet データベース エンジンは、要求されたデータのキャッシュをサーバーから取得するのではなく、最初にキャッシュをチェックします。これには時間がかかります。 ODBC データ ソースから取得されていないデータはキャッシュに保存されません。

接続されたテーブルなどの ODBC データ ソースには、ローカル キャッシュを使用できます。 キャッシュを作成するには、リモート データ ソースからレコードセット オブジェクトを開き、メンバー関数とSetCacheStartメンバー関数をSetCacheSize呼び出してから、メンバー関数を呼び出FillCacheすか、Move 操作のいずれかを使用してレコードをステップ実行します。 メンバー関数の SetCacheSize lSize パラメーターは、アプリケーションが一度に操作できるレコードの数に基づいて指定できます。 たとえば、画面に表示するデータのソースとしてレコードセットを使用している場合は、lSize パラメーターを 20 として渡SetCacheSizeして、一度に 20 個のレコードを表示できます。

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

CDaoRecordset::SetCacheStart

このメンバー関数を呼び出して、キャッシュするレコードセットの最初のレコードのブックマークを指定します。

void SetCacheStart(COleVariant varBookmark);

パラメーター

varBookmark
キャッシュするレコードセットの最初のレコードのブックマークを指定する COleVariant

解説

メンバー関数の varBookmark パラメーターには、任意のレコードのブックマーク値をSetCacheStart使用できます。 現在のレコードでキャッシュを開始するレコードを作成し、SetBookmark を使用してそのレコードのブックマークを確立し、ブックマーク値をメンバー関数のSetCacheStartパラメーターとして渡します。

Microsoft Jet データベース エンジンは、キャッシュ範囲内のレコードをキャッシュから要求し、サーバーからキャッシュ範囲外のレコードを要求します。

キャッシュから取得されたレコードには、他のユーザーがソース データに同時に行った変更は反映されません。

キャッシュされたすべてのデータを強制的に更新するには、lSize パラメーターSetCacheSizeを 0 として渡し、最初に要求したキャッシュのサイズを指定して再度呼び出SetCacheSizeしてから、メンバー関数をFillCache呼び出します。

UNICODE レコードセットを作成しない場合は、オブジェクトを COleVariant 明示的に ANSI として宣言する必要があります。 これを行うには、vtSrc を (ANSI) に設定VT_BSTRTしたコンストラクターの COleVariant::COleVariant(lpszSrc,vtSrc) 形式を使用するか、関数 SetString(lpszSrc,vtSrc) を vtSrc に設定してVT_BSTRT使用COleVariantします。

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

CDaoRecordset::SetCurrentIndex

テーブル型レコードセットにインデックスを設定するには、このメンバー関数を呼び出します。

void SetCurrentIndex(LPCTSTR lpszIndex);

パラメーター

lpszIndex
設定するインデックスの名前を含むポインター。

解説

ベース テーブル内のレコードは、特定の順序で格納されません。 インデックスを設定すると、データベースから返されるレコードの順序は変更されますが、レコードが格納される順序には影響しません。 指定したインデックスは既に定義されている必要があります。 存在しないインデックス オブジェクトを使用しようとした場合、または Seek を呼び出すときにインデックスが設定されていない場合、MFC は例外をスローします。

CDaoTableDef::CreateIndex を呼び出し、CDaoTableDef::Append を呼び出してレコードセットを再度開くことで、基になる tabledef の Indexes コレクションに新しいインデックスを追加することで、テーブルの新しいインデックスを作成できます。

テーブル型レコードセットから返されるレコードは、基になる tabledef に対して定義されたインデックスによってのみ並べ替えることができます。 他の順序でレコードを並べ替えるには、CDaoRecordset::m_strSort に格納されている SQL ORDERBY 句を使用して、ダイナセットタイプまたはスナップショットタイプのレコードセットを開くことができます。

関連情報については、DAO ヘルプの「Index オブジェクト」および「現在のインデックス」の定義を参照してください。

CDaoRecordset::SetFieldDirty

レコードセットのフィールド データ メンバーに変更または変更されていないフラグを設定するには、このメンバー関数を呼び出します。

void SetFieldDirty(
    void* pv,
    BOOL bDirty = TRUE);

パラメーター

Pv
レコードセットまたは NULL のフィールド データ メンバーのアドレスを格納します。 NULL の場合、レコードセット内のすべてのフィールド データ メンバーにフラグが設定されます。 (C++ NULL は、データベース用語の Null と同じではありません。つまり、"値がありません")。

bDirty
フィールド データ メンバーに "ダーティ" (変更) のフラグを設定する場合は TRUE。 それ以外の場合STANDARD EDITIONフィールド データ メンバーに "クリーン" (変更なし) のフラグが設定される場合は FAL。

解説

フィールドを変更せずにマークすると、フィールドは更新されません。

フレームワークは、変更されたフィールド データ メンバーが DAO レコード フィールド交換 (DFX) メカニズムによってデータ ソースのレコードに確実に書き込まれるようにマークします。 通常、フィールドの値を変更すると、フィールドダーティが自動的に設定されるため、自分で呼び出すSetFieldDirty必要はほとんどありませんが、フィールド データ メンバー内の値に関係なく、列が明示的に更新または挿入されるようにしたい場合があります。 DFX メカニズムでは、P Standard Edition UDONULL も使用されます。 詳細については、「CDaoFieldExchange::m_nOperation」を 参照してください

ダブル バッファリング メカニズムが使用されていない場合、フィールドの値を変更しても、フィールドは自動的にダーティとして設定されません。 この場合、フィールドを明示的にダーティとして設定する必要があります。 m_bCheckCacheForDirtyFields含まれるフラグは、この自動フィールドのチェックを制御します。

関数の最初の引数に NULL を使用すると、パラメーター フィールドではなく、すべてのoutputColumnフィールドにCDaoFieldExchange関数が適用されます。 たとえば、呼び出し

SetFieldDirty(NULL);

はフィールドのみを outputColumn NULL に設定します。 param フィールドは影響を受けません。

パラメーター操作するには、次のように、作業する個々のパラメーターの実際のアドレスを指定する必要があります。

SetFieldDirty(&m_strParam);

つまり、フィールドと同様outputColumnに、すべてのパラメーター フィールドを NULL に設定することはできません。

SetFieldDirty を使用して DoFieldExchange実装されます。

CDaoRecordset::SetFieldNull

このメンバー関数を呼び出して、レコードセットのフィールド データ メンバーに Null (具体的には値を持たない) または Null 以外の値としてフラグを設定します。

void SetFieldNull(
    void* pv,
    BOOL bNull = TRUE);

パラメーター

Pv
レコードセットまたは NULL のフィールド データ メンバーのアドレスを格納します。 NULL の場合、レコードセット内のすべてのフィールド データ メンバーにフラグが設定されます。 (C++ NULL は、データベース用語の Null と同じではありません。つまり、"値がありません")。

bNull
フィールド データ メンバーに値なし (Null) のフラグを設定する場合は 0 以外。 フィールド データ メンバーに Null 以外のフラグを設定する場合は、それ以外の場合は 0。

解説

SetFieldNull は、メカニズムでバインドされたフィールドに DoFieldExchange 使用されます。

レコードセットに新しいレコードを追加すると、すべてのフィールド データ メンバーが最初に Null 値に設定され、"ダーティ" (変更済み) としてフラグが設定されます。 データ ソースからレコードを取得する場合、その列には既に値が含まれるか、Null になります。 フィールドを Null にするのが適切でない場合は、 CDaoException がスローされます。

たとえば、ダブル バッファリング メカニズムを使用している場合、現在のレコードのフィールドに値を指定しない場合は、bNull を TRUE に設定して呼び出SetFieldNullし、Null としてフラグを設定します。 フィールドが以前に Null とマークされていて、値を指定する場合は、新しい値を設定するだけです。 を使用して Null フラグ SetFieldNullを削除する必要はありません。 フィールドを Null にできるかどうかを判断するには、IsFieldNullable を呼び出します。

ダブル バッファリング メカニズムを使用していない場合、フィールドの値を変更しても、フィールドは自動的に ダーティ と Null 以外に設定されません。 ダーティフィールドと Null 以外のフィールドを明示的に設定する必要があります。 m_bCheckCacheForDirtyFields含まれるフラグは、この自動フィールドのチェックを制御します。

DFX メカニズムでは、P Standard Edition UDONULL を使用します。 詳細については、「CDaoFieldExchange::m_nOperation」を 参照してください

関数の最初の引数に NULL を使用すると、パラメーター フィールドではなくCDaoFieldExchangeフィールドにのみoutputColumn関数が適用されます。 たとえば、呼び出し

SetFieldNull(NULL);

はフィールドのみを outputColumn NULL に設定します。 param フィールドは影響を受けません。

CDaoRecordset::SetFieldValue

このメンバー関数を呼び出して、序数位置または文字列の値を変更することによって、フィールドの値を設定します。

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

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

void SetFieldValue(
    LPCTSTR lpszName,
    LPCTSTR lpszValue);

void SetFieldValue(
    int nIndex,
    LPCTSTR lpszValue);

パラメーター

lpszName
フィールドの名前を含む文字列へのポインター。

varValue
フィールドの内容の 値を含む COleVariant オブジェクトへの参照。

Nindex
レコードセットの Fields コレクション内のフィールドの序数位置を表す整数 (0 から始まる)。

lpszValue
フィールドの内容の値を含む文字列へのポインター。

解説

DoFieldExchange メカニズムを使用して列を静的にバインドするのではなく、実行時にフィールドを動的にバインドするには、GetFieldValue を使用SetFieldValueします。

UNICODE レコードセットを作成しない場合は、パラメーターを含COleVariantまない形式SetFieldValueを使用するか、オブジェクトを COleVariant ANSI で明示的に宣言する必要があります。 これを行うには、vtSrc を (ANSI) に設定VT_BSTRTしたコンストラクターの COleVariant::COleVariant(lpszSrc,vtSrc) 形式を使用するか、関数 SetString(lpszSrc,vtSrc) を vtSrc に設定してVT_BSTRT使用COleVariantします。

関連情報については、DAO ヘルプの「フィールド オブジェクト」および「値プロパティ」のトピックを参照してください。

CDaoRecordset::SetFieldValueNull

このメンバー関数を呼び出して、フィールドを Null 値に設定します。

void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);

パラメーター

Nindex
レコードセット内のフィールドのインデックス。0 から始まるインデックスによる参照用です。

lpszName
名前で検索するレコードセット内のフィールドの名前。

解説

C++ NULL は Null と同じではありません。データベースの用語では、"値を持たない" ことを意味します。

関連情報については、DAO ヘルプの「フィールド オブジェクト」および「値プロパティ」のトピックを参照してください。

CDaoRecordset::SetLockingMode

レコードセットのロックの種類を設定するには、このメンバー関数を呼び出します。

void SetLockingMode(BOOL bPessimistic);

パラメーター

bPessimistic
ロックの種類を示すフラグ。

解説

ペシミスティック ロックが有効な場合、編集中のレコードを含む 2K ページは、メンバー関数を呼び出 Edit すとすぐにロックされます。 ページは、またはメンバー関数または Close Move 操作または Find 操作を呼び出Updateすとロック解除されます。

オプティミスティック ロックが有効な場合、レコードを含む 2K ページは、レコードがメンバー関数で Update 更新されている間のみロックされます。

ページがロックされている場合、他のユーザーは同じページのレコードを編集できません。 0 以外の値を呼び出 SetLockingMode して渡し、別のユーザーが既にページをロックしている場合は、呼び出 Editすときに例外がスローされます。 他のユーザーは、ロックされたページからデータを読み取ることができます。

ページが別のユーザーによってロックされている間に 0 個の値を指定して呼び出し、後で呼び出SetLockingModeUpdateすと、例外が発生します。 別のユーザーによってレコードに加えられた変更を確認し、変更を失うには、現在のレコードの SetBookmark ブックマーク値を使用してメンバー関数を呼び出します。

ODBC データ ソースを使用する場合、ロック モードは常にオプティミスティックです。

CDaoRecordset::SetParamValue

実行時にレコードセット内のパラメーターの値を設定するには、このメンバー関数を呼び出します。

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

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

パラメーター

Nindex
querydef の Parameters コレクション内のパラメーターの数値位置。

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

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

解説

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

オブジェクトとして設定する値を COleVariant 指定します。 オブジェクトで目的の値と型を設定する方法については、COleVariant クラスを参照してくださいCOleVariant。 UNICODE レコードセットを作成しない場合は、オブジェクトを COleVariant 明示的に ANSI として宣言する必要があります。 これを行うには、vtSrc を (ANSI) に設定VT_BSTRTしたコンストラクターの COleVariant::COleVariant(lpszSrc,vtSrc) 形式を使用するか、関数 SetString(lpszSrc,vtSrc) を vtSrc に設定してVT_BSTRT使用COleVariantします。

CDaoRecordset::SetParamValueNull

パラメーターを Null 値に設定するには、このメンバー関数を呼び出します。

void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);

パラメーター

Nindex
レコードセット内のフィールドのインデックス。0 から始まるインデックスによる参照用です。

lpszName
名前で検索するレコードセット内のフィールドの名前。

解説

C++ NULL は Null と同じではありません。データベースの用語では、"値を持たない" ことを意味します。

CDaoRecordset::SetPercentPosition

レコードセット内のレコードの割合に基づいて、レコードセット オブジェクト内の現在のレコードのおおよその位置を変更する値を設定するには、このメンバー関数を呼び出します。

void SetPercentPosition(float fPosition);

パラメーター

fPosition
0 から 100 の範囲の数。

解説

ダイナセットタイプまたはスナップショットタイプのレコードセットを操作する場合は、呼び出すSetPercentPosition前に最後のレコードに移動してレコードセットを設定します。 レコードセットを完全に設定する前に呼び出 SetPercentPosition す場合、移動の量は、GetRecordCount の値によって示されるようにアクセスされるレコードの 数に対して相対的です。 最後のレコードに移動するには、次を呼び出します MoveLast

呼び出 SetPercentPositionすと、その値に対応するおおよその位置にあるレコードが現在の位置になります。

Note

現在のレコードをレコードセット内の特定のレコードに移動する呼び出し SetPercentPosition は推奨されません。 代わりに SetBookmark メンバー関数を呼び出します。

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

CDaoRecordset::Update

or Edit メンバー関数の呼び出し後に、このメンバー関数をAddNew呼び出します。

virtual void Update();

解説

この呼び出しは、またはEdit操作をAddNew完了するために必要です。

また AddNewEdit データ ソースに保存するために追加または編集されたデータを配置する編集バッファーを準備します。 Update はデータを保存します。 変更済みとしてマークまたは検出されたフィールドのみが更新されます。

データ ソースがトランザクションをサポートしている場合は、トランザクションの Update 呼び出し (およびその対応する AddNewEdit び出し) の一部を行うことができます。

注意事項

最初にいずれかの呼び出しを行わずに呼び出UpdateすとEditAddNewUpdateCDaoException. 呼び出すAddNew場合はEdit、MoveNext を呼び出す前に呼び出Updateすか、レコードセットまたはデータ ソース接続を閉じる必要があります。 それ以外の場合、変更は通知なしで失われます。

レコードセット オブジェクトがマルチユーザー環境で悲観的にロックされている場合、その時点Editからロックされたレコードメインは更新が完了するまで使用されます。 レコードセットが楽観的にロックされている場合、レコードはロックされ、データベースで更新される直前に事前に編集されたレコードと比較されます。 呼び出 Editしてからレコードが変更された場合、操作は Update 失敗し、MFC は例外をスローします。 でロックモード SetLockingModeを変更できます。

Note

オプティミスティック ロックは、ODBC やインストール可能な ISAM などの外部データベース形式で常に使用されます。

関連情報については、DAO ヘルプの「AddNew メソッド」、「CancelUpdate メソッド」、「Delete メソッド」、「LastModified プロパティ」、「Update メソッド」、「EditMode プロパティ」の各トピックを参照してください。

関連項目

CObject クラス
階層図
CDaoTableDef クラス
CDaoWorkspace クラス
CDaoDatabase クラス
CDaoQueryDef クラス