Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular stürzt ab

Begonnen von MartinHan, Februar 21, 2025, 20:37:53

⏪ vorheriges - nächstes ⏩

MartinHan

Hallo,

merkwürdiges Phänomen:

in einer Access-FE Anwendung mit Ms Sql Db Be habe ich mit einem (und nur einem) Formular ein Problem.
Wenn ich das Formular aufrufe klappt alles, nur wenn ich in die Entwurfsansicht wechseln will stürzt Access ab.
Ich habe das Formular neu erstellt (zwar die Objekte aus dem alten Formular in das neue kopiert), der Fehler bleibt der gleiche.
Dann eine komplett neue DB erstellt und die Objekte aus der alten kopiert...das Problem bleibt bestehen.
Ich kann die Entwufsansicht des Formulars über die Formularliste öffnen, kein Problem.
Das sieht mir schon nach einem Bug aus.
Es kam einmal auch die Meldung: Es ist eine Fehlersituation entstanden. Sie werden benachrichtigt, wenn der Fehler behoben ist (ungfährer Wortlaut). Nach gefühlten 20 Jahren Access Entwicklung habe ich so eine Nachricht noch nie bekommen.
Da bin ich ja mal sehr gespannt, wer mich da benachrichtigen wird.

Hat jemand eine Idee?

Danke für Hilfe

Martin
Es gibt nichts gutes, außer, man tut es! EK

MartinHan

Vielleicht würde es etwas bringen, das Formular ohne zu kopieren neu zu erstellen, werde ich morgen mal versuchen.
Ich hasse diese Abstürze von Access, wo einem nichts gesagt wird warum.

Martin
Es gibt nichts gutes, außer, man tut es! EK

Bitsqueezer

Hallo Martin,

dann hast Du wohl noch nicht viel in Access gemacht in der Zeit... :D
Also Abstürze mit Access zu erhalten und auch die Nachricht mit der Fehlersituation ist nicht so selten in komplexeren Formularen. Meist liegt es aber an Elementen wie ActiveX oder exzessiver VBA-Programmierung, die vor allem den Automatismen von Access in's Gehege kommt. Da hilft es, zunächst mal den gesamten Code auszukommentieren und es dann nochmal zu versuchen. Wenn das auch nicht klappt, eine Kopie des Formulares erstellen und alles Access-fremde wie TreeViews etc. zu entfernen. So kann man sich solchen Problemen annähern.

Statt Reimport in eine leere Datenbank (die oft das Problem auch wieder mit importiert) hilft es auch, ein Formular mit "Application.SaveAsText" im Direktfenster als puren Text zu exportieren und in einer neuen Datenbank mit "Application.LoadFromText" wieder einzulesen. Dabei bleibt alles erhalten, nur so einiges an "Binärmüll" wird so nicht wieder importiert, weil die Datei nur die textuelle Beschreibung des Formulares enthält.

Es kommen zwar gerne Hinweise zu "/decompile", ich persönlich rate aber davon ab. Das hat mir nicht nur einmal eine Datei komplett zerstört (daher man das, wenn überhaupt, ausschließlich auf einer Kopie ausprobiert).
Die Methode, alles als Text zu exportieren, ist immer zuverlässig und hat noch nie zu einem Problem geführt.

Nebenbei findest Du auf meiner Downloadseite das Tool "CCAccessComparisonV2". Das ist eigentlich dazu gedacht, den kompletten Inhalt von zwei Access-Dateien (außer den Daten) miteinander zu vergleichen. Aber es exportiert alle Elemente, Tabellenstrukturen, Formulare, Abfragen usw. als Text in einen Ordner, wie oben beschrieben (auch die Referenzen) und dann kann man es in einer neuen Datei wieder einfügen (macht das Tool nicht, aber wenn man den Code etwas anpaßt für LoadFromText ist es ja kein großer Unterschied).

Gruß

Christian

Knobbi38

Hallo,

Zitat von: Bitsqueezer am Februar 21, 2025, 22:45:53Es kommen zwar gerne Hinweise zu "/decompile", ich persönlich rate aber davon ab. Das hat mir nicht nur einmal eine Datei komplett zerstört (daher man das, wenn überhaupt, ausschließlich auf einer Kopie ausprobiert).
Decompile kann man ruhig anwenden, wenn man weiß. was man tut bzw. wofür es eigentlich gedacht ist. Das man dafür nur eine Kopie verwendet, sollte selbstverständlich sein.

Übrigens gilt das gleiche auch für das Komprimieren von Datenbanken, was man auch nur ausnahmsweise machen sollte - ebenfalls immer nur mit einer Kopie!!!

Gruß
Knobbi38

MartinHan

Ich habe jetzt das Formular kopiert und allen VBA Code entfernt. Es klappte immer noch nicht...
Dann habe ich Unterformulare entfernt und dann lief es.
Ich werde mich jetzt da ran robben...

Danke für die Hilfe.

Aber das nächste Problem ist schon da...aber unter dem Punkt SQL Db.
Muss ich aber noch beschreiben.

Martin
Es gibt nichts gutes, außer, man tut es! EK