Hallo,
Gerhard Förster wrote:
> [...]
> s1 = rs!act_DB
> s2 = Get_FilePath(s1) & "COMP1.MDE"
>
> anschließend wird das HFO geschlossen und die gelinkten Tabellen
> gelöscht:
> DoCmd.Close acForm, "A_FRM_Bill"
> TBL_DisConnect
Zeig mal diese Prozedur.
> dann folgt der Aufruf zum komprimieren und reparieren:
> if RepairDB (s1, s2)
>
> Leider landet der Aufruf zum Komprimieren immer im Fehlercode, dass
> die Datei nicht komprimiert werden kann.
> Führe ich die Funktion seperat aus, ohne dass die Frontent Anwendung
> gestartet wurde, funktioniert alles Bestens.
> Ich denke, dass liegt daran, das noch irgendwelche Objekte offen sind,
> obwohl Verbindung zu den gelinkten Tabellen gelöscht und auch das
> Hauptformular geschlossen wurde.
>
> Wie kann ich erreichen, dass alle störenden Objekte / Referenzen /
> Links geschlossen werden, so dass das Komprimieren funktioniert.
Fuer die Objekte hast du ja schon Loesungen bekommen. Fuer die Referenzen
bist du selbst verantwortlich. Also immer darauf achten, dass Recordsets
geschlossen und Referenzen vernichtet werden.
Falls du damit nicht weiterkommen solltest, gaebe es noch einen Workaround:
- Compact/Repair-Funktion in andere mdb auslagern.
- Vor Application.Quit per z.B. FollowHyperlink die andere mdb aufrufen und
die beiden Dateinamen mitgeben.
Vor dem Aufruf von Repair_DB solltest du einen Sleep 2000 oder so einbauen,
um dem Frontend 2 sec Zeit zu geben, sich zu schliessen und damit die ldb
freizugeben.
Gruss - Peter
--
Mitglied im
http://www.dbdev.org
FAQ:
http://www.donkarl.com