Probleme mit dem Runden-Befehl

Hallo,

ich verwende in einem Formular eine Formel, die sehr viele ineinandergeschachtelte Runden-Befehle enthält (Geldbeträge werden vor jedem Weiterrechnen gerundet). Die Formel habe ich vorher unter Excel getestet, da hat sie funktoniert - unter Access weicht der Wert des berechneten Feldes manchmal um eine Nachkomma-Stelle vom richtigen Betrag ab, rundet also nicht richtig. Ich dachte bisher immer, Access kann runden mittlerweile (Access XP), oder liege ich da falsch?

Danke für die Antworten schon im voraus,
Fabian

Hallo,

ich verwende in einem Formular eine Formel, die sehr viele
ineinandergeschachtelte Runden-Befehle enthält (Geldbeträge
werden vor jedem Weiterrechnen gerundet). Die Formel habe ich
vorher unter Excel getestet, da hat sie funktoniert - unter
Access weicht der Wert des berechneten Feldes manchmal um eine
Nachkomma-Stelle vom richtigen Betrag ab, rundet also nicht
richtig. Ich dachte bisher immer, Access kann runden
mittlerweile (Access XP), oder liege ich da falsch?

Hallo auch
Es gbt einen Unterschied zwischen der Zahl die Access anzeigt und der mit der gerechnet wird.
(Nachkommastellenanzahl des Anzeigefeldes erhöhen und nachschaun)
Die Round() Funktion hat den Parameter Dezimalstellen …
Round(, )
da kannst du nach Bedarf die Dezimalstellen festlegen.
Es ist auch so, dass Access die Daten (je nach Feldtyp) mit mehr Nachkommastellen abspeichert als üblicherweise angezeigt wird.
Also evtl. die Werte vor dem Speichern bereits runden!(für nur kaufmännisches Rechnen)

Hoffe es hilft
Stefan

Hallo,

etwas ähnliches dachte ich mir bereits. Allerdings habe ich bereits eingestellt, daß Round() auf zwei Nachkommastellen runden soll. Hilft nichts. Jetzt werde ich die Zwischenwerte einfach als EURO-Format in Extra-Feldern abspeichern - diese Werte kann ich sowieso zur Kontrolle von Werten benutzen, die ich bekomme und die mit meinen Werten übereinstimmen müssen. Insofern ärgerlich, aber nicht schlimm.

Trotzdem danke für die Hilfe
Gruß
Fabian

Hallo,

Es ist auch so, dass Access die Daten (je nach Feldtyp) mit
mehr Nachkommastellen abspeichert als üblicherweise angezeigt
wird.
Also evtl. die Werte vor dem Speichern bereits runden!(für nur
kaufmännisches Rechnen)

Habe leider trotz Aufteilen der Werte auf mehrere Felder keinen Erfolg, Access rechnet immer noch mit den vollen Zahlen. Du schreibst, man müsse in diesem Fall die Werte bereits vor dem Speichern runden, was meinst Du damit? Die Werte entstehen aus Formeln, ich kann also keine bereits gerundeten Werte eingeben.

Vielen Dank für Deine Hilfe, dachte wirklich, ich könnte den Rest allein - leider doch nicht.

Gruß
Fabian

Hallo

Das folgende meinem Fundus:

…schnipp…

Es kursiert leider die Fehlinformation, dass die Access-Funktion „CCur()“ (Konvertiere in Währung) eine korrekte kaufmännische Rundung vornimmt. Dem ist aber nicht so. Wenn Sie einmal im Direktbereich

? Round(CCur(34.845), 2)

eingeben, wird in Access 2000, 2002 und 2003 als Ergebnis „34,84“ ausgegeben. Geben Sie die gleiche Anweisung in Access 97 mit „unserer“ Funktion „Round()“ ein, wird das korrekte Ergebnis „34,85“ berechnet. Um auch in Access 2000, 2002 und 2003 korrekt kaufmännisch zu runden, verwenden Sie zur Vermeidung von Namenskonflikten eine anders benannte Variante unserer Funktion:

