次の方法で共有


CDaoRecordset::SetFieldNull

更新 : 2007 年 11 月

レコードセットのフィールド データ メンバに NULL (値を持たない) または NULL 以外を設定します。

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

パラメータ

  • pv
    レコードセットのフィールド データ メンバのアドレス、または NULLNULL を指定したときは、レコードセットのすべてのフィールド データ メンバにフラグがセットされます。(データベースの専門用語の 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 機構では、PSEUDONULL も使用できます。詳細については、「CDaoFieldExchange::m_nOperation」を参照してください。

hfhdc27k.alert_note(ja-jp,VS.90).gifメモ :

このメンバ関数は、Edit または AddNew 関数を呼び出した後にだけ呼び出してください。

関数の最初の引数に NULL を使用すると、CDaoFieldExchangeparam フィールドではなく、すべての outputColumns フィールドに関数が適用されます。呼び出し形式は、次のとおりです。

SetFieldNull(NULL);      

は、outputColumns フィールドのみに NULL をセットし、params フィールドには影響を与えません。

必要条件

ヘッダー : afxdao.h

参照

参照

CDaoRecordset クラス

階層図

CDaoRecordset::SetParamValue

その他の技術情報

CDaoRecordset のメンバ