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.
Im ersten Teil dieses Tipps hatten wir zur zeilenweisen Sortierung von Memo-, Listen- und Kombinationsfeldern zunächst die Basis in Form der Prozedur "QuickSortArray" geschaffen und gezeigt, wie Sie eine Schaltfläche und ein Kontrollkästchen in ein Formular zur wahlweise auf- oder absteigenden Sortierung der Zeilen eines Memofeldes einbauen. Im zweiten Teil geht es nun um den Einsatz dieser Prozedur mit Listen- und Kombinationsfeldern.
Manchmal verweigert Access beim Öffnen einer Datenbank den Zugriff mit einer Fehlermeldung, nach der die Datenbank beschädigt ist und repariert werden muss. Der daraufhin durchgeführte Reparaturdurchgang erlaubt zwar anschließend das Öffnen der Datenbank, beim Zugriff auf einzelne Objekte werden aber weiterhin Fehlermeldungen angezeigt oder Access stürzt sogar komplett ab. Bevor Sie in solchen Fällen die betreffenden Objekte löschen und neu aufbauen, sollten Sie folgenden "Reparaturversuch" unternehmen.
FRAGE Ich nutze ein Formular mit einem Unterformular und möchte nun per VBA die Datensätze aus beiden Formularen kopieren. Das funktioniert auch, aber es kann natürlich vorkommen, dass das Unterformular mehr als einen Datensatz hat. Ich suche nun nach einer Möglichkeit, das Unterformular programmatisch anzusprechen und es den nächsten Datensatz positionieren. Am sinnvollsten würde ich in einer Schleife immer aller Datensätze nacheinander durchlaufen. Wie muss ich dazu vorgehen?
Die Eigenschaft Tabledefs(<Tabelle>).Connect wird in vielen Datenbanken verwendet, um zum Beispiel den Connection-String von Pass-Through-Abfragen zu definieren. Nach dem Microsoft 365-Update auf die Version 2312 im aktuellen Kanal (Current Channel) am 4.1.2024 funktionierten mit einem Schlag plötzlich die meisten Datenbanken mit einem SQL Server-Backend nicht mehr. Der Grund: die .Connect-Eigenschaft verschluckte einfach das erste Semikolon im Connection-String, so dass zum Beispiel aus "ODBC;DSN" plötzlich "ODBCDSN" wird. Der Bug wurde inzwischen von Microsoft behoben.
In Ihren Datenbanken verwenden Sie regelmäßig Memofelder, in denen Informationen zeilenweise abgelegt sind. Wenn Sie den Inhalt eines solchen Memofeldes sortieren möchten, finden Sie dazu in Access oder VBA keine Unterstützung. Ähnliches gilt für Listenfelder, die Sie per "AddItem" aus einem Array aufbauen oder für Kombinationsfelder, bei denen Sie aus einem Array eine Werteliste zusammensetzen und zuweisen möchten. Auch für diese Steuerelemente suchen Sie vergeblich nach einer Sortierfunktion. In diesem zweiteiligen Tipp stellen wir eine Lösung vor, die Sie zukünftig für alle Sortieraufgaben in Ihren Datenbanken heranziehen können.
FRAGE Aus einem Listenfeld (Listbox) mit den Feldern "Kundennummer" (Autowert, bei der Eingabe gesetzt) und "Kundenname", ca. 100 Einträge, möchte ich durch Anklicken des Kundennamens diesen Namen in den Report "Daten des Kunden" übertragen. Hinter diesem Report steht eine Abfrage gleichen Namens, die in dem Feld "Kundenname" als Kriterium "[Kundenname].[Name]" hat. Bei normalem Aufruf des Reports erscheint ein Fenster, in dem nach dem Kundenamen gefragt wird. Diese zusätzliche Eingabe möchte ich vermeiden, und durch das Anklicken aus dem Listenfeld ersetzen.
Bei der Entwicklung von Datenbanken werden oft SQL-Anweisungen eingesetzt - beispielsweise per VBA und "DoCmd.RunSQL" oder "CurrentDb.Execute". In vielen Fällen bietet es sich an, zunächst eine "normale" Abfrage zu entwerfen, und die SQL-Entsprechung dann in den VBA-Editor zu übernehmen. Genau diese Aufgabe nimmt Ihnen in Zukunft das kostenlose SmartTools SQL aus Abfragen 5.1 ab. Nach dem Aufruf zeigt das Add-In zu jeder Abfrage Ihrer Datenbank automatisch die zugehörige SQL-Anweisung, die Sie dann per Mausklick fertig formatiert in Ihr VBA-Modul übernehmen.
In Access können Sie in der Datenblattansicht von Tabellen standardmäßig Felder per Kontextmenü hinzufügen, löschen oder umbenennen oder Nachschlagefelder einrichten/entfernen. Diese Funktionen sollten weniger erfahrenen Anwendern nicht unbedingt zur Verfügung stehen, damit sie keine Änderungen an Tabellenstrukturen vornehmen können. Unser Tipp: Über wenig bekannte Einstellungen in den Access-Optionen können Sie diese Komntextmenüs schnell deaktivieren.
Bei der Entwicklung von Datenbanken werden oft SQL-Anweisungen eingesetzt - beispielsweise per VBA und "DoCmd.RunSQL" oder "CurrentDb.Execute". In vielen Fällen bietet es sich an, zunächst eine "normale" Abfrage zu entwerfen, und die SQL-Entsprechung dann in den VBA-Editor zu übernehmen. Genau diese Aufgabe nimmt Ihnen in Zukunft das kostenlose SmartTools SQL aus Abfragen 5.1 ab. Nach dem Aufruf zeigt das Add-In zu jeder Abfrage Ihrer Datenbank automatisch die zugehörige SQL-Anweisung, die Sie dann per Mausklick fertig formatiert in Ihr VBA-Modul übernehmen.
Bei der täglichen Arbeit mit Datenbanken sind schnell mehrere Formulare zur Bearbeitung von Daten und Berichte zur Kontrolle in der Seitenvorschau gleichzeitig geöffnet und man findet nichts mehr wieder. Ordnung schaffen Sie mit einer VBA-Prozedur, die wir in diesem Tipp vorstellen. Sie bauen die Lösung in Ihre Formulare ein und mit einem Mausklick werden alle Formulare bis auf das geschlossen, aus dem Sie die Prozedur aufgerufen haben.
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.