Rechnen in Formularen

Es gibt verschiedene Gelegenheiten, in Formularen die Ergebnisse von Rechenoperationen zu präsentieren. Dabei lassen sich viele Berechnungen in Abfragen auslagen, die als Datenherkunft der Formulare dienen, manchmal gelingt dies jedoch nicht. Dieser Artikel zeigt, wie Sie einfache Berechnungen bis hin zu formularübergreifenden Berechnungen durchführen und was Sie dabei beachten müssen.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1202_RechnenInFormularen.mdb.

Einfache Formeln in Textfeldern

Beginnen wir mit einem scheinbar einfachen Beispiel. Im Formular aus Bild 1 finden Sie zwei Textfelder namens txtSummand1 und txtSummand2, die zur Eingabe zweier Summanden dienen. Das Textfeld txtSumme soll die Summe der beiden Werte liefern. Damit dies geschieht, weisen Sie der Eigenschaft Steuerelementinhalt den folgenden Ausdruck zu:

Summieren zweier Textfelder

Bild 1: Summieren zweier Textfelder

=[txtSummand1]+[txtSummand2]

Ein Wechsel in die Formularansicht und die Eingabe zweier Zahlen zeigt, dass dies so nicht funktioniert: Der Plus-Operator addiert die Zahlen nicht, sondern fasst diese als Zeichenfolgen auf und führt die beiden Textketten zusammen (siehe Bild 2). Access geht davon aus, dass ein ungebundenes Textfeld eine Zeichenkette enthält und fügt diese durch den Plus-Operator zusammen. Wenn Sie sicherstellen wollen, dass Access mit Zahlen arbeitet, können Sie den Summanden beispielsweise die Val-Funktion voranstellen (die dann mit Wert übersetzt wird). Der Ausdruck sieht dann etwa so aus:

Zeichenverkettung statt Addition

Bild 2: Zeichenverkettung statt Addition

=Wert([txtSummand1])+Wert([txtSummand2])

Allerdings streikt Access dann, wenn die Textfelder beim öffnen des Formulars keinen Wert enthalten und liefert als Ergebnis einen Ausdruck wie #Typ!.

Fehler bei leeren Feldern

In diesem und in anderen Fällen kann die Wert-Funktion die enthaltenen Null-Werte nicht verarbeiten. Verwenden Sie dann die Nz-Funktion, um für gegebenenfalls leere Textfelder den Wert 0 zu liefern:

=Wert(Nz([txtSummand1];0))+Wert(Nz([txtSummand2];0))

Probleme gibt es hier immer noch, wenn Sie Zahlen mit Nachkommastellen angeben. Die Val-Funktion erkennt nur den Punkt als Dezimaltrennzeichen. Sollten Sie alternativ das Komma als Dezimaltrennzeichen verwenden wollen, was in der deutschen Systemeinstellung eingestellt sein dürfte, können Sie alternativ die Funktion CDbl verwenden, um den vermeintlichen Text in eine Zahl umzuwandeln. Der Punkt als Trennzeichen wird dann allerdings komplett ignoriert – aus 12.5 wird dann 125.

Rechnen mit gebundenen Textfeldern

Viel einfacher wird dies, wenn die Textfelder an Zahlenfelder einer Tabelle gebunden sind. Dies gilt vor allem, weil Access prüft, welchen Datentyp diese Felder haben und automatisch eine Addition statt einer Zeichenverkettung durchführt. Im Beispiel verwenden wir die Tabelle tblZahlen, das zwei Felder namens Zahl1 und Zahl2 enthält. Beide Felder sind als Zahlenfelder mit dem Untertyp Single ausgestattet, um Nachkommastellen zu verarbeiten. Hier brauchen Sie keine Konvertierung mehr durchzuführen. Allerdings sollten Sie die Nz-Funktion einsetzen, um leere Felder als 0 zu verarbeiten. Da es sich um gebundene Felder mit dem Datentyp Zahl handelt, brauchen Sie den zweiten Parameter der Nz-Funktion nicht anzugeben – dieser verwendet in diesem Fall gleich den Wert 0 (siehe Bild 3).

Beispiel für die Addition gebundener Felder

Bild 3: Beispiel für die Addition gebundener Felder

Berechnung in Abfrage auslagern

Sie können die Berechnung auch in eine Abfrage auslagern. Diese wird dann später als Datenherkunft des Formulars angegeben und liefert das Feld mit dem Berechnungsergebnis gleich mit. Eine Abfrage auf Basis der Tabelle tblZahlen, welche die Werte der Felder Zahl1 und Zahl2 addiert, sieht wie in Bild 4 aus.

Addition per Abfrage

Bild 4: Addition per Abfrage

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:

Schreibe einen Kommentar