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.
Und es tut sich doch noch etwas … Nach über einem Jahr ohne größere Updates, gibt es endlich wieder eine erwähnenswerte Neuerung in Access. Mit dem neuesten Microsoft 365 Update steht Teilnehmern am Insider-Programm (Beta-Kanal) eine deutlich erweiterte Diagrammfunktion in Access 365 zur Verfügung. Es wurden insgesamt 10 neue Diagrammtypen ergänzt und es stehen verschiedene neue Formatierungsoptionen zur Verfügung.
Um Daten beispielsweise zwischen Makros, VBA-Routinen, Formularen, Berichten und Abfragen auszutauschen, nutzen Sie in der Regel globale Variablen und benutzerdefinierte Funktionen zum Auslesen dieser Variablen. Diese Art des Datenaustausches ist nicht nur sehr umständlich, sondern auch unsicher: Wenn es im VBA-Bereich zu einem Fehler kommt oder Sie Änderungen vornehmen, werden die Module automatisch deinitialisiert und Variableninhalte gehen verloren. Schlimmstenfalls können dann "leere" Variablen verarbeitet werden, so dass es zu falschen Ergebnissen bei der Verarbeitung Ihrer Daten kommen kann. Mit Access 2007 wurden daher die sogenannten "TempVars" (Temporary Variables, temporäre Variablen) eingeführt, deren optimalen Einsatz wir Ihnen in diesem Tipp demonstrieren.
FRAGE Ich versuche gerade, in einem Kombinationsfeld nur bestimmte Daten anzeigen zulassen. Das Kriterium dazu bezieht sich auf ein anderes Kombinationsfeld: Formulare![frmKriterien]![KombiFeld].Column(3). Dabei erhalte ich jedoch die Fehlermeldung "Undefinierte Funktion". Kann ich als Kriterium eine Spalte in einem anderen Kombinationsfeld verwenden und wenn ja wie? Ich brauche hier als Abfragekriterium den Wert, der in der 3. Spalte steht.
Aus verschiedenen Gründen ist es immer wieder notwendig, die Größe der aktuellen Datenbank zu überwachen. Beim Erreichen einer bestimmten Größe soll eine Meldung angezeigt werden, so dass zum Beispiel der Anwender eine Archivierung/Auslagerung starten oder der Administrator weitere Schritte unternehmen kann. In diesem Tipp der Woche stellen wir eine entsprechende VBA-Lösung vor und zeigen Schritt für Schritt, wie Sie sie in Ihre Datenbanken integrieren.
FRAGE Wenn ich in meiner Access-Datenbank eine verknüpfte Tabelle mit der rechten Maustaste anklicke, findet sich im Kontextmenü unter anderem der Befehl In lokale Tabelle konvertieren, mit eine Tabelle aus dem Backend ins Frontend geholt wird. Diese Funktion möchte ich gerne programmatisch nutzen, aber ich bin bisher nicht fündig geworden. Gibt es für die nützliche Umwandlung auch eine VBA-Anweisung?
Für einige Anwendungen müssen Sie die aktuelle IP-Adresse des Rechners ermitteln, auf dem eine Datenbank ausgeführt wird. So können Sie beispielsweise Probleme mit Zugriffsrechten im Netzwerk einfacher lösen oder eine Firewall für eventuell notwendige ein- oder ausgehende Verbindungen der Datenbank schneller konfigurieren. Access stellt für eine solche Aufgabe keine Unterstützung bereit, aber mit Hilfe der Windows-API können Sie eine entsprechende Funktion nachrüsten.
FRAGE Über ein Formular "Hauptmenü" wird meine Access-Anwendung gesteuert. Es sind manchmal bis zu 7 Formulare zur gleichen Zeit geöffnet, bis man zu einem bestimmten Ergebnis gelangt. Damit die Übersicht nicht verloren geht, möchte den Anwendern in jedem geöffneten Formular eine Schaltfläche anbieten, über die alle Formulare außer dem Formular "Hauptmenü" in einem einzigen Schritt geschlossen werden können.
In Datenbank werden verschiedene Meldungen per "MsgBox" angezeigt. Dabei kommt es immer wieder vor, dass die Dialoge hinter Formularen verschwinden bzw. davon verdeckt sind. Die Datenbank reagiert dann nicht mehr, da sie auf eine Bestätigung der Meldung wartet. Das verwirrt die Anwender und führt häufig dazu, dass sie von einem Programmabsturz ausgehen. In unserem neuesten SmartTipp für Excel zeigen wir Ihnen daher, wie Sie Meldungsfenster zuverlässig im Vordergrund anzeigen lassen.
Sicherlich haben auch Sie schon einmal festgestellt, dass einige Abfragen bei der ersten Ausführung wesentlich mehr Zeit benötigen als bei jedem nachfolgenden Aufruf. Unser Tipp erläutert die Hintergründe und stellt eine Lösung vor, mit deren Hilfe Sie Ihre Abfragen immer schnellstmöglich ausführen lassen können. Im ersten Teil dieses Tipps hatten wir die Grundlagen gelegt, um Abfragen beim Öffnen einer Datenbank zu prüfen und ggf. ein schneller ausführbares Kompilat zu generieren. Nun kümmern wir uns darum, die automatische Ausführung einzurichten.
FRAGE Da ich in meiner Datenbank Auswahlfelder für Orte getrennt für Postfach und für Straße verwende, die in einer Liste "Orte" zusammengeführt werden, müssen die beteiligten Formulare (Kontaktpersonen, Ort1, Ort2) nach Änderungen oder Neuanlagen gespeichert, d. h. geschlossen werden. Ich möchte hierzu eine Ereignisprozedur einer Schaltfläche Alles speichern programmieren, die alle Formulare schließt und nach dem Öffnen des Formulars "Kontaktpersonen" wieder auf den vor dem Schließen verwendeten Datensatz positioniert. Meine bisherigen Versuche mit "DoCmd.Close" und "DoCmd.OpenForm" führen jedoch nur zu Fehlermeldungen.
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.