Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.
Wenn in einer VBA-Routine ein Fehler auftritt und Sie dazu eine Meldung der Form MsgBox "Problem: " & Err.Description anzeigen lassen, wird häufig der wenig hilfreiche Text "Anwendungs- oder objektdefinierter Fehler" ausgegeben. Wir zeigen in unserem Tipp, wie Sie dem Problem durch aussagekräftigere Fehlermeldungen schneller auf den Grund gehen können. Wenig bekannt ist eine Erweiterung in Access, die für anwendungs- oder objektspezifische Fehler einspringt und speziell den für Access gültigen Fehlertext liefert.
FRAGE In einem Formular rufe ich über eine Schaltfläche nacheinander mehrere Abfragen per DoCmd.OpenQuery auf. In einem Bezeichnungsfeld gebe ich als Fortschrittsanzeige zwischendurch den Text "Abfrage '1..10' (Name) wird ausgeführt..." aus. Diese Anzeige erfolgt aber nicht korrekt. Im Feld steht der Name der ersten Abfrage und wechselt erst nach Ausführung der letzten Abfrage in "Abfrage 10 (Name) wird ausgeführt...".
Wenn Sie regelmäßig Berichte wie Preislisten, Statistiken, Umsatzberichte oder ähnliche Dokumente an Ihre Kollegen weitergeben oder auf der Festplatte sichern möchten, gibt es mit dem neuen SmartTools Berichte-Verteiler 5.8 jetzt eine komfortable Lösung. Geben Sie Berichte direkt aus Ihrer Datenbank in den Formaten PDF oder RTF an beliebig viele Empfänger über Outlook weiter. Auch die Ablage Ihrer Berichte im Netzwerk in die Ordner von Kollegen ist mit den SmartTools Berichte-Verteiler kein Problem.
Abfrageergebnisse benötigen Sie häufig nicht in der Datenblattansicht, sondern als Zeichenkette oder Array zur Weiterverarbeitung. In der Regel initialisieren Sie dazu ein Recordset, durchlaufen es und fassen die benötigten Feldinhalte in einer Zeichenkette zusammen. Wenig bekannt ist die Tatsache, dass ein ADO-Recordset eine Methode bereitstellt, die Ihnen diese Arbeit abnimmt und das Ergebnis blitzschnell zur Verfügung stellt.
FRAGE Ich möchte meine Outlook-Nachrichten mit Anlagen archivieren und fand hierzu Ihre bisherigen Tipps zur VBA-Steuerung von Outlook in früheren Ausgaben von Access Weekly sehr hilfreich. Jetzt geht es mir aber speziell um die Anhänge. Gibt es eine Möglichkeit, per VBA festzustellen, ob eine Nachricht überhaupt Anhänge enthält? Sollte das der Fall sein, möchte ich die angehängten Dateien separat speichern.
Um schnell einige Datensätze zu löschen oder zu aktualisieren, verwenden Sie regelmäßig die Methode "Execute" des Objektes "Database". "Execute" liefert allerdings keine Rückmeldung, wie viele Datensätze von der Ausführung betroffen sind, so dass Ihnen Anhaltspunkte für eine eventuelle Folgeverarbeitung fehlen. In diesen Fällen hilft die Eigenschaft "RecordsAffected": Sie liefert die Anzahl der Datensätze, die durch die letzte Ausführung von "Execute" betroffen waren.
In Formularen werden oft umfangreiche Texte in Memofeldern gespeichert. Hier ist die Gefahr sehr groß, dass beim Lesen durch unachtsame Eingaben oder einen Tastendruck die Inhalte verändert oder gelöscht werden. Aber auch normale Textfelder können Daten enthalten, die nicht ohne weiteres geändert werden dürfen. Access macht nicht auf Änderungen aufmerksam, sondern speichert die Datensätze einfach ohne weitere Rückfrage. Unser Tipp stellt eine Lösung vor, mit der Sie dieses Manko umgehen und Text- und Memofelder gegen irrtümliche Änderungen schützen können.
FRAGE Um alle Tabellen und Abfragen in einer Datenbank in einer Schleife zu bearbeiten, lassen sich TableDefs- und QueryDefs-Auflistungen in der Form For Each td In TableDefs bzw. For Each qd In QueryDefs einsetzen. Ich möchte nun auch eine vergleichbare Schleife für Formulare, Berichte, Makros und Module programmieren. Es gibt allerdings keine geeigneten "Defs"-Auflistungen. Kennen Sie eine passende Lösung?
Wenn Sie Berichte drucken, verwenden Sie in den zugrunde liegenden Abfragen häufig Kriterien, die über ein Formular einstellbar sind – beispielsweise ein Auswertungszeitraum für eine Umsatzübersicht oder ein Land für eine Kundenliste. Hier referenzieren Sie aus der Zeile "Kriterien" der Abfrage im Formular zum Beispiel Textfelder wie "txtDatumVon" und "txtDatumBis" oder ein Kombinationsfeld "clLand" in der Art "=Forms!AuswahlFormular!clLand". Für einfache Textfelder oder Kombinationsfelder mit nur einer Auswahlmöglichkeit ist das in der Regel kein Problem. Wenn Sie aber ein Listenfeld einsetzen möchten, über das mehrere Einträge ausgewählt werden können, so sich diese Mehrfachauswahl nicht direkt aus der Abfrage heraus über die Zeile "Kriterien" referenzieren. Unser Tipp erläutert, wie Sie auch mehrere markierte Einträge eines Listen-Steuerelementes als Filterkriterium verwenden können.
FRAGE Ich möchte automatisch Nachrichteninhalte aus Outlook auslesen und in einer Tabelle speichern, scheitere jedoch schon daran, eine Verbindung zu Outlook aufzubauen. Mit "CreateObject()" funktioniert es zwar generell, aber es wird, wenn Outlook bereits läuft, immer eine zweite Outlook-Instanz gestartet. Ich möchte aber das bereits laufende Outlook und den darin ausgewählten Nachrichtenordner verwenden. Wie gehe ich dazu am besten vor?
Dieses Blog präsentiert Inhalte aus den E-Mail-Newslettern von SmartTools Publishing. Premium-Beiträge, die mit [S+] gekennzeichnet sind, sind Newsletter-Abonnenten vorbehalten.
Jetzt Abonnent werden
Falls Sie SmartTools Access Weekly noch nicht abonniert haben, können Sie sich jetzt anmelden – kostenlos und innerhalb weniger Minuten! Sie erhalten dann umgehend ein Passwort, das alle Premium-Beiträge für Sie freischaltet.
[S+] Inhalte freischalten
Wenn Sie SmartTools Access Weekly bereits beziehen, geben Sie hier Ihr Abonnenten-Passwort ein, um alle Premium-Beiträge freizuschalten:
Tipp: Sie finden das gültige Passwort immer am Ende der neuesten Ausgabe Ihres Newsletters.