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.