DOCUMENT:Q194678 07-MAY-2001 [visualc] TITLE :HOWTO: SQL Server Identity, OLE DB Templates and OLE DB for ODBC PRODUCT :Microsoft C Compiler PROD/VER:WINDOWS:2.5; winnt:6.0 OPER/SYS: KEYWORDS:kbDatabase kbODBC kbProvider kbVC600 kbATL300 kbConsumer kbGrpDSVCDB kbDSupport kbMDAC2 ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual C++, 32-bit Enterprise Edition, version 6.0 - Microsoft Visual C++, 32-bit Professional Edition, version 6.0 - Microsoft Visual C++, 32-bit Learning Edition, version 6.0 - Microsoft Data Access Components version 2.5 ------------------------------------------------------------------------------- SUMMARY ======= When using the OLE DB Templates with a SQL Server database, it is often necessary to add records to a table that contains an identity column. Getting an identity column to increment properly with the OLE DB for ODBC provider that ships with Visual C++ 6.0, Msdasql.dll, requires that the COLUMN_ENTRY_STATUS macro be used. MORE INFORMATION ================ The following sample code demonstrates how to use this macro when defining an accessor map with Visual C++ 6.0 OLE DB Consumer Templates: Sample Code ----------- class CMyTableAccessor { public: LONG m_id; // This is an identity column DWORD m_id_status; // Status variable for id column TCHAR m_name[11]; BEGIN_COLUMN_MAP(CMyTableAccessor) COLUMN_ENTRY_STATUS(1, m_id, m_id_status) COLUMN_ENTRY(2, m_name) END_COLUMN_MAP() ... }; The code to add a new record to the table would resemble the following: CMyTable rs; rs.Open(); rs.ClearRecord(); //Null out current structure strcpy(rs.m_name , "New Name"); rs.m_id_status = DBSTATUS_S_IGNORE; //Tells the provider to ignore this // column when updating. rs.Insert(); // Insert new record into the table letting server update // of the identity column. rs.Close(); REFERENCES ========== Please see the following topics in MSDN online documentation: - VC++ documentation for COLUMN_ENTRY_STATUS - OLE DB Topic titled "Status" defines "DBSTATUS_S_IGNORE" Additional query words: ====================================================================== Keywords : kbDatabase kbODBC kbProvider kbVC600 kbATL300 kbConsumer kbGrpDSVCDB kbDSupport kbMDAC250 Technology : kbVCsearch kbAudDeveloper kbMDACSearch kbMDAC250 kbVC600 kbVC32bitSearch Version : WINDOWS:2.5; winnt:6.0 Issue type : kbhowto ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.