Discussion:
Acc2007 komprimieren über VBA?
(zu alt für eine Antwort)
Alfred Nitzschke
2009-10-26 20:47:41 UTC
Permalink
Hallo,

zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code von DonKarl
6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es nicht
mehr. Klar, Acc7 hat ja auch keine Commandbars sondern Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?

Danke
Alfred
Sascha Trowitzsch
2009-10-26 21:20:33 UTC
Permalink
Hi Alfred,
Post by Alfred Nitzschke
Hallo,
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code von
DonKarl 6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es
nicht mehr. Klar, Acc7 hat ja auch keine Commandbars sondern
Ribbons... Hat jemand bereits eine funktionierende Lösung und verrät sie?
Keine Commandbars mehr?
Oha, es gibt genau soviele, ja mehr, als in A2003!
Nur sieht man sie nicht.

In A2007 heißt der Komprimiereintrag anders - es fehlen die Pünktchen:

CommandBars("Menu Bar"). _
Controls("Extras"). _
Controls("Datenbank-Dienstprogramme")._
Controls("Datenban&k komprimieren und reparieren"). _
accDoDefaultAction

Ciao, Sascha
Gunter Avenius
2009-10-27 08:14:46 UTC
Permalink
Hallo Alfred,
Post by Alfred Nitzschke
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code von DonKarl
6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es nicht
mehr. Klar, Acc7 hat ja auch keine Commandbars sondern Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?
alternativ zu Saschas Lösung:
http://www.accessribbon.de/index.php?FAQ:2
http://www.accessribbon.de/index.php?FAQ:1

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com

home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

12. Access-Entwickler-Konferenz (AEK)
Nürnberg 10./11.10.2009 und 31.10/1.11.2009
http://www.donkarl.com/?AEK
Karl Donaubauer
2009-10-27 09:25:59 UTC
Permalink
Hallo, Gunter!
Post by Gunter Avenius
Post by Alfred Nitzschke
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code
von DonKarl 6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es
nicht mehr. Klar, Acc7 hat ja auch keine Commandbars sondern
Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?
http://www.accessribbon.de/index.php?FAQ:2
http://www.accessribbon.de/index.php?FAQ:1
Das ist dann aber nur Schließen, oder?
Wie würde das komplett und genau für das Komprimieren lauten?
Ich frage in Hinblick auf die Ergänzung des FAQ-Artikels um deine
und Saschas Variante für A07.
--
Servus
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Anmeldung und Info zur
Access-Entwickler-Konferenz (AEK12), Oktober 2009, Nürnberg
Gunter Avenius
2009-10-27 10:04:08 UTC
Permalink
Hallo Karl,
Post by Karl Donaubauer
Post by Gunter Avenius
Post by Alfred Nitzschke
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code
von DonKarl 6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es
nicht mehr. Klar, Acc7 hat ja auch keine Commandbars sondern
Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?
http://www.accessribbon.de/index.php?FAQ:2
http://www.accessribbon.de/index.php?FAQ:1
Das ist dann aber nur Schließen, oder?
Wie würde das komplett und genau für das Komprimieren lauten?
Ich frage in Hinblick auf die Ergänzung des FAQ-Artikels um deine
und Saschas Variante für A07.
gerade getestet...
die richtige idMso wäre : "FileCompactAndRepairDatabase"....

