Berechnete Felder in Tabellen oder besser in Abfragen?

Seit Access 2010 können Tabellenfelder einen berechneten Ausdruck enthalten – etwa die Verknüpfung von Vor- und Nachname oder das Produkt aus Menge und Preis. Die Funktion klingt praktisch, hat aber erhebliche Einschränkungen: Viele Funktionen stehen nicht zur Verfügung, das Ergebnis ist schreibgeschützt und berechnete Felder lassen sich weder indizieren noch in Verknüpfungen verwenden. Dieser Beitrag zeigt, was geht, was nicht geht – und warum berechnete Spalten in Abfragen fast immer die bessere Wahl sind.

Was sind berechnete Felder in Tabellen?

Ein berechnetes Feld ist ein Tabellenfeld mit dem Datentyp Berechnet. Statt eines gespeicherten Werts trägt es in der Feldeigenschaft Ausdruck eine Formel, die Access bei jeder Änderung der Quelldaten neu berechnet. Das Ergebnis erscheint in der Datenblattansicht und steht auch in Abfragen, Formularen und Berichten zur Verfügung, ohne dass dort erneut gerechnet werden muss.

Das einfachste Beispiel ist die Zusammensetzung eines vollständigen Namens. Hat eine Tabelle die Felder Vorname und Nachname, lässt sich ein Feld VollerName so berechnen:

[Vorname] & " " & [Nachname]

Die Eigenschaften tragen wir wie in Bild 1 ein.

Ein berechnetes Feld im Tabellenentwurf - der Ausdruck wird in der Eigenschaft Ausdruck eingetragen, der Datentyp des Ergebnisses unter Ergebnistyp.

Bild 1: Ein berechnetes Feld im Tabellenentwurf – der Ausdruck wird in der Eigenschaft Ausdruck eingetragen, der Datentyp des Ergebnisses unter Ergebnistyp.

Nach einem Wechsel in die Datenblattansicht erhalten wir das Ergebnis aus Bild 2.

Das berechnete Feld VollerName erscheint in der Datenblattansicht und steht automatisch in allen darauf basierenden Abfragen und Formularen bereit.

Bild 2: Das berechnete Feld VollerName erscheint in der Datenblattansicht und steht automatisch in allen darauf basierenden Abfragen und Formularen bereit.

Welche Elemente sind in berechneten Tabellenfeldern erlaubt?

Der wichtigste Unterschied zu berechneten Spalten in Abfragen ist der stark eingeschränkte Funktionsumfang. Als Faustregel gilt: Nur die Funktionen, die der Ausdrucks-Generator beim Erstellen eines berechneten Tabellenfeldes anbietet, funktionieren dort auch tatsächlich. Alle anderen werden beim Speichern mit einem Fehler abgewiesen.

  • Operatoren: Arithmetische Operatoren (+, -, *, /), Vergleichsoperatoren (=, <, >, <=, >=, <>), Textverkettung (&), logische Operatoren (And, Or, Not).
  • Verfügbare Funktionen (Auswahl): Textfunktionen: Left, Right, Mid, Len, Trim, LTrim, RTrim, UCase, LCase, InStr, Replace, Str, Val. Mathematische Funktionen: Abs, Int, Round, Sqr, Mod. Datumsfunktionen: Year, Month, Day, Weekday, DateSerial. Prüffunktionen: IIf, IsNull, IsNumeric, Nz.
  • Nicht verfügbar (Auswahl): Date(), Now(), DateDiff(), DateAdd(), Format(), CDate(), DLookup() und alle anderen Domänenfunktionen (DSum, DCount usw.) sowie alle eigenen VBA-Funktionen. Ausdrücke, die auf Felder aus anderen Tabellen oder Abfragen zugreifen, sind ebenfalls nicht möglich.

Die möglichen Elementen werden im Ausdrucks-Generator aufgelistet, den wir mit einem Klick auf die Schaltfläche mit den drei Punkten öffnen.

Der Ausdrucks-Generator zeigt im Kontext eines berechneten Tabellenfeldes nur die tatsächlich verfügbaren Funktionen – alles, was dort nicht aufgeführt ist, wird beim Speichern abgewiesen (siehe Bild 3).

Der Ausdrucksgenerator mit einer Datumsberechnung

Bild 3: Der Ausdrucksgenerator mit einer Datumsberechnung

Typische Ausdrücke für berechnete Felder

Arithmetische Ausdrücke auf Basis von Feldern derselben Tabelle funktionieren zuverlässig. In einer Bestellposition mit den Feldern Menge und Einzelpreis liefert der folgende Ausdruck den Gesamtpreis:

[Menge] * [Einzelpreis]

Auch bedingte Ausdrücke mit IIf sind möglich, solange alle Argumente Feldwerte oder Konstanten sind. Der folgende Ausdruck berechnet einen Mengenrabatt:

IIf([Menge] >= 10, [Einzelpreis] * 0.9, [Einzelpreis])

Für Datumsberechnungen gilt: Funktionen, die das aktuelle Datum liefern, stehen nicht zur Verfügung. Einfache Differenzen zwischen zwei Datumsfeldern sind jedoch möglich, da Access Datumswerte intern als Zahlen speichert. Hat eine Tabelle die Felder Bestelldatum und Lieferdatum, lässt sich die Lieferdauer in Tagen direkt berechnen:

Seit Access 2010 können Tabellenfelder einen berechneten Ausdruck enthalten – etwa die Verknüpfung von Vor- und Nachname oder das Produkt aus Menge und Preis. Die Funktion klingt praktisch, hat aber erhebliche Einschränkungen: Viele Funktionen stehen nicht zur Verfügung, das Ergebnis ist schreibgeschützt und berechnete Felder lassen sich weder indizieren noch in Verknüpfungen verwenden. Dieser Beitrag zeigt, was geht, was nicht geht – und warum berechnete Spalten in Abfragen fast immer die bessere Wahl sind.

Was sind berechnete Felder in Tabellen?

Ein berechnetes Feld ist ein Tabellenfeld mit dem Datentyp Berechnet. Statt eines gespeicherten Werts trägt es in der Feldeigenschaft Ausdruck eine Formel, die Access bei jeder Änderung der Quelldaten neu berechnet. Das Ergebnis erscheint in der Datenblattansicht und steht auch in Abfragen, Formularen und Berichten zur Verfügung, ohne dass dort erneut gerechnet werden muss.

Das einfachste Beispiel ist die Zusammensetzung eines vollständigen Namens. Hat eine Tabelle die Felder Vorname und Nachname, lässt sich ein Feld VollerName so berechnen:

[Vorname] & " " & [Nachname]

Die Eigenschaften tragen wir wie in Bild 1 ein.

Ein berechnetes Feld im Tabellenentwurf - der Ausdruck wird in der Eigenschaft Ausdruck eingetragen, der Datentyp des Ergebnisses unter Ergebnistyp.

Bild 1: Ein berechnetes Feld im Tabellenentwurf – der Ausdruck wird in der Eigenschaft Ausdruck eingetragen, der Datentyp des Ergebnisses unter Ergebnistyp.

Nach einem Wechsel in die Datenblattansicht erhalten wir das Ergebnis aus Bild 2.

Das berechnete Feld VollerName erscheint in der Datenblattansicht und steht automatisch in allen darauf basierenden Abfragen und Formularen bereit.

Bild 2: Das berechnete Feld VollerName erscheint in der Datenblattansicht und steht automatisch in allen darauf basierenden Abfragen und Formularen bereit.

Welche Elemente sind in berechneten Tabellenfeldern erlaubt?

Der wichtigste Unterschied zu berechneten Spalten in Abfragen ist der stark eingeschränkte Funktionsumfang. Als Faustregel gilt: Nur die Funktionen, die der Ausdrucks-Generator beim Erstellen eines berechneten Tabellenfeldes anbietet, funktionieren dort auch tatsächlich. Alle anderen werden beim Speichern mit einem Fehler abgewiesen.

  • Operatoren: Arithmetische Operatoren (+, -, *, /), Vergleichsoperatoren (=, <, >, <=, >=, <>), Textverkettung (&), logische Operatoren (And, Or, Not).
  • Verfügbare Funktionen (Auswahl): Textfunktionen: Left, Right, Mid, Len, Trim, LTrim, RTrim, UCase, LCase, InStr, Replace, Str, Val. Mathematische Funktionen: Abs, Int, Round, Sqr, Mod. Datumsfunktionen: Year, Month, Day, Weekday, DateSerial. Prüffunktionen: IIf, IsNull, IsNumeric, Nz.
  • Nicht verfügbar (Auswahl): Date(), Now(), DateDiff(), DateAdd(), Format(), CDate(), DLookup() und alle anderen Domänenfunktionen (DSum, DCount usw.) sowie alle eigenen VBA-Funktionen. Ausdrücke, die auf Felder aus anderen Tabellen oder Abfragen zugreifen, sind ebenfalls nicht möglich.

Die möglichen Elementen werden im Ausdrucks-Generator aufgelistet, den wir mit einem Klick auf die Schaltfläche mit den drei Punkten öffnen.

Der Ausdrucks-Generator zeigt im Kontext eines berechneten Tabellenfeldes nur die tatsächlich verfügbaren Funktionen – alles, was dort nicht aufgeführt ist, wird beim Speichern abgewiesen (siehe Bild 3).

Der Ausdrucksgenerator mit einer Datumsberechnung

Bild 3: Der Ausdrucksgenerator mit einer Datumsberechnung

Typische Ausdrücke für berechnete Felder

Arithmetische Ausdrücke auf Basis von Feldern derselben Tabelle funktionieren zuverlässig. In einer Bestellposition mit den Feldern Menge und Einzelpreis liefert der folgende Ausdruck den Gesamtpreis:

[Menge] * [Einzelpreis]

Auch bedingte Ausdrücke mit IIf sind möglich, solange alle Argumente Feldwerte oder Konstanten sind. Der folgende Ausdruck berechnet einen Mengenrabatt:

IIf([Menge] >= 10, [Einzelpreis] * 0.9, [Einzelpreis])

Für Datumsberechnungen gilt: Funktionen, die das aktuelle Datum liefern, stehen nicht zur Verfügung. Einfache Differenzen zwischen zwei Datumsfeldern sind jedoch möglich, da Access Datumswerte intern als Zahlen speichert. Hat eine Tabelle die Felder Bestelldatum und Lieferdatum, lässt sich die Lieferdauer in Tagen direkt berechnen:

Access im Unternehmen

Unser exklusives Angebot für Dich!

Access im Unternehmen
13,25 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →