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]
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.
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?
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.
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...
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])
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
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")