Article ID: 160073
Article Last Modified on 11/21/2006
APPLIES TO
- Microsoft Foundation Class Library 4.2, when used with:
- Microsoft Visual C++ 4.2 Enterprise Edition
- Microsoft Visual C++ 4.2 Professional Edition
This article was previously published under Q160073
SUMMARY
The MFC ODBC classes attempt to update the CByteArray data
for a record each time you move off that record, even if the data was not
changed.
If you have a field that cannot be updated, you may receive
an error when the update fails. For example, if your recordset contains a SQL
Server TIMESTAMP column, you may see the following error:
Can't update a TIMESTAMP column.
The RFX_Binary()
function is incorrectly casting the BYTE* data member of the CByteArray to a
CByteArray*. Because of this, the CByteArray data always appears to have been
changed since the last update. In the DoFieldExchange() of your recordset
class, replace calls to RFX_Binary() with calls to the with RFX_Binary_Fix()
function.
The
following files are available for download from the Microsoft Download
Center:
Rfxbinfx.exe
For additional information about how
to download Microsoft Support files, click the following article number to view
the article in the Microsoft Knowledge Base:
119591 How to Obtain Microsoft Support Files from Online Services
Microsoft scanned this file for viruses. Microsoft used the most
current virus-detection software that was available on the date that the file
was posted. The file is stored on security-enhanced servers that help to
prevent any unauthorized changes to the file.
Microsoft has confirmed this to be a bug in the Microsoft
products listed at the beginning of this article. This bug was corrected in
Visual C++ version 5.0.
MORE INFORMATION
The RFX_Binary() function is called from within the
CRecordset DoFieldExchange() function to handle CByteArray data.
Once
you have downloaded Rfxbinfx.exe and run the .exe to extract the RFX_Binary_Fix
source code, include RFXBINFX.H in your recordset CPP file.
In your
implementation of the DoFieldExchange() function, change each call to
RFX_Binary to a call to the RFX_Binary_Fix function.
Additional query words: kbVC420bug kbDSupport IsFieldDirty SetFieldDirty
BLOB
Keywords: kbbug kbdatabase kbfile kbfix kbvc500fix KB160073