CRecordset::SetFieldDirty
レコードセットのフィールド データ メンバーに、変更の有無を示すフラグをセットします。
void SetFieldDirty(
void* pv,
BOOL bDirty = TRUE
);
パラメーター
pv
レコードセットのフィールド データ メンバーのアドレス、または NULL。 NULL を指定したときは、レコードセットのすべてのフィールド データ メンバーにフラグがセットされます。 (データベースの専門用語の NULL とは異なり、C++ の NULL は、"値を持たない" ことを意味します。)bDirty
TRUE を指定すると、フィールド データ メンバーは "ダーティ" (変更されている) としてマークされます。 FALSE を指定すると、フィールド データ メンバーは "クリーン" (変更されていない) としてマークされます。
解説
フィールドを変更なしとしてマークすることは、フィールドが更新されていないことを示し、SQL のやり取りを少なくします。
注意
このメンバー関数は、バルク行フェッチを使用したレコードセットには適用できません。 バルク行フェッチを実装した場合は、SetFieldDirty を呼び出すとアサートします。 バルク行フェッチの詳細については、資料を参照してくださいレコード セット:一括 (ODBC) 内のレコードをフェッチ。
フレームワークは、変更されたフィールド データ メンバーを記録し、RFX (レコード フィールド エクスチェンジ) 機能がデータ ソースに確実にレコードを書き込むようにします。 フィールドの値を変更すると、通常、フィールドは自動的にダーティに設定されます。したがって、SetFieldDirty 関数を呼び出す必要はほとんどありません。しかし、フィールド データ メンバーの値にかかわらず列を明示的に更新または挿入する必要がある場合は、SetFieldDirty 関数を呼び出します。
関数の最初の引数に NULL を指定したときは、関数は outputColumns フィールドのみに適用され param フィールドには適用されません。 呼び出し形式は、次のとおりです。
SetFieldNull(NULL);
は、outputColumns フィールドのみに NULL をセットし、param フィールドには影響を与えません。
param フィールドに対して行うには、次のように、変更する param の個別のアドレスを渡す必要があります。
SetFieldNull(&m_strParam);
これは、outputColumn フィールドとは異なり、すべての param フィールドを同時に NULL に設定できないことを意味します。
必要条件
**ヘッダー:**afxdb.h