CRecordset::SetFieldNull
更新 : 2007 年 11 月
レコードセットのフィールド データ メンバを 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