aber tut nicht ;-)
Es erscheint eine Meldung das die geöffnete DB nicht komprimiert
werden kann über Code / Makro... und man solle über das Office Menü /
Datenbank verwalten / Komprimieren und reparieren gehen :-(


Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com

home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

12. Access-Entwickler-Konferenz (AEK)
Nürnberg 10./11.10.2009 und 31.10/1.11.2009
http://www.donkarl.com/?AEK
Sten Schmidt
2009-10-27 19:37:50 UTC
Permalink
Post by Gunter Avenius
Das ist dann aber nur Schließen, oder? Wie würde das komplett und genau
für das Komprimieren lauten? Ich frage in Hinblick auf die Ergänzung
des FAQ-Artikels um deine und Saschas Variante für A07.
gerade getestet...
die richtige idMso wäre : "FileCompactAndRepairDatabase"....
aber tut nicht ;-)
Es erscheint eine Meldung das die geöffnete DB nicht komprimiert werden
kann über Code / Makro... und man solle über das Office Menü / Datenbank
verwalten / Komprimieren und reparieren gehen :-(
Könnte es sein dass beim Weg über das Menü Access das File schließt,
komprimiert und dann wieder öffnet?

Für mich klingt es logisch, dass man das nicht per VBA auslösen kann...

MfG
Karl Donaubauer
2009-10-27 22:42:39 UTC
Permalink
Post by Sten Schmidt
Post by Gunter Avenius
...
gerade getestet...
die richtige idMso wäre : "FileCompactAndRepairDatabase"....
aber tut nicht ;-)
Es erscheint eine Meldung das die geöffnete DB nicht komprimiert
werden kann über Code / Makro... und man solle über das Office
Menü / Datenbank verwalten / Komprimieren und reparieren gehen :-(
Könnte es sein dass beim Weg über das Menü Access das File schließt,
komprimiert und dann wieder öffnet?
Klar.
Post by Sten Schmidt
Für mich klingt es logisch, dass man das nicht per VBA auslösen kann...
Joo, nur verhalten sich drei Access-Versionen (A00-A03) halt
so unlogisch, dass ebendieser Menüaufruf per VBA funktioniert.
s. www.donkarl.com?FAQ6.6
--
Servus
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Anmeldung und Info zur
Access-Entwickler-Konferenz (AEK12), Oktober 2009, Nürnberg
Karl Donaubauer
2009-10-27 10:05:56 UTC
Permalink
Post by Karl Donaubauer
Post by Gunter Avenius
Post by Alfred Nitzschke
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code
von DonKarl 6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es
nicht mehr. Klar, Acc7 hat ja auch keine Commandbars sondern
Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?
http://www.accessribbon.de/index.php?FAQ:2
http://www.accessribbon.de/index.php?FAQ:1
Das ist dann aber nur Schließen, oder?
Wie würde das komplett und genau für das Komprimieren lauten?
Ich frage in Hinblick auf die Ergänzung des FAQ-Artikels um deine
und Saschas Variante für A07.
Ähm, hatte vergessen, dass ich hier eh ein A07 auf einem der
Rechner habe (da sieht man, wie oft ich es verwenden ;-).
Habe also deinen Vorschlag getestet, aber mit

Application.CommandBars.ExecuteMso ("FileCompactAndRepairDatabase")

kommt nur die übliche Meldung:
"Sie können die geöffnete Datenbank nicht komprimieren, indem Sie
ein Makro oder Visual Basic-Code ausführen."

Ebenso bei Saschas Variante.

Es hat zwar mal einer von Erfolg per Sendkeys berichtet, aber nicht
einmal das konnte ich auf die Schnelle nachvollziehen, d.h. endete
auch mit der o.a. Meldung.

Vielleicht übersehe/missverstehe ich ja etwas.
Habt ihr eure Methoden erfolgreich getestet?
--
Servus
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Anmeldung und Info zur
Access-Entwickler-Konferenz (AEK12), Oktober 2009, Nürnberg
Gunter Avenius
2009-10-27 10:12:50 UTC
Permalink
Hallo Karl,
Post by Karl Donaubauer
Application.CommandBars.ExecuteMso ("FileCompactAndRepairDatabase")
"Sie können die geöffnete Datenbank nicht komprimieren, indem Sie
ein Makro oder Visual Basic-Code ausführen."
...
Post by Karl Donaubauer
Vielleicht übersehe/missverstehe ich ja etwas.
Habt ihr eure Methoden erfolgreich getestet?
Nö.
Da haben sich unsere Antworten überschnitten ;-)

Gruß
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com

home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

12. Access-Entwickler-Konferenz (AEK)
Nürnberg 10./11.10.2009 und 31.10/1.11.2009
http://www.donkarl.com/?AEK
Sascha Trowitzsch
2009-10-27 10:53:35 UTC
Permalink
Hi,
Post by Karl Donaubauer
Post by Karl Donaubauer
Post by Gunter Avenius
Post by Alfred Nitzschke
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code
von DonKarl 6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es
nicht mehr. Klar, Acc7 hat ja auch keine Commandbars sondern
Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?
http://www.accessribbon.de/index.php?FAQ:2
http://www.accessribbon.de/index.php?FAQ:1
Das ist dann aber nur Schließen, oder?
Wie würde das komplett und genau für das Komprimieren lauten?
Ich frage in Hinblick auf die Ergänzung des FAQ-Artikels um deine
und Saschas Variante für A07.
Ähm, hatte vergessen, dass ich hier eh ein A07 auf einem der
Rechner habe (da sieht man, wie oft ich es verwenden ;-).
Habe also deinen Vorschlag getestet, aber mit
Application.CommandBars.ExecuteMso ("FileCompactAndRepairDatabase")
"Sie können die geöffnete Datenbank nicht komprimieren, indem Sie
ein Makro oder Visual Basic-Code ausführen."
Ebenso bei Saschas Variante.
Es hat zwar mal einer von Erfolg per Sendkeys berichtet, aber nicht
einmal das konnte ich auf die Schnelle nachvollziehen, d.h. endete
auch mit der o.a. Meldung.
Vielleicht übersehe/missverstehe ich ja etwas.
Habt ihr eure Methoden erfolgreich getestet?
Nö, ich habe nur getestet, aber ohne Erfolg. ;-)
Mein Teil der Antwort bezog sich mehr auf die Richtigstellung, dass alle
Commandbars auch unter A2007 verfügbar seien.

Ich werde auch nichts weiter investieren, um rauszukriegen, wie es
vielleicht doch geht, weil ich keine Notwendigkeit sehe, eine DB zur
Laufzeit zu komprimieren:
Ich mache das von außen bei Start über eine Starter.exe und jeder andere
kann alternativ dazu eine Starter.mdb/accdb basteln.
Und wenn sich im Betrieb - innerhalb eines Tages - das Frontend so aufbläht,
dass es komprimert werden muss, dann stimmt eher was mit den Design nicht.

