Access Datenbank komprimieren und reparieren

  • Moin,

    ich möchte eine Access Datenbank mit Autoit

    nach der Application.CompactRepair-Methode (Access) komprimieren und reparieren.

    Könnt ihr mir helfen?

    Gruß


  • Hi,

    wieso machst du das nicht per VBA? Genau dafür gibts das...

  • Ja genau!

    Ich habe eine Datenbank die ich mit einer GUI per UDF Access.au3 bediene.

    Nach dem Löschen von Datensätzen, muss die Datenbank vor dem Hinzufügen neuer Datensätze aufgrund des Autowerts repariert werden.

    Das möchte ich natürlich auch per Autoit erledigen. Z.b nach dem Öffnen der Datenbank.

    Nur ich kann den VBA Code nicht umsetzen für Autoit.

    Dafür sollte eure Hilfe dienen.

    Gruß

  • Zwei mögliche Varianten:

    Erste Möglichkeit OHNE Autoit...

    Automatisches Komprimieren und Reparieren einer Datenbank beim Schließen

    Sie können die Datenbankoption Beim Schließen komprimieren auswählen, wenn eine Datenbank automatisch komprimiert und repariert werden soll, wenn diese geschlossen wird.

    Hinweis : Das Festlegen dieser Einstellung wirkt sich nur auf die Datenbank aus, die aktuell geöffnet ist. Sie müssen diese Option für jede Datenbank separat festlegen, die automatisch komprimiert und repariert werden soll.

    1. Klicken Sie auf der Registerkarte Datei auf Optionen.

    2. Klicken Sie im Dialogfeld Access-Optionen auf Aktuelle Datenbank.

    3. Aktivieren Sie unter Anwendungsoptionen das Kontrollkästchen Beim Schließen komprimieren.

    Zweite Möglichkeit quasi mit Autoit, nämlich mit Hilfe einer ShellExecute (ungetestet, nicht die von MS empfohlene Variante sondern die Kombi mit ShellExecute)...

    Geben Sie z. B. Folgendes ein: "C: \Programme\Microsoft Office\Office14\msaccess.exe"

    Geben Sie nach dem schließenden Anführungszeichen ein Leerzeichen ein, und geben Sie dann den vollständigen Pfad zu der Datenbank ein, die Sie komprimieren und reparieren möchten. Wenn der Pfad Leerzeichen enthält, schließen Sie den Pfad in Anführungszeichen ein. Geben Sie ein weiteres Leerzeichen ein, und geben Sie dann /compact ein.

    Geben Sie z. B. Folgendes ein: "C:\Mein Ordner\Meine Datenbank.accdb" /compact

  • So funktioniert es mit VBA und Autoit, z.B. für sieben Datenbanken....:)

    Spoiler anzeigen

    Dim $oAccess

    $oAccess = ObjCreate("Access.Application")

    For $zP = 1 To 7 Step +1

    $oAccess.CompactRepair(@ScriptDir & "\Daten" & $zP & ".mdb", @ScriptDir & "\Daten\CompactRepair\Daten" & $zP & ".mdb", False)

    FileMove(@ScriptDir & "\Daten\CompactRepair\Daten" & $zP & ".mdb", @ScriptDir & "\Daten" & $zP & ".mdb", 1)

    Next