Article: Q152688
Product(s): Microsoft C Compiler
Version(s): 4.0 4.1 4.2 4.2b 5.0 6.0
Operating System(s):
Keyword(s): kbcode kbProgramming kbDAOsearch kbDatabase kbMFC kbVC kbVC400 kbVC410 kbVC420 kbVC500
Last Modified: 04-AUG-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), included with:
- Microsoft Visual C++, 32-bit Editions, versions 4.0, 4.1
- Microsoft Visual C++, 32-bit Enterprise Edition, version 4.2
- Microsoft Visual C++, 32-bit Professional Edition, version 4.2
- Microsoft Visual C++, 32-bit Enterprise Edition, version 4.2b
- Microsoft Visual C++, 32-bit Professional Edition, version 4.2b
- Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0
- Microsoft Visual C++, 32-bit Professional Edition, version 5.0
- 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
-------------------------------------------------------------------------------
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();
}
======================================================================
Keywords : kbcode kbProgramming kbDAOsearch kbDatabase kbMFC kbVC kbVC400 kbVC410 kbVC420 kbVC500 kbVC600
Technology : kbAudDeveloper kbMFC
Version : 4.0 4.1 4.2 4.2b 5.0 6.0
Issue type : kbhowto
=============================================================================