Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Access 2010 runden

Begonnen von benji, September 06, 2013, 06:22:37

⏪ vorheriges - nächstes ⏩

benji

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?

bahasu

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



Servus

DF6GL

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