Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Access Bericht rundet falsch

Begonnen von jogiaccess01, März 26, 2012, 16:17:05

⏪ vorheriges - nächstes ⏩

jogiaccess01

Hallo,

Als kleine Firma habe ich mir mit Access eine kleine Datenbank zusammengebastelt.  Bin also kein Profi.  Die Datenbank ist nach und nach gewachsen.

Als erstes habe ich nur die Kundendaten und die Mitarbeiterdaten verwaltet.  Danach habe ich für die täglichen Einsätze der Mitarbeiter eine neue Tabelle angelegt und werte diese am Monatsende anhand einer Abfrage zu einer Lohnabrechnung (Bericht) aus.

Nun bin ich einen Schritt weitergegangen und versuche anhand der vorhandenen Einsatzdaten die Kundenrechnung zu erstellen.  Anhand einer Abfrage führe ich die vorhandenen Daten wieder zu einem Bericht zusammen und sortiere bzw. gruppiere nach Einsatzdatum, Einzelpreis und errechne am Ende die Rechnungssumme.  Soweit funktioniert meine Rechnung wunderbar, wenn nicht die ständigen Rundungsprobleme auftreten würden. :'(

Wer kann mir weiterhelfen.  Habe einmal 3 PDF Dateien zur Verdeutlichung angehängt.  Wäre auch bereit, zur Verfeinerung meiner Datenbank entsprechende Hilfe zu entlohnen.

Vorab schon einmal vielen Dank für Eure Hilfe.

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

Du darfst nicht die Summe , sondern musst den Summanden selber runden:

=Summe(Runden(Ausdruck2;2))



Weitere Tipps:

-- http://www.donkarl.com?FAQ2.1

-- benutz Datentyp Currency statt Double für die monetären Felder/Werte.

jogiaccess01

Zuerst einmal Danke für den schnellen Tip.

Mein Problem ist die Gruppensumme.  Die einzelnen Positionen werden richtig gerundet.  Jedoch ergibt bei mir 44,13 + 44,13 = 88,26!  Woran kann das liegen?

DF6GL

Hallo,

lies mein Posting....

soll heißen, der Positions-Wert (== Summand) selber muss beim Berechnen mit Round gerundet werden. Der angezeigte Wert ist lediglich ein "gerundeter" angezeiger Text und nicht der dahinterstehende mathematische Wert.

jogiaccess01

Zitat von: DF6GL am März 26, 2012, 18:31:21
Hallo,

lies mein Posting....

soll heißen, der Positions-Wert (== Summand) selber muss beim Berechnen mit Round gerundet werden. Der angezeigte Wert ist lediglich ein "gerundeter" angezeiger Text und nicht der dahinterstehende mathematische Wert.

verstehe ich nicht, (Runden(Ausdruck2;2)) wo ist denn die eckige Klammer hin?   Die Summe der Positionen habe ich durch die Gruppensumme (Gruppierung EsEp) erzeugt. Und genau da ist mein Fehler, weil das Programm natürlich mit den ungerundeten Positionsbeträgen rechnet.  Meine Frage ist nun, wie kann ich das umgehen.  Ich bin wirklich ein Anfänger und wundere mich selber, dass ich überhaupt so weit gekommen bin...

DF6GL

Hallo,

irgendwo berechnest Du doch den Positionsgesamtwert, z. B. in der Abfrage:

Ausdruck2: [GesamtStd] * [Einzelpr]


hier solltest Du schon (mathematisch) runden :

Ausdruck2: Round([GesamtStd] * [Einzelpr];2)


Sodann wird das Berichts-Feld "Gesamt" an den Alias-Namen "Ausdruck2" aus der Abfrage gebunden (Steuerelementinhalt --> Ausdruck2)

und entspr. im Gruppenfuß die Summe dieses Feldes im Steuerelementinhalt eines Textfeldes) errechnet:

=Summe([Ausdruck2])

jogiaccess01

Zitat von: DF6GL am März 26, 2012, 20:26:53
Hallo,

irgendwo berechnest Du doch den Positionsgesamtwert, z. B. in der Abfrage:

Ausdruck2: [GesamtStd] * [Einzelpr]


hier solltest Du schon (mathematisch) runden :

Ausdruck2: Round([GesamtStd] * [Einzelpr];2)


Sodann wird das Berichts-Feld "Gesamt" an den Alias-Namen "Ausdruck2" aus der Abfrage gebunden (Steuerelementinhalt --> Ausdruck2)

und entspr. im Gruppenfuß die Summe dieses Feldes im Steuerelementinhalt eines Textfeldes) errechnet:

=Summe([Ausdruck2])

Vielen Dank!!!! Bin gerade aber schon selber drauf gekommen, dass ich die Berechnung in der Abfrage schon runden muss.  Sorry, stand irgendwie auf der Leitung.

Wünsche noch nen schönen Abend

Gruß Jürgen

Frank77

Hi
zum runden in vba habe ich die 2 Prozeduren in netz gefunden
Damit habe ich in Formularen Preise berechnet und wieder zurück gerechnet und die Zahl Stimmt dann auch wieder


Option Compare Database
Option Explicit
Public Function RundenKR(vZahl As Variant, iStellen As Integer)
    RundenKR = CVar(Format$(vZahl * (10 ^ iStellen), "0") / _
                    (10 ^ iStellen))
    'Die Funktion kann wie folgt aufgerufen werden:
    '=Runden([Zahl], Stellen)
    'Argumente:
    '[Zahl] = Name des zurundenden Tabellenfeldes in eckigen Klammern
    'Stellen = Ein beliebiger ganzzahliger Ausdruck, positiv oder negativ
    'Der Einsatz dieser Funktion ist identisch mit der Excel-Version. Man kann also dieselben Rundungsformeln anwenden.
    'Hier einige Beispiele:
    'Text                        Aufruf                  Zahl        Resultat
    'Runden auf zwei Stellen     Runden([Zahl],2)        34.4444     34.44
    'Runden auf 0.05             Runden(20*[Zahl],0)/20  34.4444     34.45
    'Runden auf 0.25             Runden(4*[Zahl],0/4     34.4444     34.50
    'Runden auf 5                Runden(2*[Zahl],-1)/2   34.4444     35
    'Runden auf 50               Runden(50*[Zahl],0/50   34.4444     50
    'Runden auf 10               Runden([Zahl],-1)       34.4444     30
End Function


Public Function betragKR(betr As Double, rdUp As Double) As Double
    betragKR = rdUp * (1 + Int((betr - 0.001) / rdUp))
End Function
'aufrufen der prozedur
'   Dim geld As Double
'  geld = CDbl(Text0.Value)
' Text1.Value = Format$(betragKR(geld, 0.5), "Currency")
Selbstständig = Selbst und Ständig