Speichern von Formularen dauert sehr lange

Hallo,

ich habe eine Access Datenbank, an der ich schon seit Jahren arbeite. Da ich meine Kenntnisse über Access und VBA durch die Erstellung dieser Datenbank erworben habe und mit Sicherheit kein Profi bin, unterliegt die Datenbank einer ständigen Verbesserung/Umänderung. Außerdem Erweitern sich die Anforderungen an meine Datenbank ständig. Dadurch ergeben sich zusätzliche Erweiterungen und Änderungen.

Was ich nun leider feststellen musste ist, dass das Abspeichern von Änderungen immer langsamer wird. Wenn ich zum Beispiel in einem Formular ein Feld änder oder im VBA Code etwas änder und abspeichern möchte dauert dies extrem lang (4 Minuten). Ich habe so das Gefühl, dass ich irgendwelche Altlasten mit herumschleppe und jede Änderung weitere hinzubringt. Ich habe inzwischen mehrfach meinen Code überarbeitet und zum Teil Code aus den Formularmodulen in freie Module ausgelagert, doch dies hat nur eine relativ kleine Beschleunigung des Speichervorgangs ergeben.

Hat jemand Tipps für mich an was es liegen könnte, dass das Speichern von Änderungen in meiner Datenbank so langsam geworden ist?

Hoffnungsvoll

Aiwala

Moin, Aiwala,

Access-Datenbanken sind dankbar für die gelegentliche Anwendung des Menüpunktes Extras > Datenbankdienstprogramme > Datenbank komprimieren und reparieren.

Falls Du das zum ersten Mal machst: Schau Dir vorher und nachher die Größe der Datenbank an, da trifft Dich der Schlag.

Gruß Ralf

Hi,
zusätzlich zu dem was Ralf ausgeführt hat:

Einfach mal eine neuen leere DB erstellen und alle deine Objekte deiner Anwendung in deine leere Datenbank exportieren bzw. importieren.

Gruss
Joey

Hallo Aiwala,

eine kleine Ergänzung zum bereits gesagten:
Grundeinstellungen: komprimieren beim Beenden -> aktivieren

Access-Datenbanken werden sinnvoll genutzt, wenn du Code von den Daten trennst. D.h. teile deine DATENBANK in zwei Teile. In der einen (Back-End) sind die Daten, in der anderen (Front-End) sind die Abfragen, Formulare, Berichte, Module etc., das spart Platz.

btw hast du in den Grundeinstellungen die Änderungsverfolgung aktiviert? Falls JA = ausschalten

Datenbanken sind festplattenintensive Programme. Daher empfehle ich:
1 x pro Woche Defrag
1 x pro Woche Scandisk

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Netwolf,

ich gehe nach jeder Änderung an der Datenbank auf Komprimieren und Reparieren, meine Datenbank ist bereits aufgeteilt in ein Frontend und ein Backend und unter Extras -> Optionen -> Allgemein -> ist das Kästchen für „Änderungen protokollieren“ nicht ausgewählt.

Aber den Vorschlag mal wieder meine Festplatte aufzuräumen find ich interessant und werde ihn gleich mal ausprobieren. Vermutlich wird mein Rechner damit dann eine Weile beschäftigt sein.

Vielen Dank für deine Tipps! Fallst dir noch weiteres einfällt, Ich bin über jeden Vorschlag dankbar!

Experimentierfreudige Grüße

Aiwala

Hallo Ralf,

ich komprimiere und repariere meine Datenbank regelmäßig.

Fällt dir darüber hinaus noch was ein?

Vielen Dank!

Aiwala

Hallo Joey,

was ist anderst wenn ich meine ganzen Tabellen, Abfragen, Formulare, Berichte, Module etc. in eine neue Datenbank kopiere? Bzw. du schreibst Importieren! Was ist anderst beim Importieren als beim kopieren? Ich meine ich werde es gerne Versuchen, aber wenn du mir auch erklären kannst wieso das eine Verbesserung bringt, bzw. was die Hintergründe dazu sind, würde ich mich freuen. Und so richtig freue ich mich nicht darauf da meine Datenbank aus vielen Tabellen, Abfragen, Formularen, … besteht. Muss ich nach dem Importieren Einstellungen manuell noch nachbessern?

Mit verwirrten Grüßen

Aiwala

Moin, Aiwala,

Fällt dir darüber hinaus noch was ein?

nö. Meine Datenbanken sind bis zu 10 MB groß (ohne Daten), ich hatte noch nie Ärger. Verteilung: 30 Tabellen, 70 - 100 Abfragen, 30 Formulare, 30 Bericht, 40 - 50 Module. Alles wie gewachsen, keine Absicht dahinter.

Gruß Ralf

Hallo Ralf,

meine Datenbank ist viel kleiner!
Frontend 4 MB
Tabellen 23, Abfragen 25, Formulare 21, Berichte 1, Makros 2,
Module 4 (+ die von den Formularen)
Viele Tabellen sind nur Quellen für Kombinationsfelder und damit sehr klein.
Nun bin ich noch mehr verwundert warum meine Datenbank so langsam ist.

Mit hilflosen Grüßen

Aiwala

Hallo,

es kann mannigfaltige Ursachen haben:

-Die Db wird in einem langsamen/instabilen Netzwerk betrieben.
-Die DB ist nicht aufgeteilt und läuft im Multiuser-Betrieb.
-Die DB ist mit „Leichen“ überladen (Objekte, die während der Entwicklung z. B. durch kopieren/Löschen „übrig“ bleiben).
-Die Autokorrekturen sind eingeschaltet.
-Viele Suchvogänge in nicht-indizierten Feldern.
-Suchschleifen in VBA-Recordsets
-die Db hat einen „Schuß“, d. h. ein oder mehrere Datensätze sind „kaputt“

  • etc, etc…

DAs Anlegen einer neuen leeren Datenbank und der Import dor aller Objekte aus der alten „repariert“ die meisten dieser (access-bedingten) Fälle und dauert nur ein paar Sekunden (sagen wir mal 1 Minute). Nicht vergessen sollte man aber im betroffenen Fall, beim Importassisten unter „weitere“ auch den Import von selbsterstellten Menüleisten zu aktivieren, sofern man welche erstellt aht.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Franz,

schlägt du vor das Neuerstellen und Importieren nur für das langsame Frontend zu machen oder auch für das Backend, das nur aus Tabellen besteht?

Schöne Grüße

Aiwala

Hallo,

sorry, sehe erst jetzt den Thread…

primär das FE neu erstellen… das BE ist sekundär, schadet aber auch nicht.

Neu erstellen geht ja einfach: neue leere DB machen, im Datenbankfenster auf Importieren gehen und im folgenden Fenster alle(!) Objekte auswählen. Wenn Du benutzerdefinierte menüleisten hast, auch auf „weitere“ klicken.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!