Announcement

Collapse
No announcement yet.

Access2k DB reparieren und komprimieren aus BCB5

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Access2k DB reparieren und komprimieren aus BCB5

    Hallo erstmal,

    wer kann mir sagen wie ich bei MS-Access 2000 von BCB5 aus das
    reparieren und komprimieren anstosse ?

  • #2
    HI,

    Das alles ist ja kein Problem importiere als erstes unter Projekt, Typenbibliothek importieren die ' MICROSOFT JetEngine and Replication ...... ). Jetzt hast du im Programm das File JRO_TLB.cpp.

    <b>nun erfolgt der Aufruf der COM-Funktion:</b>

    // Close Connection !
    ADOConnection1->Connected = false;

    // Var Values
    AnsiString strDatabase_Old;
    AnsiString strDatabase_New;
    AnsiString strDeleteSource;
    AnsiString strOldFile;
    AnsiString strNewFile;

    strDatabase_Old = "Data Source= DB_NAME";
    strDatabase_Old += ".mdb;Jet OLEDBatabase Password=";

    strDatabase_New = "Data Source=" DB_NAME;
    strDatabase_New += "_tmp.mdb;Jet OLEDBatabase Password=";

    strDeleteSource = DB_NAME ".mdb";

    strOldFile = DB_NAME;
    strOldFile += "_tmp.mdb";

    strNewFile = strDeleteSource;

    // COM Handle
    WideString strSource( strDatabase_Old );
    WideString strDest ( strDatabase_New );

    unsigned int nComError;
    bool bComError = false;
    TCOMIJetEngine *pXX = new TCOMIJetEngine();

    nComError = pXX->CreateInstance( CLSID_JetEngine );
    if( nComError == S_OK )
    {
    nComError = pXX->CompactDatabase( strSource, strDest );
    pXX->Release();
    }
    if( nComError != S_OK )
    {
    unsigned int x = pXX->CompactDatabase( strSource, strDest );

    ShowMessage( "Reorganisation: Die Datenbank meldet den Fehlercode " + AnsiString( x ) );
    bComError = true;
    }
    delete pXX;
    if ( bComError ) return;

    // Delete old file and rename reorganized file
    bool bResult = false;
    try
    {
    DeleteFile( strDeleteSource );
    RenameFile( strOldFile , strNewFile );
    bResult = true;
    }
    catch(const Exception &e)
    {
    ShowMessage("Fehler bei Reorganisation!");
    }

    // try to open Connection again!
    try
    {
    ADOConnection1->Connected = true;
    }
    catch(Exception &e)
    {
    ShowADOMessage( e.Message );
    return;
    }
    if ( bResult )
    {
    ShowMessage("Die Reorganisation der Datenbank wurde erfolgreich abgeschlossen!");

    Comment


    • #3
      HI,

      Das alles ist ja kein Problem importiere als erstes unter Projekt, Typenbibliothek importieren die ' MICROSOFT JetEngine and Replication ...... ). Jetzt hast du im Programm das File JRO_TLB.cpp.

      <b>Als erstes solltest du noch wissen das Acces bei der Reogansisation nicht anderes macht als Daten umzukopieren !!!!</b>

      <b>nun erfolgt der Aufruf der COM-Funktion:</b>

      // Close Connection ! <br>
      ADOConnection1->Connected = false;<br>

      // Var Values<br>

      AnsiString strDatabase_Old;<br>
      AnsiString strDatabase_New;<br>
      AnsiString strDeleteSource;<br>
      AnsiString strOldFile;<br>
      AnsiString strNewFile;<br>

      strDatabase_Old = "Data Source= DB_NAME";<br>
      strDatabase_Old += ".mdb;Jet OLEDBatabase Password=";<br>

      strDatabase_New = "Data Source=" DB_NAME;<br>
      strDatabase_New += "_tmp.mdb;Jet OLEDBatabase Password=";<br>

      strDeleteSource = DB_NAME ".mdb";<br>

      strOldFile = DB_NAME;<br>
      strOldFile += "_tmp.mdb";<br>

      strNewFile = strDeleteSource;<br>

      <b> // COM Handle </b>
      WideString strSource( strDatabase_Old );<br>
      WideString strDest ( strDatabase_New );<br>
      unsigned int nComError;<br>
      bool bComError = false;<br>
      TCOMIJetEngine *pXX = new TCOMIJetEngine();<br>
      nComError = pXX->CreateInstance( CLSID_JetEngine );<br>
      if( nComError == S_OK )<br>
      {<br>
      nComError = pXX->CompactDatabase( strSource, strDest );<br>
      pXX->Release();<br>
      }<br>
      if( nComError != S_OK )<br>
      {<br>
      unsigned int x = pXX->CompactDatabase( strSource,strDest );<br>

      ShowMessage( "Reorganisation: Die Datenbank meldet den Fehlercode " + AnsiString( x ) );<br>
      bComError = true;<br>
      }<br>
      delete pXX;<br>
      if ( bComError ) return;<br>

      // Delete old file and rename reorganized file<br>

      bool bResult = false;<br>

      try<br>
      {<br>
      DeleteFile( strDeleteSource );<br>
      RenameFile( strOldFile , strNewFile );<br>
      bResult = true;<br>
      }<br>
      catch(const Exception &e)<br>
      {<br>
      ShowMessage("Fehler bei Reorganisation!");<br>
      }<br>

      // try to open Connection again!<br>
      try<br>
      {<br>
      ADOConnection1->Connected = true;<br>
      } <br>
      catch(Exception &e)<br>
      {<br>
      ShowADOMessage( e.Message );<br><br>
      <br>

      return;<br>

      }<br>

      if ( bResult )<br>

      {<br>

      ShowMessage("Die Reorganisation der Datenbank wurde erfolgreich abgeschlossen!");<br>

      }<br>

      <b>Solltest du noch immer Fehler haben kontaktiere mich unter [email protected] ciao und Viel Glück</b&gt

      Comment

      Working...
      X