PRB: MFC DB Classes Don't Update NULL Field Values to Non- NULL (130956)
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), when used with:
- Microsoft Visual C++, 32-bit Professional Edition 2.0
This article was previously published under Q130956 SYMPTOMS
When the MFC Database classes that come with Visual C++ version 2.0 are
used, any field that has a NULL value cannot be updated to a non-NULL value
successfully.
After opening a recordset on a SQL Server table that has fields with NULL
values, the Edit() and Update() methods of the recordset fail to update the
value of the field to a non-NULL value. For example, the following code
isn't able to do the update:
CMyRecordSet rs;
rs.Open();
rs.Edit();
rs.m_Name="Test"; //m_Name allows NULLs and is NULL for current record
rs.Update();
The Update() function doesn't return any error, but the m_Name value is
still set to NULL.
RESOLUTION
Use the MFC Database Classes that come with Visual C++ version 2.1 or
above. Otherwise, for the field to be updated, force the bNull flag of the
SetFieldNull() method to FALSE before calling the Update(). The following
code works:
CMyRecordSet rs;
rs.Open();
rs.Edit();
rs.m_Name="Test"; //m_Name allows NULLs and is NULL for current record
rs.SetFieldNull(&rs.m_Name, FALSE);
rs.Update();
STATUS
This behavior is by design.
Modification Type: | Major | Last Reviewed: | 10/24/2003 |
---|
Keywords: | kbcode kbDatabase kbprb KB130956 |
---|
|