A97: Absturz nach Modifizieren einer Funktion

Moinmoin!

Na klasse: Ich habe eine A97-Datenbank, derzeit so etwa 12 MB groß. Reines Frontend, Tabellen eingebunden. Einen Bericht, den ich aufrufe, musste ich modifizieren und ein neues Textfeld einfügen.
Diesen Bericht exportiere ich nach Word, allerdings nicht über die formatverhackstückende eingebaute Funktion, sondern per Code in eine entsprechende Vorlage. Dies funktioniert über zwei Varianten: Entweder wird über alle (oder eine Auswahl von) Datensätze gerannt und der Export in jeweils eine Datei automatisch durchgeführt (Öffnen des Berichts, ausblenden, exportieren), oder aber es wird explizit nur der aktuelle Bericht (nicht ausgeblendet; der Anwender soll ihn ja sehen) exportiert.
Jetzt musste ich in der Routine, die den Export durchführt, eine Codezeile einfügen: bExport = True
Und, auch egal, an welcher Stelle ich diese Zeile einfüge, seit dem stürzt Access mit Fehler (Read konnte an Adresse xxx nicht durchgeführt werden) ab. Reparieren/Komprimieren half nix. Habe jetzt so ungefähre zwei Stunden damit zugebracht, die Datenbank irgendwie ans Rennen zu kriegen. Habe den Altstand genommen und sukzessive mit den Änderungen des heutigen Tages ergänzt, zwischendrin Kopien gemacht, und ständig nach der Modifikation der einen Funktion ist mir das ganze Access abgeraucht. Ich habe (leider nicht reproduzierbar) nun die ganze Funktion gelöscht und geändert wieder eingefügt. Seit dem rennt das Programm wieder.

Nun aber meine Frage: Hat jemand eine Erklärung für das Verhalten? Und hat jemand ähnliche Erfahrungen gemacht und eine reproduzierbare Lösung/Abhilfe?

Gruß, Manfred

Hallo Manfred

Dass man das noch mal erleben darf: Der Mann, der scheinbar alles weiss (ich meine das positiv!), hat selbst eine Frage :smile:

Nun aber meine Frage: Hat jemand eine Erklärung für das
Verhalten?

Nein —> Bill fragen

Und hat jemand ähnliche Erfahrungen gemacht und
eine reproduzierbare Lösung/Abhilfe?

Ja —> „decompile“

msaccess.exe "C:\Test\MeineDB.mdb" /decompile

99% aller Fehler kann ich selbst beheben, von dem restlichen Prozent lassen sich wiederum mindestens 90% mit „decompile“ beheben. Nur wenn auch das nicht hilft, gehe ich so vor wie du (d.h. umkopieren, evtl. um/neuschreiben, …).
Weiteres zu „decompile“ auf Anfrage (weil ich mich nicht traue, dir dazu etwas erklären zu wollen).

Gruss
Peter

Hallo, Peter!

Dass man das noch mal erleben darf: Der Mann, der scheinbar
alles weiss (ich meine das positiv!), hat selbst eine Frage

Danke für die Blumen. Aber:

Nun aber meine Frage: Hat jemand eine Erklärung für das
Verhalten?

Nein —> Bill fragen

Den wollte ich eh schon so vieles fragen… Und ein paar Sachen sagen… Aber die verstoßen, da bin ich mir ziemlich sicher, gegen jede Netiquette und jeden Anstand…

Und hat jemand ähnliche Erfahrungen gemacht und
eine reproduzierbare Lösung/Abhilfe?

Ja —> „decompile“

msaccess.exe „C:\Test\MeineDB.mdb“ /decompile

99% aller Fehler kann ich selbst beheben, von dem restlichen
Prozent lassen sich wiederum mindestens 90% mit „decompile“
beheben. Nur wenn auch das nicht hilft, gehe ich so vor wie du
(d.h. umkopieren, evtl. um/neuschreiben, …).

Du mein Held!
Nach /decompile kam folgendes Phänomen: Ich habe mir eine eigene Klasse gebastelt. Diese habe ich auch als Rückgabetyp diverser Funktionen. Nach Decompile kam die Compilerfehlermeldung „Modul hat falschen Typ“ oder so. Beim Autoergänzen konnte ich die Klasse auch nicht referenzieren. Also scheint Access die Klasse nicht mehr als solche gemocht zu haben. Neu schreiben (also Kopieren des Codes aus der defekten Version) der Klasse hat geholfen. Nun rennt das Ding auch wieder.

Weiteres zu „decompile“ auf Anfrage (weil ich mich nicht
traue, dir dazu etwas erklären zu wollen).

Wieso traust Du Dich nicht?
Wie auch immer: Merci vielmals. Mal wieder was gelernt.

Gruß, Manfred

decompile
Hallo Manfred

Du mein Held!

Das wäre doch etwas für das Brett „Anregungen, Lob & Kritik“; neue Kategorie für die Selbsteinschätzung der Kenntnisse bei den eigenen Interessengebieten:
Interessierter…Anfänger…Fortgeschrittener…Experte…HELD :-]

Weiteres zu „decompile“ auf Anfrage (weil ich mich nicht
traue, dir dazu etwas erklären zu wollen).

Wieso traust Du Dich nicht?

Weil ich dachte, du kennst das schon…

Also, für dich und alle anderen, die es evtl. interessiert:
„decompile“ ist eine undokumentierte Startoption. Sie versetzt eine Access-Datenbank in den Zustand, wie er normalerweise nur nach dem Konvertieren auf eine höhere Version entstehen kann. Dabei wird alles an Code rausgeschmissen, den Access beim „Compilieren“ anscheinend einzubinden pflegt, und der einem dann in manchen Situationen „unlösbare“ Fehler beschert.
Ausser zum Lösen solcher Probleme verwende ich „decompile“ auch, um eine Datenbank vor der Auslieferung nochmal „abzuspecken“. Wenn man viel VBA-Code hat, und diesen oft ändert, sammelt sich irgendein „Müll“ an, der durch normales Komprimieren nicht entfernt werden kann. Also nicht wundern, wenn eine frisch komprimierte Datenbank nach „decompile“ nochmal um 20 oder mehr Prozent kleiner wird. Die Datenbank mit „decompile“ öffnen (natürlich vorher sichern!), irgendein Modul öffnen, „alle Module kompilieren und speichern“ und danach nochmal komprimieren.

Hier noch ein weiterführender Link:
http://www.granite.ab.ca/access/decompile.htm

Wie auch immer: Merci vielmals. Mal wieder was gelernt.

Gerne… lerne ja auch immer mal wieder etwas von dir.

Gruss
Peter