![]() |
|
|||||||
| Newsgroup microsoft.public.de.access Forum microsoft.public.de.access |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#11
|
|||
|
|||
|
Sten Schmidt wrote:
> schrieb 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. > 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 |
|
|
||||
|
||||
|
|
|
#12
|
|||
|
|||
|
Hallo Alfred,
"Alfred Nitzschke" wrote: > 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") |
|
|
|
|