Home > Artikel > Ausgabe 4/2012 > Daten für die Ausgabe formatieren

Daten für die Ausgabe formatieren

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Die in Ihrer Datenbank gespeicherten und die tatsächlich in Formularen und Berichten angezeigten Daten unterscheiden sich gelegentlich bezüglich ihres Formats. Dies tritt vor allem bei Datumsangaben in Erscheinung, aber auch bei den übrigen Zahlendatentypen. Dieser Artikel zeigt, wie Sie in Formularen und Berichten für das richtige Erscheinungsbild sorgen und stellt die dafür nötigen Funktionen vor.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1204_Format.mdb.

Schein und Sein

Datumswerte sind ein anschauliches Beispiel für den Unterschied zwischen den angezeigten und den tatsächlich gespeicherten Daten. Wenn ein Formularfeld Ihnen den Ausdruck 1.1.2012 präsentiert, wird dieser intern als Zahlwert gespeichert – in diesem Fall 40.909. Dies ist die Anzahl der Tage, die seit dem 30.12.1899 verstrichen sind (dieses Datum entspricht dem Zahlenwert 0). Zeitangaben wie 12:00:00 hingegen werden als Bruchteile eines Tages gespeichert. Ein Tag entspricht dabei dem Wert 1, also entspricht 12:00:00 dem Wert 0,5.

Genau wie Teile des Datums durch Worte ersetzt werden können (Wochentage, Monatsnamen) oder die Uhrzeit durch das Literal Uhr ergänzt wird, versieht Access Währungsangaben mit entsprechenden Einheiten wie EUR/ oder $.

Für die Ausgabe in Formularen oder Berichten legen Sie selbst das Erscheinungsbild mit entsprechenden Eigenschaften oder Funktionen genau fest. Manche Felddatentypen implizieren solche Angaben. So führt zum Beispiel die Festlegung des Felddatentyps Datum/Uhrzeit automatisch dazu, dass die gespeicherten Long/Double-Werte in einem gut lesbaren Format ausgegeben werden, und der Felddatentyp Währung legt nicht nur fest, dass der Datentyp Decimal verwendet wird, sondern auch, wieviele Nachkommastellen angezeigt werden und dass ein Währungssymbol angehängt werden soll.

An dieser Stelle wird auch der Unterschied zwischen Felddatentyp und Datentyp augenscheinlich: Während der Datentyp lediglich den Wertebereich für das Feld festlegt, stellt der Felddatentyp gleich noch weitere Eigenschaften ein. Dazu gehört beispielsweise das Format, in dem die Daten standardmäßig angezeigt werden oder die Anzahl der anzuzeigenden Nachkommastellen (siehe Bild 1).

Die Auswahl des Felddatentyps stellt Feldeigenschaften wie Datentyp, Feldgröße und Format ein.

Bild 1: Die Auswahl des Felddatentyps stellt Feldeigenschaften wie Datentyp, Feldgröße und Format ein.

Unabhängig davon, welche Einstellung der Felddatentyp liefert, können Sie für die Darstellung in Formularen und Berichten beliebige eigene Formatierungen vornehmen. Dafür gibt es einige Spezialfunktionen etwa zum Aufbereiten von Währungs- oder Datumsangaben, aber auch einen Alleskönner: Die Funktion Format biegt Ihre Daten sowohl in der Benutzeroberfläche als auch unter VBA zurecht.

Die Format-Funktion

Diese Funktion erwartet vier Parameter, von denen nur der erste ein Pflichtparameter ist:

Format(, [], , )

Der Parameter Expression enthält den zu formatierenden Wert. Die übrigen drei Parameter sehen so aus:

  • Format (Datentyp String): Erwartet einen Ausdruck mit dem Zielformat.
  • FirstDayOfWeek: Erwartet eine der Konstanten der Enumeration vbDayOfWeek.
  • FirstWeekOfYear: Erwartet eine Konstante der Enumeration vbFirstDayOfWeek.

Wenn die Format-Funktion nun den mit dem Parameter Ausdruck angegebenen Wert entsprechend den mit dem Parameter Format angegebenen Format ausgibt, warum ist der Parameter Format dann ein optionaler Parameter? Die Lösung ist einfach: Die Funktion formatiert den übergebenen Wert auch dann, wenn der Parameter Format keinen Wert enthält. So liefert Format(1.1) beispielsweise den Wert 1,1 – das Dezimalzeichen wird also in das in den Systemeinstellungen festgelegte Zeichen umgewandelt. Der Parameter Format ist der wichtigste Parameter dieser Funktion, daher werden wir diesen in den folgenden Abschnitten genau erläutern. Die beiden übrigen Parameter sind nur für die Formatierung von Datumsangaben wichtig – mehr.dazu in Die Format-Funktion.

Einsatzzwecke

Nehmen wir an, Sie möchten ein Datum mit ausgeschriebenem Monat ausgeben. Dann würden Sie die Format-Funktion wie folgt definieren (dies nur als Vorgriff und als Beispiel für das Aufzeigen der Einsatzzwecke):

Format("1.1.2012", "d. mmmm yyyy")

Das Ergebnis sieht so aus:

1. Januar 2012

Wo können Sie diese Funktion nun überall einsetzen? Am einfachsten gelingt dies im Direktfenster des VBA-Editors (zu öffnen mit der Tastenkombination Strg + G). Dort geben Sie die Funktion einfach mir führendem Debug.Print ein und erhalten direkt das Ergebnis. Dieser Ort eignet sich hervorragend, um die Funktionsweise der Format-Funktion zu testen (siehe Bild 2).

Testen der Format-Funktion im Direktfenster

Bild 2: Testen der Format-Funktion im Direktfenster

In der Praxis können Sie bereits im Tabellenentwurf ein individuelles Format festlegen. Dazu benötigen Sie noch nicht einmal die Format-Funktion. Access stellt nämlich für solche Felddatentypen, bei denen es sinnvoll ist, bereits eine Eigenschaft namens Format zur Verfügung. Dort müssen Sie nur die Formatierungsanweisung eintragen, denn der zu formatierende Wert wird ja durch das entsprechende Feld der Tabelle bereitgestellt. Schauen wir uns das Feld Bestelldatum der Tabelle tblBestellungen an. Dort finden Sie die Eigenschaft Format im Bereich Allgemein vor (siehe Bild 3). Wenn Sie die unter VBA verwendete Variante dort eintragen, also d. mmmm yyyy, wird der Ausdruck in der deutschsprachigen Access-Version gleich in diesen Ausdruck umgewandelt:

Die Format-Eigenschaft im Tabellenentwurf ...

Bild 3: Die Format-Eigenschaft im Tabellenentwurf ...

d. mmmm" yyyy"

Der Grund ist, dass ein deutschsprachiges Access in allen Ausdrücken für Eigenschaften von Tabellen, Abfragen, Formularen, Berichten und Makros die deutsche Variante für Funktionen, Schlüsselwörter und Parameter erwartet. Es versucht hier, die deutsche Version zu ermitteln und scheitert kläglich. Diese muss nämlich so lauten:

t. mmmm jjjj

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!