CRecordset::SetFieldNull
レコードセットのフィールド データ メンバーを NULL (値を持たない) または NULL 以外としてマークします。
void SetFieldNull(
void* pv,
BOOL bNull = TRUE
);
パラメーター
pv
レコードセットのフィールド データ メンバーのアドレス、または NULL。 NULL を指定したときは、レコードセットのすべてのフィールド データ メンバーにフラグがセットされます。 (データベースの専門用語の NULL とは異なり、C++ の NULL は、"値を持たない" ことを意味します。)bNull
0 以外のときは、フィールド データ メンバーは、値を持たない (Null) としてマークされます。 0 を指定すると、フィールド データ メンバーは、Null でないとしてマークされます。
解説
レコードセットに新しいレコードを追加すると、すべてのフィールド データ メンバーには初期値として NULL が設定され、"ダーティ" (変更されている) が設定されます。 データ ソースからレコードを取得するとき、その列は既に値を持っているか、Null であるかのどちらかです。
注意
バルク行フェッチを使用しているレコードセットでは、このメンバー関数を呼び出さないでください。 バルク行フェッチを実装した場合に SetFieldNull を呼び出すと、アサートが失敗します。 バルク行フェッチの詳細については、資料を参照してくださいレコード セット:一括 (ODBC) 内のレコードをフェッチ。
現在のレコードのフィールドが値を持たないことを特別に指定する場合は、パラメーター bNull に TRUE を渡して SetFieldNull 関数を呼び出して NULL であることを設定します。 以前に NULL であったフィールドに値を設定するには、単に新しい値を設定します。 SetFieldNull を使用して Null のフラグを解除する必要はありません。 フィールドに NULL が設定できるかどうかを調べるには、IsFieldNullable 関数を呼び出します。
関数の最初の引数に NULL を指定したときは、関数は outputColumns フィールドのみに適用され param フィールドには適用されません。 呼び出し形式は、次のとおりです。
SetFieldNull(NULL);
は、outputColumns フィールドのみに NULL をセットし、param フィールドには影響を与えません。
param フィールドに対して行うには、次のように、変更する param の個別のアドレスを渡す必要があります。
SetFieldNull(&m_strParam);
これは、outputColumns フィールドとは異なり、すべての param フィールドを同時に NULL に設定できないことを意味します。
注意
レコードセットを開く前に、パラメーターを NULL に設定して SetFieldNull を呼び出すと、アサートされます。 この場合は、SetParamNull を呼び出してください。
SetFieldNull は DoFieldExchange を使って実装されます。
必要条件
**ヘッダー:**afxdb.h