Microsoft KB Archive/130956

= PRB: MFC DB Classes Don't Update NULL Field Values to Non- NULL =

Article ID: 130956

Article Last Modified on 11/21/2006

-

APPLIES TO


 * Microsoft Foundation Class Library 4.2, when used with:
 * Microsoft Visual C++ 2.0 Professional Edition

-



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.

Additional query words: 2.00 3.00 ODBC

Keywords: kbcode kbdatabase kbprb KB130956

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.