Function Runden(varWert As Variant, _
intDezStellen As Integer) As Currency
Dim dblDez As Double
Dim dblTemp1 As Double, dblTemp2 As Double

On Error GoTo FehlerBeimRunden

varWert = CCur(varWert)
dblDez = 10 ^ intDezStellen
dblTemp1 = Abs(varWert) * dblDez + 0.5
dblTemp2 = Int("" & dblTemp1) / dblDez
If Abs(varWert) varWert Then
Runden = dblTemp2 * -1
Else
Runden = dblTemp2
End If

EndeRunden:
Exit Function

FehlerBeimRunden:
Runden = 0
Resume EndeRunden

End Function

In Ihren VBA-Routinen ersetzen Sie dann den Aufruf von „Round()“ durch den Aufruf von „Runden()“.

…schnapp…

Hilfts weiter ?
Wenn nicht solltest du mal deine Formel posten

Stefan

Hallo

leider hat mir die Funktion nicht geholfen. Ich bin leider in diesen Dingen (Visual Basic) blutiger Anfänger. Deshalb nur zur Bestätigung: Ich füge die Funktion unter Visual Basic ein und schalte den Geltungsbereich dafür auf Allgemein. Richtig so?

Die Formel, die eigentlich bearbeitet werden soll, lautet:
=Wenn((DatDiff(„t“;„01.07.2003“;[Kaufdatum]))

Frage

Hallo

Hallo auch

mal kurz nachgefragt:

deine Formel
soll (das Runden mal weggelassen)sein:
…schnipp…

Wenn das Kaufdatum vor dem 1.7.2003 liegt

Dann berechne :
AktuellerVerkaufspreis mal 0,85 plus 1

Wenn es danach ist
Dann berechne:
(AktuellerVerkaufspreis)
plus
(3 minus AktuellerVerkaufspreis mal 0,15 mal 0,15)
plus
( 0,15 mal 0,99 )
plus
(0,15 mal 1,01)
plus
(AktuellerVerkaufspreis mal 0,15 plus 0,99 plus 1,01)

…schnapp…

???
Stefan

Hallo auch wieder,

stimmt alles, nur die 3 liegt vor allem, also

…schnipp…

Wenn das Kaufdatum vor dem 1.7.2003 liegt

Dann berechne :
AktuellerVerkaufspreis mal 0,85 plus 1

Wenn es danach ist
Dann berechne:
(AktuellerVerkaufspreis)
plus
3
minus
AktuellerVerkaufspreis mal 0,15 mal 0,15)
plus
( 0,15 mal 0,99 )
plus
(0,15 mal 1,01)
plus
(AktuellerVerkaufspreis mal 0,15 plus 0,99 plus 1,01)

…schnapp…

Die Formel wirkt komisch, ich weiß. Zur Erklärung: Es ist eine Datenbank, in der ich die Artikel, die ich für mich und meine Familie bei Amazon verkaufe, führe und mit den Namen der „Besitzer“ versehe, um diesen ihr Geld auszahlen zu können. Außerdem kann ich so offline eine komplette Liste anfertigen und diese Informationen relativ leicht bei Amazon eingeben. Das Poweranbieter-Programm, bei dem man dafür eine extra Offline-Software von Amazon bekommt, lohnt sich für mich nicht… Wie Du vielleicht weißt (auch Amazon-Nutzer?), hat Amazon zum 1.7.03 die Umsatzsteuer einführen müssen. Um beide Zeiträume zu verwalten, habe ich die Formel deshalb erweitert.

Grüße
Fabian

Hallo auch wieder,

stimmt alles, nur die 3 liegt vor allem, also

…schnipp…

Wenn das Kaufdatum vor dem 1.7.2003 liegt

Dann berechne :
AktuellerVerkaufspreis mal 0,85 plus 1

