DAO error 3028 may occur when you try to create a workspace DAO object in Visual C++ (146876)
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 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
- The DAO SDK, 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 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 Q146876 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.
Modification Type: | Major | Last Reviewed: | 6/2/2005 |
---|
Keywords: | kbtshoot kberrmsg kbcode kbDatabase kbprb KB146876 kbAudDeveloper |
---|
|