CRecordset::SetFieldDirty
void SetFieldDirty( void* pv, BOOL bDirty = TRUE );
参数:
pv
指向记录集中一字段数据成员的地址,或为NULL。如果该参数为NULL,则标记记录集中所有字段数据成员。(C++ NULL与数据库术语中的Null不相同,后者表示“没有值”)。
bDirty
如果要将字段数据成员标记为“脏的”(被修改了),则设置此参数为TRUE;否则如果要将字段数据成员标记为“干净的”(未被修改过),则设置此参数为FALSE。
说明:
此成员函数用来标记记录集中的一个字段数据成员为被修改了或未被修改过。标记字段为未被修改过,可以确保该字段不被更新,并产生较少的SQL语句。
注意:
此成员函数对使用成组行检取的记录集是不适用的。如果你已经实现了成组行检取,则SetFieldDirty将导致一个失败断言。
框架标记改变过的字段数据成员来确保记录字段交换机制(RFX)将它们写入数据源中对应的记录中。改变一个字段的值通常自动地将该自动设置为被修改了,因此应用程序本身很少有必要调用SetFieldDirty函数,但有时可能想要确保记录的列显式地被更新或插入,而不管自动数据成员中是什么值。
重点:只能在调用Edit或AddNew之后调用SetFieldDirty函数。
使用NULL作为SetFieldDirty函数的第一个参数,将使该函数只应用于outputColumns,而不作用于params。例如,调用
SetFieldNull( NULL );
将只设置outputColumns为NULL,而params将不受影响。
要想作用于params,应用程序必须对所想要作用的各个param提供实际地址,例如:
SetFieldNull( &m_strParam );
这意味着应用程序不能像对outputColmns一样将所有params都设置为NULL。
请参阅:
CRecordset::IsFieldDirty
,
CRecordset::SetFieldNull
,
CRecordset::Edit
,
CRecordset::Update