CRecordset::SetFieldNull

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

参数:
pv指向记录集中一字段数据成员的地址,或为NULL。如果该参数为NULL,则标记记录集中所有字段数据成员。(C++ NULL与数据库术语中的Null不相同,后者表示“没有值”)。
bNull如果要将此字段数据成员标记为没有值(Null),则设置该参数为一个非零值。如果要将此字段数据成员标记为非Null,则设置该参数为零。

说明:
此成员函数用来将记录集的一个字段数据成员标记为Null(专指没有值)或非空。当应用程序将一个新记录增加到一个记录集中时,其所有字段数据成员初始都设置为Null值,并标记为“脏的”(被修改了)。当应用程序从一个数据源中检取一个记录时,该记录的列或是已有值,或是Null。
注意:
此成员函数对使用成组行检取的记录集是不适用的。如果你已经实现了成组行检取,则SetFieldDirty将导致一个失败断言。
如果你特别希望将当前记录的某个字段设计为没有值,可将bNull设置为TRUE来调用SetFieldNull函数,以将该字段标记为Null。如果一个字段先前标记为Null,而现在应用程序想要给它一个值,则只需要简单地设置该字段的新值。
应用程序不需要用SetFieldNull来删掉Null标志。要确定该字段是否可以为Null,可以调用IsFieldNullable函数。
重点:
只能在调用Edit或AddNew之后才能调用SetFieldNull函数。使用NULL作为SetFieldNull函数的第一个参数,将使该函数只应用于outputColumns,而不作用于params。例如,调用
SetFieldNull( NULL );
将只设置outputColumns为NULL,而params将不受影响。
要想作用于params,应用程序必须对所想要作用的各个param提供实际地址,例如:
SetFieldNull( &m_strParam );
这意味着应用程序不能像对outputColumns一样将所有params都设置为NULL。
注意:
当设置参数为Null时,在记录集打开之前调用SetFieldNull将导致一个断言。在这种情况下,可以调用SetParamNull。
SetFieldNull通过DoFieldExchange实现。

请参阅:
CRecordset::IsFieldNull, CRecordset::SetFieldDirty, CRecordset::Edit, CRecordset::Update, CRecordset::IsFieldNullable