Der Laufzeitfehler 3188 bei Microsoft Access Datenbanken
Szenario
Sie haben eine (beliebig komplexe oder beliebig einfache) Access-Datenbank auf ihrem Rechner lokal laufen und bearbeiten auch allein die Daten.
Sie möchten den Text in einem Textfeld (vom Typ „langer Text“), das Sie zur Bearbeitung in einem Formular geöffnet haben, aktualisieren.
Beim Speichern erscheint plötzlich folgende Fehlermeldung, obwohl vorher immer alles funktioniert hat: „Aktualisieren nicht möglich; momentane Sperrung durch eine andere Sitzung auf dem Rechner“
Sie können nur frustriert abbrechen; dabei werden die Änderungen selbstverständlich nicht gespeichert. Es gibt aber einen Workaround; wenn Sie das interessiert, lesen Sie weiter.
Erste Erkenntnis
Erst einmal herzlichen Glückwunsch: früher oder später kommt meines Erachtens jeder, der sich eine Access-Datenbank erstellt hat, an diesen merkwürdigen Fehler. Dieser Fehler ist auch unter „Laufzeitfehler 3188“ bekannt.
Ursachen
Wenn ein Datensatz mehr als zweimal in Access angezeigt / dargestellt ist (auch wenn dies im Hintergrund in einem anderen Formular geschieht) und mehr als 2036 Zeichen enthält (etwa eine durchschnittliche DIN-A4-Seite), dann erscheint die Fehlermeldung, wenn man den Datensatz speichern möchte.
Probieren Sie mal einen kürzeren Text zu bearbeiten, der weniger als 2036 Zeichen beinhaltet. Sehen Sie? Es funktioniert. Das ist schon sehr verblüffend, zumal es sich nach heutigen Maßstäben um winzig kleine Datenmengen handelt und sich mir momentan nicht erschließt, warum es einen derartigen Fehler überhaupt in einem derart reifen Programm gibt (Access gibt es seit November 1992!).
Selbst eine direkte Bearbeitung des Datensatzes über VBA führt zu einer Fehlermeldung, wenn der Datensatz bereits anderweitig geöffnet / angezeigt wird.
Verhalten
Was jedoch wirklich seltsam ist: der Fehler kann mit hoher Wahrscheinlichkeit ziemlich sicher reproduziert werden, aber es kam bei mir doch tatsächlich hin und wieder vor (geschätzt in ca. 1 von 20-30 Fällen), dass doch ein Textfeld bearbeitet und gespeichert werden konnte, welches mehr als 2036 Zeichen vor und nach der Aktualisierung enthält / enthielt. Das macht den Fehler erst richtig interessant.
Was noch seltsamer ist: Manche Datensätze können bearbeitet werden, die größer als 2036 Zeichen sind, und im nächsten Moment geht es plötzlich auch nicht mehr, um nach einiger Zeit wieder zu funktionieren. Dabei ist es unabhängig davon, ob zwischenzeitlich ein „zu großer“ Datensatz bearbeitet wird und es zu einer Fehlermeldung kommt, oder ob ein Datensatz mit kleiner 2036 Zeichen erfolgreich bearbeitet werden kann.
Boah, das ist schon strange… bei einem Programm, dass so lange auf dem Markt ist und von dem gefordert ist, dass lediglich winzige Textfelder geändert werden sollen (die Größe ist auf 65.000 Zeichen beschränkt, ca. 8 DIN-A4-Seiten).
Ich versuche mal, ein System dahinter zu erkennen…
Lösung
Dieser Fehler ist richtig lästig, zugegeben. Aber er lässt sich mit einem Workaround im Notfall immer sicher umgehen, wie folgt: Schließen Sie vor dem Speichern des von Ihnen soeben bearbeiteten Datensatzes alle anderen den gleichen Datensatz anzeigende Formulare oder Berichte. Jetzt kann die Aktualisierung gespeichert werden. Das Problem dabei: Sie mussten das andere Formular schließen und müssen sich dann erst dort wieder an den Sie interessierenden Datensatz vorarbeiten… wenn Sie Batch-Bearbeitungen durchführen, kann das richtig nervig werden.
Was auch geht: Man hinterlegt beim Speichern des Datensatzes, dass das weitere Formular / Bericht, das den Datensatz anzeigt, automatisch vor der Speicherung des Datensatzes geschlossen wird und danach wieder geöffnet wird; das funktioniert glücklicherweise auch nachdem das eigentliche Formular schon geschlossen wurde, das noch einen weiteren “Schließen-Befehl” beinhaltet.
Problem dabei: Es muss dann noch die richtige Position im Bericht angesteuert werden.
Oder man lässt nur Notizen zu, die kleiner als 2036 Zeichen sind und tut so, als ob man sich in der Zeit um 1992 befindet…