Ciao, Sascha
Alfred Nitzschke
2009-10-27 12:41:46 UTC
Permalink
Hallo und Danke an alle.

Es ist für mich nicht kriegsentscheidend, die DB während der Laufzeit zu
komprimieren.
Falls aber doch noch jemand eine Lösung findet, wird Donkarl sie sicher in
6.6 hinzufügen... - wenn der "Finder" es meldet.

Ciao
Alfred
Post by Karl Donaubauer
Post by Karl Donaubauer
Post by Gunter Avenius
Post by Alfred Nitzschke
zum Komprimieren meiner Access DB nutze ich bisher den VBA-Code
von DonKarl 6.6
Jetzt habe ich auf Access 2007 umgestellt - und da funktioniert es
nicht mehr. Klar, Acc7 hat ja auch keine Commandbars sondern
Ribbons...
Hat jemand bereits eine funktionierende Lösung und verrät sie?
http://www.accessribbon.de/index.php?FAQ:2
http://www.accessribbon.de/index.php?FAQ:1
Das ist dann aber nur Schließen, oder?
Wie würde das komplett und genau für das Komprimieren lauten?
Ich frage in Hinblick auf die Ergänzung des FAQ-Artikels um deine
und Saschas Variante für A07.
Ähm, hatte vergessen, dass ich hier eh ein A07 auf einem der
Rechner habe (da sieht man, wie oft ich es verwenden ;-).
Habe also deinen Vorschlag getestet, aber mit
Application.CommandBars.ExecuteMso ("FileCompactAndRepairDatabase")
"Sie können die geöffnete Datenbank nicht komprimieren, indem Sie
ein Makro oder Visual Basic-Code ausführen."
Ebenso bei Saschas Variante.
Es hat zwar mal einer von Erfolg per Sendkeys berichtet, aber nicht
einmal das konnte ich auf die Schnelle nachvollziehen, d.h. endete
auch mit der o.a. Meldung.
Vielleicht übersehe/missverstehe ich ja etwas.
Habt ihr eure Methoden erfolgreich getestet?
--
Servus
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com + Anmeldung und Info zur
Access-Entwickler-Konferenz (AEK12), Oktober 2009, Nürnberg
Björn Benatzky
2009-10-28 09:04:05 UTC
Permalink
Hallo Alfred,
Post by Alfred Nitzschke
Hallo und Danke an alle.
Es ist für mich nicht kriegsentscheidend, die DB während der Laufzeit zu
komprimieren.
Falls aber doch noch jemand eine Lösung findet, wird Donkarl sie sicher in
6.6 hinzufügen... - wenn der "Finder" es meldet.
Ciao
Alfred
Ich wollte das einmal für meine eigene DB (A03) realisieren und habe es nur
über eine weitere DB geschafft:

**** Neue DB erstellen und vorgefertigtes Formular zum Komprimieren der DB
transferieren ***

Dim NewDatabase As Database
Dim prop As Property
Dim Compactor As String

Compactor = Left(CurrentDb.Name, Len(CurrentDb.Name) - 4) & "Compactor.mdb"
Set NewDatabase = DBEngine.Workspaces(0).CreateDatabase(Compactor,
dbLangGeneral)
DoCmd.CopyObject Compactor, , acForm, "frmCompactDB"
Set prop = NewDatabase.CreateProperty("StartupForm", dbText, "frmCompactDB")
NewDatabase.Properties.Append prop

**** Datenbankpfad wird in die neue DB übertragen ***

Dim NewTable As TableDef
Dim Field1 As Field
Dim Entity As Recordset

Set NewTable = NewDatabase.CreateTableDef("tblTab1")
Set Field1 = NewTable.CreateField("Datenbankpfad", dbText, 255)
NewTable.Fields.Append Field1
NewDatabase.TableDefs.Append NewTableSet Entity =
NewDatabase.OpenRecordset("tblTab1")
Entity.AddNew
Entity.Fields("Datenbankpfad").Value = CurrentDb.Name
Entity.Update
NewDatabase.Close

**** Aufruf der neuen DB ***

Dim AccessApplication As Object

Set AccessApplication = CreateObject("Access.Application")
AccessApplication.OpenCurrentDatabase (Compactor)
DoCmd.Quit acQuitSaveAll

**** Über Timer im aufgerufenen Formular ***

Dim sDatabase As String
Dim sDummyDB As Variant
Dim db As DAO.Database

sDatabase = DLookup("Datenbankpfad", "tblTab1")
sDummyDB = CurrentProject.Path & "\Dummy.mdb"
DBEngine.CompactDatabase sDatabase, sDummyDB

Kill DLookup("Datenbankpfad", "tblTab1")
Name sDummyDB As DLookup("Datenbankpfad", "tblTab1")

Loading...