PDA

Vollständige Version anzeigen : Neustart nach Komprimierung


hausdrachen
18.07.2005, 07:12
Hallo,

die Datenbank soll nach dem komprimieren nicht mehr starten. Ich habe hier im Forum gelesen das man in den Optionen im Register Allgemein was einstellen kann. Doch irgendwie finde ich da nicht in Access'97. Gibt es den Punkt da noch nicht, oder liegt er woanders. Kann mir jemand da einen Tipp geben?

Gruß
Sonie

J_Eilers
18.07.2005, 07:17
Hi,

AFAIK ist das Komprimieren beim Schliessen erst ab A2K möglich. :(

Andre.Heisig
18.07.2005, 07:19
die Datenbank soll nach dem komprimieren nicht mehr starten

es gibt ab access 2000 die option "datenbanken beim schliessen (immer) zu komprimieren". dann startet die DB auch nicht mehr, weil ja nach dem schliessen. analoges gibts meines wissens in access 97 noch nicht.

wenn du die DB nur komprimieren willst, kannst du
a) access öffnen, und per menü (in access 2000) extras => datenbank komprimieren und reparieren eine DB auswählen, die dann nur komprimiert, nicht danach gestartet wird,
b) hier schwirrte mal ein tool rum, welches das kontext-menu des explorer-rechtsklicks um /komprimieren und /decompilieren erweitert hat. bei interesse nochmal melden, ich hab das teil glaube ich sogar irgendwo.


andre.

hausdrachen
18.07.2005, 09:33
@Jan schade. :(

@andre
in Access '97 sind es zwei verschiedene Punkte mit dem Komprimieren und das mit dem reparieren.
Das mit dem Kontext-Menü ist zwar OK, aber für die User nicht zumutbar.


zusätzlich läuft die DB nur in der Runtime-Version bei den Usern. Ich denke ich muss zu meiner Symbolleiste noch den Punkt komrimieren hinzufügen und den Sendkey anwenden. Kann man dann dort einbauen das er nicht nochmal die DB aufmacht?

Gruß
Sonie

Andre.Heisig
18.07.2005, 10:40
das sind natürlich etwas andere "rahmenbedingungen". dann vielleicht plan C:) "automatisches komprimieren bei überschreiten von schwellwert"

funktioniert unter access 2000, unter 97 kann ich's nicht testen. kann gut sein, dass es die autokompakt dort auch (intern) nicht gibt ... schau mal einfach ... ich hab hinter dem application-exit-button den aufruf folgender funktion:

'**************** Code Start **************
' FUNKTION: Setzt Automatisches Komprimieren = EIN bei Erreichen von Schwellwert in MB
Public Sub DatenbankKomprimieren(maxMegaByte As Double)
On Error GoTo Err_DatenbankKomprimieren

If FileLen(CurrentDb.Name) > maxMegaByte * 1024 * 1024 Then
Application.SetOption ("Auto Compact"), 1
Else
Application.SetOption ("Auto Compact"), 0
End If

Exit_DatenbankKomprimieren:
Exit Sub

Err_DatenbankKomprimieren:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_DatenbankKomprimieren
End Sub
'**************** Code End **************


ich hätte allerdings keine idee, wie man AutoCompact access-seitig simuliert, wenn in ac97 nicht vorhanden. dann müssen die echten cracks hier ran ;)

Anne Berg
18.07.2005, 11:22
Für A97 (ff!) hätte ich folgende Lösung anzubieten:

Prüfung der Dateigröße beim Beenden der Anwendung (Voraussetzung: kontrolliertes Schließen mihilfe eines "hidden Forms", s. Access-FAQ 1.12)

Aufruf eines Hilfstools (Access-Anwendung) zur Komprimierung mit Übergabe des aktuellen Zugriffspfades per /cmd (s. Access-FAQ 6.7)

Nachtrag:
Habe anfangs auch mit Send-Keys experimentiert, habe es aber nicht hinbekommen (wahrscheinlich wg. Runtime) und außerdem ist davon grundsätzlich eher abzuraten :(

hausdrachen
18.07.2005, 14:14
danke für eure Tipps :mrcool:
Ich werde mich morgen daran versuchen. Wenn ich da noch ein oder zwei Problemchen haben, werde ich mich nochmal melden... :D

Gruß
Sonie

Nouba
18.07.2005, 14:43
Beim Kompaktieren der Datenbank aus Access heraus finden ja mehrere Schritte statt. Die Datenbank wird unter einem anderen Namen kompaktiert. Bei Erfolg wird die alte DB gelöscht und die neue wird umbenannt.

Mittels einer anderen DB kannst Du dieses selbst durchführen, wobei Du die notwendigen Rechte brauchst, falls eine Arbeitsgruppe die DB absichert.

DBEngine.CompactDatabase olddb, newdb [,locale [,options[,password]]]

Am Ende des Prozederes wäre dann ein Löschen von olddb notwendig und newdb wäre in olddb umzubenennen.

Anne Berg
18.07.2005, 14:54
... so wie es denn auch bei Donkarl in FAQ 6.7 beschrieben ist! ;)

hausdrachen
19.07.2005, 07:03
@andre
diesen "Auto Compact" geht auch nicht in Access '97, habe ich getestet. :(

@anne
den FAQ 6.7 habe ich durchgelesen. Doch wo packe ich den VB-Code hin? muss ich eine Hilfs-Datenbank haben wo ich den VB-Code aufrufe? Irgendwie verstehe ich das nicht. Oder erstelle ich die sogenannte "Dummy.mdb"? :confused:

Anne Berg
19.07.2005, 07:17
"Dummy-DB" würde ich es nicht nennen! ;) Im Grunde habe ich schon alles gesagt: du brauchst eine Mini-Anwendung, die den Code enthält. Du startest sie aus der Hauptanwendung heraus, wenn du beschlossen hast, dass sie komprimiert werden soll und übergibst dabei den Zugriffspfad über die Befehlsoptionen. Im Autoexec-Makro des Kompress-Tools kannst du den Code starten, und zwar mit Übergabe des Parameters ("Befehl").

Anne Berg
19.07.2005, 08:13
Es lohnt sich auch, mal hier im Forum nach Lösungen zu suchen: das Thema wurde eben erst behandelt!
http://www.ms-office-forum.net/forum/showpost.php?p=596459&postcount=2

hausdrachen
19.07.2005, 12:30
@anne
danke erst einmal für deine Tipps; ich hatte schon gesucht doch ich kam nicht mit der compactor.zip nicht klar. :depressed Ich weiss leider noch nicht was das mit dem Addin aufsich hat :weinen: Kenn mich darüber leider noch nicht aus.