Access - Funktion zum kaufmännischen Runden

Funktion zum kaufmännischen Runden

Um Werte gerundet auszugeben, müss man eine eigene, benutzerdefinierte Funktion schreiben, die man z. B. in Abfragen oder in VBA-Prozeduren einsetzen kann. Es stimmt, dass in Access 2000 die VBA-Funktion "Round" eingeführt wurde. Doch die liefert zum Teil merkwürdige Resultate, weshalb sie für eine sinnvolle Rundung ausscheidet.

Probieren Sie es aus, indem Sie den Visual Basic-Editor mit Alt+F11 aus Access heraus starten. Lassen Sie sich dann über das Menü Ansicht das Direktfenster anzeigen. Darin geben Sie folgendes ein: ?Round(3.5) Nach einem Druck auf die Return-Taste erhalten Sie das auf eine ganze Zahl gerundete Ergebnis "4". Das ist korrekt. Versuchen Sie es dann aber noch einmal mit ?Round(4.5) Wieder ist das Ergebnis "4", was offensichtlich nicht der kaufmännischen Rundung entspricht. Wenn man auf ganze Zahlen (ohne Nachkommastellen) rundet, liefert "Round" immer nur gerade Zahlen.

Ebenfalls unbrauchbar für die Rundung ist der Einsatz eines Zahlenformats mit der entsprechenden Anzahl an Nachkommastellen, wie es beispielsweise im Währungsformat umgesetzt wird. Dabei kann es zu Diskrepanzen zwischen Anzeigegenauigkeit und Rechengenauigkeit kommen, denn intern rechnet Access immer mit den tatsächlich vorhandenen Werten. Es führt also kein Weg an einer benutzerdefinierten Funktion vorbei. Die im Anschluß vorgestellte Funktion erlaubt sogar die Angabe der Stellen, auf die gerundet werden soll, wobei als Standardwert "0" vorgegeben wird.

Man legt ein neues leeres Modul auf dem Datenbankregister "Module" an. Im Codefenster gibt man folgende Zeilen ein:

Public Function funcRunden(Wert, Optional Stellen = 0) As Double
  funcRunden = Sgn(Wert) * Int(Abs(Wert) * (10 ^ Stellen) + 0.5) / (10 ^ Stellen)
End Function

Nachdem man das Modul gespeichert hat, steht die Funktion in der gesamten Datenbank - also zum Beispiel auch in Abfragen - zur Verfügung. Sie könnten auf diese Weise ein berechnetes Abfragefeld anlegen, das bei einer Bestelltabelle mit den Feldern "Einzelpreis" und "Anzahl" wie folgt aussieht:

 RundeSumme: funcRunden([Einzelpreis]*[Anzahl];2)

Das Produkt aus Einzelpreis und Anzahl wird damit auf zwei Nachkommastellen gerundet, und zwar so, dass Access auch intern anschließend nur noch mit dieser Genauigkeit rechnet.

Mehr Tipps: Access - Liste aller angemeldeten Anwender

Sponsoren und Investoren

Sponsoren und Investoren sind jederzeit herzlich willkommen!
Wenn Sie die Information(en) auf dieser Seite interessant fanden, freuen wir uns über eine kleine Spende. Empfehlen Sie uns bitte auch in Ihren Netzwerken (z. B. Twitter, Facebook oder Google+). Herzlichen Dank!

Nach oben Sitemap
Impressum & Kontakt