Ich habe folgendes Problem.
Ich habe von einer früheren Office Version, die Beispieldatenbank Bestellabwicklung. Eigentlich funktioniert alles gut, jedoch gibt es ein Problem mit der Berechnung der Umsatzsteuer, bei mir sind es 2.5%, welche ich auch angegeben habe. Leider rundet die Umsatzsteuer nicht selber auf oder ab. Es soll dies jedoch kaufmännisch machen, also zum Beispiel bei 12.33 Fr. auf 12.35 Fr und bei 12.66 Fr auf 12.65 Fr.
Ich habe schon verschiedenes gegoogelt und versucht aber es klappt einfach nicht.
Folgender Code wurde mir empfohlen: ( neues Modul erstellen unter FndRunden )
Public Function FndRunden(Optional vZahl As Variant _
, Optional iStellen As Integer = 2) As Double
If IsMissing(vZahl) Or Not IsNumeric(vZahl) Or IsNull(vZahl) Then
FndRunden# = 0
Exit Function
End If
FndRunden# = Fix("" & vZahl * 10 ^ iStellen + Sgn(vZahl) * 0.5) _
/ 10 ^ iStellen
'"" & ist kein Fehler, sondern der Haupttrick zwecks Genauigkeit
'Frei nach Karl Donaubauer (www.donkarl.com) FAQ 2.1 RUNDEN
End Function
Public Function FndAufRunden(Optional vZahl As Variant) As Double
If IsMissing(vZahl) Or Not IsNumeric(vZahl) Or IsNull(vZahl) Then
FndAufRunden# = 0
Exit Function
End If
FndAufRunden# = Abs(Int(-1 * Abs(vZahl))) * Sgn(vZahl)
End Function
Public Function FndAbRunden(Optional vZahl As Variant) As Double
If IsMissing(vZahl) Or Not IsNumeric(vZahl) Or IsNull(vZahl) Then
FndAbRunden# = 0
Exit Function
End If
FndAbRunden# = Int(Abs(vZahl)) * Sgn(vZahl)
End Function
Danach sollte ich folgendes beim Formular eingeben :=FndRunden(([Frachtkosten]+[Bestellzwischensumme])*[UmsatzsteuerSatz])
Nun das Problem, sobald ich dies eingebe bei der Umsatzsteuer erscheint folgendes im Formularfeld: #Name?
Ich bin schon ziemlich am verzweifeln, was mache ich falsch?
Kann mir jemand weiterhelfen? Liegt es evtl. daran, dass die Datenbank nun auf Access 2010 läuft?
Hi,
hast Du überprüft, ob die Namen identisch sind zwischen denen im Formular und in der Formel?
Die Funktion liefert Werte. Die kaufmännische Rundung habe ich anders verstanden.
siehe: http://www.gutefrage.net/frage/unterschied-kaufmaennisch-und-mathematisches-runden
"Das Kaufmännische Runden geschieht wie folgt: Ist die Ziffer an der ersten wegfallenden Dezimalstelle eine 0,1,2,3 oder 4, dann wird abgerundet. Ist die Ziffer an der ersten wegfallenden Dezimalstelle eine 5,6,7,8 oder 9, dann wird aufgerundet.
Diese Rundungsregel wird durch die Norm DIN 1333 beschrieben. Das Runden wird so auch häufig in der Schule gelehrt."
Zusätzlich würde ich noch nz einbauen, um bei Null-Werten sicher zu sein:
=FndRunden((nz([Frachtkosten];0)+nz([Bestellzwischensumme];0))*[UmsatzsteuerSatz])
Und noch eine Frage:
Speicherst Du die berechnete Umsatzsteuer womöglich ab?
Hintergrund der Frage ist, dass solch eine Formel statt im Formular in einer Abfrage gut aufgehoben ist.
Harald
Hallo,
vermutlich liegt der eigentliche Fehler hier:
ZitatFolgender Code wurde mir empfohlen: ( neues Modul erstellen unter FndRunden )
Das Modul darf NICHT den gleichen Namen haben wie eine der Funktionen/Subs