Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Abfragen sind nicht darauf beschränkt, nur Felder aus einer Tabelle auszugeben oder nach Feldern aus einer Tabelle zu sortieren oder zu filtern. Wir können auch mehrere Tabellen in einer Abfrage zusammenfassen und die Daten dieser Tabellen ausgeben, filtern und sortieren. Dabei gibt es verschiedene Möglichkeiten: Wir können alle Kombinationen aus Daten verschiedener Tabellen ausgeben, wir können nur die verknüpften Datensätze von Tabellen liefern oder auch die Daten einer Tabelle liefern – unabhängig davon, ob in der verknüpften Tabelle auch verknüpfte Datensätze zur ersten Tabelle vorhanden sind. All diese Techniken schauen wir uns im vorliegenden Artikel an.
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank AbfragenBasics_VerknuepfteUndUnverknuepfteTabellenGezieltNutzen.accdb.
Beliebige Kombinationen aus den Daten zweier Tabellen ermitteln
Dies ist zum Beispiel sinnvoll, wenn Du alle möglichen Datumsangaben bestehend aus Monaten und Jahren kombinieren möchtest. Dazu benötigen wir eine Tabelle namens tblJahre, die alle anzuzeigenden Jahre enthält, und eine namens tblMonate, welche die zwölf Monate beisteuert. Wir erstellen die beiden Tabellen, und um Zeit zu sparen, lassen wir die Werte per VBA eintragen. Erst einmal die Monate, wobei wir die Nummer des Monats von 1 bis 12 eintragen und den Namen des Monats mit der VBA-Funktion MonthName ermitteln und in das Feld Monatsname eintragen:
Public Sub MonateSchreiben() Dim db As DAO.Database Dim i As Integer Set db = CurrentDb For i = 1 To 12 db.Execute "INSERT INTO tblMonate(Monat, " _ & "Monatsname) VALUES(" & i & ", '" _ & MonthName(i) & "')", dbFailOnError Next i End Sub
Danach schreiben wir die Jahre in die Tabelle tblJahre, hier für die Jahre von 2020 bis 2030:
Public Sub JahreSchreiben() Dim db As DAO.Database Set db = CurrentDb Dim i As Integer For i = 2020 To 2030 db.Execute "INSERT INTO tblJahre(Jahr) " _ & "VALUES(" & i & ")", dbFailOnError Next i End Sub
Die beiden Prozeduren können wir einfach in ein Standardmodul schreiben und mit F5 ausführen.Damit erhalten wir die Tabellen wie in Bild 1.
Bild 1: Tabellen mit Monaten und Jahren
Wir wollen nun in einer Abfrage alle Kombinationen aus Monaten und Jahren ausgeben, und zwar aufsteigend sortiert nach dem Jahr und dem Monat. Die Felder sollen aber in der Reihenfolge Monat/Jahr ausgegeben werden.
Dazu erstellen wir eine neue, leere Abfrage in der Entwurfsansicht und ziehen die beiden Tabellen tblMonate und tblJahre hinein. Damit erreichen wir, dass die Abfrage grundsätzlich jede Kombination aus Monaten und Jahren ausgibt. Damit sie auch in Abfrageergebnis erscheinen, fügen wir die beiden Felder Monat und Jahr zum Entwurfsraster hinzu. Wenn wir nun in die Datenblattansicht wechseln, sehen wir die Daten allerdings in der Standardsortierung, also zunächst aufsteigend nach dem Monat und dann nach dem Jahr. Wir wollen aber, dass zuerst 1-2020, 2-2020 und so weiter angezeigt werden.Dazu fügen wir das Feld Monat ein weiteres Mal hinzu und sortieren dann aufsteigend nach der zweiten und der dritten Spalte, also erst nach dem Jahr und dann nach dem Monat. Da die dritte Spalte nur als Sortierkriterium dient und nicht angezeigt werden soll, entfernen wir den Haken in der Zeile Anzeigen für diese Spalte (siehe Bild 2).
Bild 2: Abfrage zur Kombination von Monaten und Jahren
Die Datenblattansicht sieht nun wie in Bild 3 aus.
Bild 3: Anzeige von Monaten und Jahren in der gewünschten Reihenfolge
Anzeige von Monatsname und Jahr
Im nächsten Beispiel wollen wir die gleichen Daten im Format Januar 2020, Februar 2020 und so weiter anzeigen. Dazu verwenden wir den Entwurf aus Bild 4.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo
![Access [basics]](https://access-basics.de/wp-content/uploads/2021/02/logo400.png)


