Abfragen zeigen in der Regel die Felder der zugrunde liegenden Tabellen in ihren Spalten an. Manchmal liefern diese Felder jedoch nicht genau die gewünschten Daten – beispielsweise, weil wir in einer Spalte einer Abfrage den kompletten Namen eines Kunden in der Form “Minhorst, André” darstellen wollen. Oder wir möchten nicht den Inhalt eines Datumsfeldes, sondern nur die dort enthaltene Jahreszahl ausgeben. Ein anderes Beispiel sind echte Berechnungen wie beispielsweise der Preis für eine Bestellposition, der sich aus dem Einzelpreis, der Menge und dem Mehrwertsteuersatz zusammensetzt. Wie Du solche Berechnungen in Abfragen realisieren kannst, zeigt dieser Artikel.
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank 2204_BerechneteFelder.accdb.
Was sind “Berechnete Felder”
“Berechnete Felder” ist eigentlich ein irreführender Ausdruck. Zwar ist ein Zweck von berechneten Feldern auch das Anstellen von Berechnungen, wie in der Einleitung am Beispiel von Preisen von Bestellpositionen. Allerdings würden wir es eher als Ausdruck bezeichnen, denn nicht immer enthält ein berechnetes Feld auch eine mathematische Berechnung.
Unter den Begriff “Berechnete Felder in Abfragen” gehören auch das Zusammenführen der Inhalte mehrerer Felder wie zum Beispiel für die Kombination aus Anrede und Nachname oder auch der Einsatz von VBA-Funktionen, die auf den Inhalt anderer Felder angewendet werden. Schon den Einsatz der Funktion Datum() als Wert eines Feldes würden wir als berechnetes Feld bezeichnen, und das Gleiche gilt für Felder, in denen eine VBA-Funktion den Inhalt anderer Felder als Parameter verwendet – zum Beispiel =Jahr(Bestelldatum) zum Ausgeben der Jahreszahl eines Bestelldatums.
Und es wird noch spannender: Wir können nicht nur die eingebauten Funktionen von VBA zur Berechnung von Ausdrücken in Abfragen nutzen, sondern sogar benutzerdefinierte Funktionen dort einsetzen. Wenn die VBA-Bibliothek also nicht die passende Funktion bietet, bauen wir uns diese einfach selbst zusammen. Wie all dies funktioniert, schauen wir uns in den folgenden Abschnitten an.
Berechneter Ausdruck auf Basis von Abfragefeldern
Als erstes Beispiel wollen wir eine tatsächliche mathematische Berechnung durchführen, und zwar zur Ermittlung des Preises einer Position einer Bestellung. Dazu erstellen wir eine neue Abfrage und fügen die Tabelle tblBestellpositionen zum Abfrageentwurf hinzu.
Dann ziehen wir aus dieser Tabelle die Felder ID, Einzelpreis und Menge in das Entwurfsraster. Schließlich fügen wir das gewünschte berechnete Feld hinzu, indem wir einfach in der nächsten leeren Spalte den folgenden Ausdruck eintragen:
Preis: [Einzelpreis]*[Menge]
Dann speichern wir die Abfrage unter dem Namen qryEinzelpreisMalMenge. Der Abfrageentwurf sieht nun wie in Bild 1 aus.
Bild 1: Beispiel für ein berechnetes Feld
Schauen wir uns nun das Ergebnis in der Datenblattansicht an, erhalten wir die korrekt berechneten Werte wie in Bild 2.
Bild 2: Das berechnete Feld in der Datenblattansicht
Zur Berechnung herangezogene Felder, wie in diesem Beispiel die Felder Einzelpreis und Menge, müssen übrigens nicht zum Entwurfsraster hinzugefügt und dementsprechend auch nicht angezeigt werden. Für die Berechnung reicht die Angabe des berechneten Feldes allein. Die Felder Einzelpreis und Menge haben wir nur hinzugefügt, damit wir das Ergebnis der Berechnung kontrollieren können.
Berechnung um Mehrwertsteuer erweitern
In manchen Rechnungen landen die Mehrwertsteuer beziehungsweise der Bruttobetrag erst im Endergebnis mit der Summe aller Positionen einer Bestellung. Wir können den Bruttobetrag allerdings auch direkt zu jeder Zeile hinzufügen – genau wie den Betrag der Mehrwertsteuer. Das haben wir im Beispiel aus Bild 3 erledigt. Dabei haben wir die folgenden berechneten Ausdrücke verwendet:
Bild 3: Berechnete Felder für Nettopreis, Mehrwertsteuerbetrag und Bruttopreis
- Nettopreis: [Einzelpreis]*[Menge]
- MwSt: [Einzelpreis]*[Menge]*[Mehrwertsteuersatz]
- Bruttopreis: [Einzelpreis]*[Menge]*(1+[Mehrwertsteuersatz])
Das Ergebnis findest Du in Bild 4.
Bild 4: Berechnung von Netto- und Bruttopreis sowie des Mehrwertsteuerbetrags
Name für den berechneten Ausdruck
Normalerweise zeigt ein Abfrageergebnis als Spaltenüberschrift den Namen des Feldes an, der für diese Spalte festgelegt ist. Wenn wir einen berechneten Ausdruck nutzen, kann dieser sich auf mehrere Felder beziehen oder auch auf gar kein Feld der zugrunde liegenden Tabelle. Deshalb gibt man in der Regel einen benutzerdefinierten Feldnamen an. Geschieht das nicht, erledigt Access die Aufgabe und vergibt Namen wie Ausdr1, Ausdr2 und so weiter.
Der Name des berechneten Feldes wird durch einen Doppelpunkt vom eigentlichen Ausdruck getrennt.
Berechnete Felder mit dem Inhalt von Textfeldern
Neben mathematischen Berechnungen verwenden wir berechnete Felder sehr oft zum Verknüpfen der Inhalte von Textfeldern. Wenn wir zu irgendeinem Zweck, beispielsweise zur Anzeige in einem Kombinationsfeld, den Vor- und den Nachnamen eines Kunden zusammen anzeigen wollen, können wir das in einem naiven, ersten Ansatz wie in Bild 5 erledigen.
Bild 5: Berechnetes Feld mit Texten
Hier geben wir hinter der Bezeichnung Kunde als Name des berechneten Feldes das Feld Vorname gefolgt vom Operator & und das Feld Nachname an. Statt mathematischer Operatoren wie Plus, Minus et cetera können wir also auch Textoperatoren wie das Kaufmanns-Und (&) verwenden.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: