Hi Leute..
hab mal wieder ne Frage an Euch :
ich habs soweit mal geschafft, meine AccessDB bei Programmstart zu komprimieren.
Dazu benutze ich folgenden Code :
Delphi-Quellcode:
function DatabaseCompact(
const sdbName: WideString) : boolean;
var JE : TJetEngine;
//Jet Engine
sdbTemp : WideString;
//TEMP database
sdbTempConn : WideString;
//Connection string
const
SProvider = '
Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=xxx; Data Source=';
begin
Result:=False;
sdbTemp := ExtractFileDir(sdbName) +
'
TEMP' +
ExtractFileName(sdbName);
sdbTempConn := SProvider + sdbtemp;
if FileExists(sdbTemp)
then
DeleteFile(sdbTemp);
JE:= TJetEngine.Create(Application);
try
try
JE.CompactDatabase(SProvider + sdbName, sdbTempConn);
DeleteFile(sdbName);
RenameFile(sdbTemp, sdbName);
except
on E:
Exception do
ShowMessage(E.
Message);
end;
finally
JE.FreeOnRelease;
Result:=True;
end;
end;
Nun habe ich aber das Problem, dass wenn ich das Prog mehrmals starten will, ich ne Fehlermeldung bekomme, von wegen
DB sei noch exclusiv gesperrt.
Und das passiert nur wenn ich die
DB beim Progstart komprimiere.
Kann ich irgendwie per Code übergeben, dass der Zugriff nach dem komprimieren wieder für alle freigegeben ist? Und wen nja, wo stelle ich das ein bzw. wie gebe ich das an die
DB weiter ?
Sowas wie "exclusive := false;" finde ich nicht :/
Kann mir da jmd helfen ?
Vielen Dank schonmal.
MFG
Carsten