KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q146876: PRB: DAO Error 3028 When Creating a DAO Workspace

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

=============================================================================

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 1986-2002.