Mit nachfolgender Funktion wird unter MS-Access die aktuelle Datenbank nach dem Entladen des "Begrüßungsfensters" autom. komprimiert, falls notwendig. Public Function KomprimierenWennZuGross() ' *************************************************************************** ' Diese Funktion aktiviert die Option - "Extras - Optionen - Allgemein - ' Beim Schliessen komprimieren" ' ' Hierzu muss eine extra Tabelle "Tab_BankGroesse" mit dem Feld "Bankgroesse" ' (Zahl) erstellt werden. ' *************************************************************************** ' Maximal erlaubte Differenz in MB: 1.0 MB ' "Nicht komprimiert - komprimiert" Const M_DIFF = 1 ' Maximale Programmstarts, bis (zwangs-)komprimiert wird Const M_COUNT = 12 ' entspricht Option "Beim Schliessen komprimieren" Const OPT_M = "Auto Compact" ' Aktuell gespeicherte Min- und Max-Einträge in der Tabelle Dim MAX_E, MIN_E On Error GoTo ErrHandler Dim oRs As Recordset Dim sSQL As String sSQL = "SELECT BankGroesse FROM Tab_BankGroesse ORDER BY BankGroesse" Set oRs = CurrentDb.OpenRecordset(sSQL, dbOpenDynaset) If oRs.RecordCount = 0 Then oRs.AddNew oRs![BankGroesse] = 0 oRs.Update Application.SetOption OPT_M, -1 End If MAX_E = Format(DMax("[BankGroesse]", "Tab_BankGroesse") / 1024 / 1024, "0.00") MIN_E = Format(DMin("[BankGroesse]", "Tab_BankGroesse") / 1024 / 1024, "0.00") ' beim letzten Schliessen wurde komprimiert If Application.GetOption(OPT_M) = -1 Then ' auf den ersten Satz ! oRs.MoveFirst If Not oRs![BankGroesse] = 0 Then MIN_E = Format(FileLen(CurrentDb.Name) / 1024 / 1024, "0.00") MsgBox "Letze Komprimierung von " & MAX_E & " MB auf " & MIN_E & " MB" End If oRs.Edit Do Until oRs.EOF oRs.Delete oRs.MoveNext Loop oRs.AddNew oRs![BankGroesse] = FileLen(CurrentDb.Name) oRs.Update ' Option wieder deaktivieren! Application.SetOption OPT_M, 0 Else oRs.AddNew oRs![BankGroesse] = FileLen(CurrentDb.Name) oRs.Update ' jetzige Groesse (neuester Wert) mit beruecksichtigen MAX_E = Format(DMax("[BankGroesse]", "Tab_BankGroesse") / 1024 / 1024, "0.00") MIN_E = Format(DMin("[BankGroesse]", "Tab_BankGroesse") / 1024 / 1024, "0.00") If (MAX_E - MIN_E > M_DIFF) Or (DCount("[BankGroesse]", "Tab_BankGroesse") > M_COUNT) Then ' Option aktivieren, beim nächsten Schliessen komprimieren ! Application.SetOption OPT_M, -1 End If End If oRs.Close Set oRs = Nothing Exit Function ErrHandler: MsgBox Err.Number & " " & Err.Description End Function Dieser Tipp wurde bereits 24.945 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevAniGif (VB/VBA) ![]() Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Tipp des Monats Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |