PDA

Vollständige Version anzeigen : Datenbank komprimieren durch Code


Dietmar Berg
10.01.2001, 09:36
Hallo!

folgendes problem: bei einer anwendung soll daas beenden nur durch eine programmierte schaltfläche möglich sein. dabei soll dann u.a. als (vorletzter schritt) die entsprechende datenbank komprimiert werden.

der befehl "compress database" macht das aber nur mit einer geschlossenen datenbank, also muss ich das ding vorher schliessen.

docmd.quit führt dazu dass access sofort insgesamt beendet wird (dann ist feierabend)
und docmd.close schliesst nur das aktive formular aber nicht die datenbank.

lösung????

es dankt im voraus

dietmar berg

Rom
10.01.2001, 11:35
Hallo Dietmar,
probier mal folgendes:

DBEngine.RepairDatabase "DeineDB"
DBEngine.CompactDatabase "DeineDB", "DeineZielDB", dbLangKorean

Habe es allerdings noch nicht bei einer geöffneten DB versucht!

Olaf Meuther
10.01.2001, 11:36
vor den Befehl Docmd.quit folgenden Befehl setzen

sendkeys "%xdk" ;Komprimiert Datenbank

Mallorca
10.01.2001, 11:58
Wenn die Datenbank geöffnet ist,geht es auch so. Aber Du musst vorher alle Formulare schliessen!

Public Function CompactDatabase(dateiname As String) As Boolean
On Error GoTo Err_CompDatabase

Dim Mldg As String
Dim n$, v$, e$

CompactDatabase = False
DoCmd.Hourglass True
filesplit dateiname, v, n, e
DBEngine.CompactDatabase dateiname, v & n & ".$$$"
Kill dateiname
Name v & n & ".$$$" As dateiname
'MsgBox "Compact of database with success!", 64, "Information"
DoCmd.Hourglass False

CompactDatabase = True 'Ok zurückmelden

EXIT_CompDatabase:
Exit Function

Err_CompDatabase:
Mldg = "Error at function/Fehler in Funktion:" & vbcrlf
Mldg = Mldg & "'CompactDatabase' at/in 'z_Functions'"
MsgBox Mldg
MsgBox Err.DESCRIPTION, 16, "Problem"
DoCmd.Hourglass False
Resume EXIT_CompDatabase

End Function

Gruss Mallorca

hanez
11.01.2001, 16:05
hey mallorca,

deine lösung ist ganz gut, aber hast du auch ein codebeispiel in dem automatisch der pfad zur datenbank mit ermittelt wird und dann die geöffnete datenbank mit den vorher ermittelten pfadangaben komprimiert wird.

ich möchte diesen vorgang nämlich bei jedem mal beenden der datenbank ausführen.

die mdb liegt auf jedem rechner woanders und soll pfadunabhägig sein.

gruß
hanez

Topias
24.01.2001, 10:34
Mit
CloseCurrentDatabase
lässt sich die aktuelle Datenbank schließen, danach einfach wie oben beschrieben komprimieren

Bob
08.02.2001, 16:17
Hi zusammen,
kann ich damit wirklich die DB, in der gerade meine VBA Routinen laufen, komprimieren oder nur eine andere mdb?

Konkret:
- ich starte eine Access Applikation die Daten von anderen Applikationen abholt (importiert)
- Nachts soll sich diese mdb selbständig komprimieren

Irgentwie bekomme ich das nicht hin :-(

In der Hoffnung auf eine Lösung,
Bob