Datum: 27.02.2019
Thema: Access-Fachsimpeleien
Der erste Access-Stammtisch nach der Winterpause war gut besucht. Sieben Access-begeisterte Gäste zählte die Runde im Hotel Amadeus.
Mirko zeigte sein neues Convertible von Lenovo™ und hatte auch schon eine erste Frage zum Thema XML parat: Wie können XML-Daten in zwei Tabellen übernommen werden.
Klaus verweist auf zwei essentielle Komponenten: Die Parser-Bibliothek MSXML2.dll, mindestens in der 6.0er-Version und das DOM-Datenmodell.
Eine Variante ist es, den Datenstrom einzulesen. Man sollte bendenken, das jedes XML anders ist. Die Datentypen sollten sauber definiert sein (Stichwort „XML Schema Definition“).
Carsten empfiehlt, sich die Hierarchie im Browser anzugucken.
Generell gilt: Sichtbare Informationen werden als Elemente, unsichtbare Informationen werden als Attribute behandelt.
Ulrich beschreibt sein Szenario: Daten werden in eine temporäre Tabelle eingelesen. Diese wird durch eine Anfügeabfrage befüllt und nachbearbeitet. Gearbeitet wird mit einem Recordset aus der temporären Tabelle. Dabei treten gelegentlich Schreib-/Lese-Fehler auf.
Carsten vermutet ein Timing-Problem. Klaus gibt den Tipp mit Decompile.
Eine andere Möglichkeit ist, ein DoEvents hinter den ausführenden Befehl zu setzen. Mirko rät zu eine 5-Sekunden-Pause.
Generell ist Ulrichs Datenbank langsam geworden: Dabei sind die Primärschlüssel Strings, Formular haben mehrere Unterformulare und Abfragen dienen als Datenquelle.
Klaus’ Tipp ist es, evtl. besser die Tabellen direkt als Datenquelle zu verwenden. Eine Faustregel dabei: Formulare greifen auf Tabellen zu, Abfragen dienen zur Berechnung.
Während und nach dem Schnitzelgenuss gibt es ein wenig Smalltalk zum Thema Sommerzeit, zu veganer Ernährung und zum autonomen Fahren.
Gut gesättigt, stellt Stefan uns ein kleines Access-„Rätsel“.
Seine Anwendung läuft unter der Access 2013-Runtime. Dabei kommt es zu einer Fehlermeldung. Vermutet wurden als Quelle die Autoexec und ein Fehler im Standardwert eines Feldes. In der Log-Datei wurde nichts gefunden.
Am Ende war es das Öffnen eines Formulars, welches zum Fehler führte: Dabei fehlte ein Verweis auf Outlook.
Umgehen kann man so etwas mit Early und Late Binding: Zur Entwicklung wird mit Early Binding, zur Auslieferung wird Late Binding eingesetzt (vgl. http://www.access-basics.de/tl_files/downloads/2012/09/EarlyUndLateBinding.pdf).
Hilfreich ist auch die bedingte Kompilierung (vgl. https://docs.microsoft.com/de-de/office/vba/language/concepts/getting-started/understanding-conditional-compilation). Mittels #If-Anweisung spricht die Logik die Kompilierung an. In einem Modul gibt es eine Const-Anweisung.
Ulrichs Access-Ribbon „friert“ manchmal ein 🥶. Mirko gibt einen „heißen“ Tipp: Fön draufhalten 😉
Klaus fragt, ob Add-Ins aktiv sind, die kein normales Verhalten zeigen. Eine weitere Vermutung ist eine Access-Bug durch ein Windows 10-Update.