次の方法で共有


CRecordset::SetFieldNull

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

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

パラメーター

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

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

解説

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

注意

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

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

ヒント

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

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

SetFieldNull(NULL);

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

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

SetFieldNull(&m_strParam);

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

注意

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

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

必要条件

**ヘッダー:**afxdb.h

参照

参照

CRecordset クラス

階層図

CRecordset::IsFieldNull

CRecordset::SetFieldDirty

CRecordset::Edit

CRecordset::Update

CRecordset::IsFieldNullable

その他の技術情報

CRecordset のメンバー