Access-Datenbank wird immer größer

07/03/2009 - 11:10 von Thomas Hoffmann | Report spam
Tag,
ich habe eine Datenbank, in die ich wiederholt größere Dateien einlese, bearbeite, am Ende
des Programmes aber auch wieder aus der Tabelle lösche. (mit db.execute "DELETE *
FROM..."). Die Datensatz-ID in dieser Tabelle als Autowert, Primàrschlüssel steht im
Moment bei 3 Mios.
Trotzdem ist die mdb inzwischen 300 MB groß. Speichert die mdb offenbar die gelöschten
Datensàtze? Oder woran liegt das denn?
Krieg ich sie mit dbEngine.compactdatabase wieder kleiner?
Oder gibts eine andere Möglichkeit?

Gruß und Dank!

Thomas Hoffmann
 

Lesen sie die antworten

#1 Wolfgang Bußmann
07/03/2009 - 11:56 | Warnen spam
Hallo Thomas,

ich mache das unter DAO (Verweis einbinden!) beim Programmstart immer
wie folgt:

************************
Option Compare Binary

Public Sub DBReorg()
Dim DB2 As New DAO.DBEngine
Dim Datendateiname As String
Dim PfadExe As String

On Error GoTo DBReorgFehler

PfadExe = App.Path
If Mid$(PfadExe, 2, 1) = ":" Then
ChDrive Left$(PfadExe, 1)
ChDir PfadExe
End If

Datendateiname = PfadExe & "\Daten.MDB"

If Dir$(PfadExe & "\Datenneu.$$$") <> "" Then
Kill PfadExe & "\Datenneu.$$$"
End If

DB2.CompactDatabase Datendateiname, PfadExe & "\Datenneu.$$$",
dbLangGeneral, dbVersion40

Kill Datendateiname

Name PfadExe & "\Datenneu.$$$" As PfadExe & "\Daten.MDB"

If Not DB2 Is Nothing Then
Set DB2 = Nothing
End If

Exit Sub

DBReorgFehler:
If Not DB2 Is Nothing Then
Set DB2 = Nothing
End If
MsgBox "Die Daten.MDB konnte nicht bereinigt und komprimiert werden!"
& vbCrLf & vbCrLf & _
"Evtl. greift ein anderes Programm bereits auf die Daten.MDB
zu." & vbCrLf & _
"Programm sollte normal starten.", vbInformation,
"Datenbankkomprimierung"
End Sub
********************

Sicher noch verbesserungsbedürftig, aber für meine Fàlle geht's gut. ;-)

Gruß Wolfgang

Ähnliche fragen