Wenn es danach ist
Dann berechne:
(AktuellerVerkaufspreis)
plus
3
minus
AktuellerVerkaufspreis mal 0,15 mal 0,15)
plus
( 0,15 mal 0,99 )
plus
(0,15 mal 1,01)
plus
(AktuellerVerkaufspreis mal 0,15 plus 0,99 plus 1,01)

…schnapp…

Die Formel wirkt komisch, ich weiß. Zur Erklärung: Es ist eine
Datenbank, in der ich die Artikel, die ich für mich und meine
Familie bei Amazon verkaufe, führe und mit den Namen der
„Besitzer“ versehe, um diesen ihr Geld auszahlen zu können.
Außerdem kann ich so offline eine komplette Liste anfertigen
und diese Informationen relativ leicht bei Amazon eingeben.
Das Poweranbieter-Programm, bei dem man dafür eine extra
Offline-Software von Amazon bekommt, lohnt sich für mich
nicht… Wie Du vielleicht weißt (auch Amazon-Nutzer?), hat
Amazon zum 1.7.03 die Umsatzsteuer einführen müssen. Um beide
Zeiträume zu verwalten, habe ich die Formel deshalb erweitert.

AktuellerVerkaufspreis mal 0,15 mal 0,15

und

( 0,15 mal 0,99 )
plus
(0,15 mal 1,01)

und

plus 0,99 plus 1,01

liesse sich doch wohl vereinfachen ???
???

schreib doch nochmal nur in Worten was genau du berechnen willst

Stefan

Hallo Stefan,

ja, die Formel ließe sich (rein mathematisch) vereinfachen. Ich möchte allerdings die einzelnen Bestandteile auch einzeln halten, um die Formel später einfacher ändern zu können.
Was ich - in Worten - berechnen möchte:

Ich habe einen [Verkaufspreis] für meine Artikel. Aufgrund dessen Wertes werden vor dem 1.7.03 (=Einführung der Umsatzsteuer bei Amazon) eine
Verkaufsgebühr für Amazon berechnet (0,99 € Grundgebühr und 15% des Verkaufspreises)
und zusammen mit der
Versandpauschale von 3 € für den Verkäufer abzgl. einer Versandgebühr von 1,01 € für Amazon (für mich bleiben also 1,99 €) mit dem
[Verkaufspreis] verrechnet.

Da diese Formel nur bis zum 1.7. galt, wird sie sich nicht mehr verändern, weshalb ich sie vereinfachen konnte.

Nach dem 1.7.03 werden die gleichen Rechnungen durchgeführt, allerdings werden auf alle Gebühren (Grundgebühr, 15%-Anteil, Versandgebühr) 15% Umsatzsteuer draufgeschlagen.

Die Rechnung ist also jetzt: [Verkaufspreis] plus (3 € Versandpauschale) minus (Gebühren) minus (15% Umsatzsteuer auf Gebühren)

Die vier Abteilungen habe ich mittlerweile als vier eigene berechnete Felder eingebaut. Und jetzt mein Problem: Die Gebühren müssen vor dem Berechnen der auf sie anfallenden Umsatzsteuer kaufmännisch gerundet werden. Der Runden-Befehl hilft mir bekannterweise nicht.

Ich kann Dir nur immer wieder für Deine Geduld und Deine Bemühungen danken und hoffe, daß ich meinerseits in diesem Forum mal helfen können werde.

Viele Grüße
Fabian

Hallo Fabian,

Beschäftige mich immer noch gelegentlich mit deinem Problem
ohne so richtig weiterzukommen.

Daher
Welche Access Version benutzt du?
besser: vielleicht mailst du mir mal deine DB (ohne Daten)
wenns 97 oder 2000 ist

Grüsse
Stefan

Hallo Stefan,

Beschäftige mich immer noch gelegentlich mit deinem Problem
ohne so richtig weiterzukommen.

furchtbar nett, danke!

Ich benutze Access 2002. Bei Gelegenheit (morgen oder übermorgen) werde ich Dir mal die Datenbank mailen, kann heute leider nicht mehr.

Viele Grüße
Fabian