CDaoRecordset::SetFieldNull
レコードセットのフィールド データ メンバーに NULL (値を持たない) または NULL 以外を設定します。
void SetFieldNull(
void* pv,
BOOL bNull = TRUE
);
パラメーター
pv
レコードセットのフィールド データ メンバーのアドレス、または NULL。 NULL を指定したときは、レコードセットのすべてのフィールド データ メンバーにフラグがセットされます。 (データベースの専門用語の NULL とは異なり、C++ の NULL は、"値を持たない" ことを意味します。)bNull
0 以外のときは、フィールド データ メンバーは、値を持たない (Null) としてマークされます。 0 を指定すると、フィールド データ メンバーは、Null でないとしてマークされます。
解説
SetFieldNull は、DoFieldExchange 機構で連結されたフィールドに使用します。
レコードセットに新しいレコードを追加すると、すべてのフィールド データ メンバーには初期値として NULL が設定され、"ダーティ" (変更されている) が設定されます。 データ ソースからレコードを取得するとき、その列は既に値を持っているか、Null であるかのどちらかです。 フィールドを Null にすることが適切でないと、CDaoException がスローされます。
ダブルバッファリング機構を使用している場合、たとえば、明確に値を持っていないとして現在のレコードのフィールドをマークする場合は、Null としてマークするために、bNull に TRUE を設定して、SetFieldNull を呼び出します。 以前に NULL であったフィールドに値を設定するには、単に新しい値を設定します。 SetFieldNull を使用して Null のフラグを解除する必要はありません。 フィールドを Null にできるかどうかを調べるには、IsFieldNullable を呼び出します。
ダブルバッファリング機構を使用していない場合、フィールドの値を変更しても、フィールドは自動的に、ダーティおよび Null 以外として設定されません。 明確にフィールドをダーティで Null 以外として設定する必要があります。 フィールドの自動チェックは、m_bCheckCacheForDirtyFields が保持するフラグによって制御されます。
DFX 機構では、PSEUDO NULL も使用できます。 詳細については、「CDaoFieldExchange::m_nOperation」を参照してください。
関数の最初の引数に NULL を使用すると、CDaoFieldExchange の param フィールドではなく、すべての outputColumns フィールドに関数が適用されます。 呼び出し形式は、次のとおりです。
SetFieldNull(NULL);
は、outputColumns フィールドのみに NULL をセットし、param フィールドには影響を与えません。
必要条件
**ヘッダー:**afxdao.h