BCB 2009 und CompactDatabase



  • Hallo,

    ich ruf die Funktion (hier im Forum gefunden) CompactDatabase auf:
    CompactDatabase("abc.mdb", "");

    Im BCB 6 ging es so ohne Probleme, im BCB2009 krieg ich diese Meldung:
    Exception der Klasse EOleSysError mit der Meldung 'Ausnahmefehler aufgetreten'

    An der Stelle:

    Adoobj.OleProcedure("CompactDatabase",Provider1.c_str(),Provider2.c_str());
    

    Was kann ich da machen ? Danke für Hilfe !

    Die komplette Funktion:

    bool CompactDatabase(String f1,String psw)
    {
     try
     {
    	String Provider1="Provider=Microsoft.Jet.OLEDB.4.0"
    	";Data Source="+f1+
    	";Jet OLEDB:Database Password="+psw;
    	String Provider2="Provider=Microsoft.Jet.OLEDB.4.0"
    	";Data Source="+f1+".tmp"+
    	";Jet OLEDB:Database Password="+psw;
    	Variant Adoobj=Variant::CreateObject("JRO.JetEngine");
    	Adoobj.OleProcedure("CompactDatabase",Provider1.c_str(),Provider2.c_str());
    	DeleteFile(f1);
    	RenameFile(f1+".tmp",f1);
    	return true;
     }
     catch(...)
     {
    	return false;
     }
    }
    


  • könnte vielleicht am Typ 'String' liegen?!

    Im BCB6 war String ein AnsiString, im 2009'er ist es UnicodeString.

    Einfach String in AnsiString ändern und sehen, was passiert.

    grüssle 🙂



  • Leider bleibt das Problem bestehen 😞



  • BCBler schrieb:

    Im BCB 6 ging es so ohne Probleme, im BCB2009 krieg ich diese Meldung:
    Exception der Klasse EOleSysError mit der Meldung 'Ausnahmefehler aufgetreten'

    Hat sich nur die BCB-Version geändert, oder hat sich da evtl. noch was anderes geändert? (Wie z.B. Provider-Typ 4.0 -> 4.x)



  • Nein, es ist die gleiche Datenbank. Wir haben die Anwendung auf BCB2009 umgestellt, die DB ist die gleiche geblieben.


Log in to reply