How to change the Name property of a Microsoft Access field in Visual C++ (152688)



The information in this article applies to:

  • The Microsoft Foundation Classes (MFC), when used with:
    • Microsoft Visual C++, 32-bit Editions 4.0
    • Microsoft Visual C++, 32-bit Editions 4.1
    • Microsoft Visual C++, 32-bit Enterprise Edition 4.2
    • Microsoft Visual C++, 32-bit Professional Edition 4.2
    • Microsoft Visual C++, 32-bit Enterprise Edition 4.2b
    • Microsoft Visual C++, 32-bit Professional Edition 4.2b
    • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
    • Microsoft Visual C++, 32-bit Professional Edition 5.0
    • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
    • Microsoft Visual C++, 32-bit Professional Edition 6.0
    • Microsoft Visual C++, 32-bit Learning Edition 6.0

This article was previously published under Q152688

SUMMARY

The MFC DAO classes do not provide a programmatic way to change the name of a Microsoft Access field. The example code in this article changes a field's Name property by directly calling DAO using the m_pDAOFields data member of CDaoTableDef.

MORE INFORMATION

Sample Code


   /////////////////////////////////////////////////////////////////// 
   // CTabDef - class definition

   class CTabDef : public CDaoTableDef
   {
   public:
       CTabDef( CDaoDatabase* pDB) : CDaoTableDef( pDB )
       { }

       ~CTabDef() {}

       void ChangeFieldProperty(LPCTSTR szOldName, LPCTSTR szNewName);
   };

   ///////////////////////////////////////////////////////////////// 
   // CTabDef - implementation
   void CTabDef::ChangeFieldProperty( LPCTSTR szOld, LPCTSTR szNew )
   {
     // To be used as an "in" param to get_Item
     DAOField* pDAOField = NULL;

     if (m_pDAOFields == NULL)
          InitFieldsCollection();

       // Enumerate the fields collection and find the field.
       // Then replace the name property with the new string.
       try
       {
       DAO_CHECK( m_pDAOFields->get_Item(
                  COleVariant(szOld, VT_BSTRT), &pDAOField ) );

         DAO_CHECK( pDAOField->put_Name(
                  COleVariant(szNew, VT_BSTRT).bstrVal ) );
       }
       catch( CDaoException* e )
       {
           AfxMessageBox( e->m_pErrorInfo->m_strDescription );
           goto term;
       }
       catch(...)
       {
           AfxMessageBox( _T( "unknown exception" ) );
           goto term;
       }

       term:
       if( pDAOField )
           pDAOField->Release();
   }
				

Modification Type:MajorLast Reviewed:5/31/2005
Keywords:kbinfo kbcode kbDatabase kbhowto kbProgramming KB152688 kbAudDeveloper