次の方法で共有


CRecordset::SetFieldNull

更新 : 2007 年 11 月

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

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

パラメータ

  • pv
    レコードセットのフィールド データ メンバのアドレス、または NULLNULL を指定したときは、レコードセットのすべてのフィールド データ メンバにフラグがセットされます。(データベースの専門用語の NULL とは異なり、C++ の NULL は、"値を持たない" ことを意味します。)

  • bNull
    0 以外のときは、フィールド データ メンバは、値を持たない (Null) としてマークされます。0 を指定すると、フィールド データ メンバは、Null でないとしてマークされます。

解説

レコードセットに新しいレコードを追加すると、すべてのフィールド データ メンバには初期値として NULL が設定され、"ダーティ" (変更されている) が設定されます。データ ソースからレコードを取得するとき、その列は既に値を持っているか、Null であるかのどちらかです。

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

バルク行フェッチを使用しているレコードセットでは、このメンバ関数を呼び出さないでください。バルク行フェッチを実装した場合に SetFieldNull を呼び出すと、アサートが失敗します。バルク行フェッチの詳細については、「レコードセット : バルク行フェッチ (ODBC)」を参照してください。

現在のレコードのフィールドが値を持たないことを特別に指定する場合は、パラメータ bNull に TRUE を渡して SetFieldNull 関数を呼び出して NULL であることを設定します。以前に NULL であったフィールドに値を設定するには、単に新しい値を設定します。SetFieldNull を使用して Null のフラグを解除する必要はありません。フィールドに NULL が設定できるかどうかを調べるには、IsFieldNullable 関数を呼び出します。

hd606c40.alert_caution(ja-jp,VS.90).gif注意 :

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

関数の最初の引数に NULL を指定したときは、関数は outputColumns フィールドのみに適用され param フィールドには適用されません。呼び出し形式は、次のとおりです。

SetFieldNull(NULL);

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

param フィールドに対して行うには、次のように、変更する param の個別のアドレスを渡す必要があります。

SetFieldNull(&m_strParam);

これは、outputColumns フィールドとは異なり、すべての param フィールドを同時に NULL に設定できないことを意味します。

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

レコードセットを開く前に、パラメータを NULL に設定して SetFieldNull を呼び出すと、アサートされます。この場合は、SetParamNull を呼び出してください。

SetFieldNullDoFieldExchange を使って実装されます。

必要条件

ヘッダー : afxdb.h

参照

参照

CRecordset クラス

階層図

CRecordset::IsFieldNull

CRecordset::SetFieldDirty

CRecordset::Edit

CRecordset::Update

CRecordset::IsFieldNullable

その他の技術情報

CRecordset のメンバ