Article: Q146876
Product(s): Microsoft C Compiler
Version(s): 4.0 4.1 4.2 5.0 6.0
Operating System(s):
Keyword(s): kbcode kbDAOsearch kbDatabase kbMFC kbVC kbVC400 kbVC410 kbVC420 kbVC500 kbVC600
Last Modified: 30-JUL-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- The Microsoft Foundation Classes (MFC), included with:
- Microsoft Visual C++, 32-bit Editions, version 4.0
- 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
- The DAO SDK, 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 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
-------------------------------------------------------------------------------
SYMPTOMS
========
The following DAO error 3028 may occur when you try to create a workspace DAO
object:
Can't start application. The system database is missing or opened
exclusively by another user.
CAUSE
=====
This error can occur if you have failed to specify a system database or have
assigned the system database after performing operations with the database
engine.
RESOLUTION
==========
It is important that the SystemDB property of the database engine be set prior
to performing any operations with the database engine. If you are using the
dbDAO C++ classes included with the DAO SDK, you can set the system database by
using code similar to this code:
// get database engine object but don't fill its collections
CdbDBEngine eng(FALSE, FALSE);
// set the system database
eng.SetSystemDB(_T("d:\\work\\sectest.mdw"));
// Finish initializing the engine object
eng.Start();
CdbWorkspace wsp;
// The following function call will generate the 3028
// error if a System Database hasn't been assigned or if the
// second argument of the constructor for CdbDBEngine didn't
// receive FALSE.
wsp= eng.CreateWorkspace(_T("Test"),_T("MyUserName"),
_T("MyPassword"));
Or, alternately, use the CdbDBEngine::SetInitPath() method before opening or
creating a CdbWorkspace object.
If you are using the MFC DAO classes, use code similar to this code:
//Initialize global MFC DAO engine
AfxDaoInit( );
DAODBEngine* pDBEngine = AfxDaoGetEngine( );
// Set up system database
COleVariant var( _T("d:\\work\\sectest.mdw"), VT_BSTRT );
// NOTE: put_SystemDB was a late addition to DAO
// and is not yet wrapped by MFC
DAO_CHECK( pDBEngine->put_SystemDB( var.bstrVal ) );
CDaoWorkspace wsp;
wsp.Create(_T("Test"),_T("MyUserName"), _T("MyPassword"));
Or, alternately, use the CDaoWorkspace::SetInitPath() method before opening or
creating a CDaoWorkspace object.
STATUS
======
This behavior is by design.
======================================================================
Keywords : kbcode kbDAOsearch kbDatabase kbMFC kbVC kbVC400 kbVC410 kbVC420 kbVC500 kbVC600
Technology : kbAudDeveloper kbMFC
Version : 4.0 4.1 4.2 5.0 6.0
Issue type : kbprb
=============================================================================