PDA

Vollständige Version anzeigen : Problem mit der Funktion Runden


masptv
10.05.2004, 13:03
Hey Forumuser,
Ich hab ein kleines Problem mit dem Runden, hab das Forum auch schon mehrfach dursucht und einiges gefunden, wie z.b die Funktion von
Donkarl.com -->
Function fctRound(Optional varNr, Optional varPl As Integer = 2) As Double
If IsMissing(varNr) Or Not IsNumeric(varNr) Then Exit Function
fctRound = Fix("" & varNr * (10 ^ varPl) + Sgn(varNr) * 0.5) / (10 ^ varPl)
End Function

Mein Problem ist es, wie kann man denn (wenn ich die Funktion in einem Modul geschrieben hab), in einer Abfrage nun Feldwerte abrunden bzw auf die Funktion verweisen?
Verweise ich vielleicht per SQL? :confused:
Bin blutiger Anfänger und währe froh wenn mich jemand bisschen unterstützen könnte!

Danke schonmal im voraus!
bye Marc

Arne Dieckmann
10.05.2004, 13:11
Die Funktion muss in einem globalen Standardmodul liegen. Das Modul muss anders als die Funktion selbst heissen. Anschliessend kannst Du die Funktion wie eine Access- bzw. VBA-interne Funktion überall dort benutzen, wo Du sie benötigst.

Beispiel:
In der Entwurfsansicht einer Abfrage.

Ausdr1: fctRound([DeinFeld];3)

um auf 3 Stellen zu runden.

masptv
10.05.2004, 13:28
Danke soweit,
hab jetzt ein Modul erstellt, den Code reingeschrieben und das ganze Runden genannt. Bin jetzt in meiner Abfrage und habe folgenden Ausdruck:

Gst_Anteil: ([Grundsteuer]*[NK_Anteil_in_Prozent])/365*[Miettage]

Die Function wie schon gennant im Modul heißt fctRound, ist der Code so
richtig?

Gst_Anteil: fctRound(([Grundsteuer]*[NK_Anteil_in_Prozent])/365*[Miettage]);2)

zeigt beim ausführen in der Spalte nur 0,00 Beträge!

Anne Berg
10.05.2004, 13:34
Wie sind denn die einzelnen Datenfelder deklariert? Vielleicht wird mit dem falschen Datentyp gerechnet.

BodoM
10.05.2004, 13:41
Zähl mal Deine Klammern

masptv
10.05.2004, 13:46
das Feld [Grundsteuer] ist als "Euro" formatiert,
[NK_Anteil_in_Prozent] = Prozentzahl
[Miettage] = Datum, kurz

deklarieren kann man doch nur felder die als zahl formatiert sind oder?
kann sein dass ich mich schwer täusch, kenn mich langsam selber nich mehr aus!

PS: an der Fehlenden Klammer lag es nicht! danke

Arne Dieckmann
10.05.2004, 14:13
Mich irritiert etwas, dass Du ein Datumsfeld (Miettage) in der Berechnung verwendest. Wie groß sind denn die Werte, wenn Du nicht rundest?

BodoM
10.05.2004, 14:19
Hallo,

die Miettage geben zwar einen Wert zurück, jedoch ist Deine Formel in dieser Form falsch.


Gruß Bodo

masptv
10.05.2004, 15:01
Entschuldigung, muss mich korrigieren,
[Miettage] ist ein errechnetes Feld aus einer anderen Abfrage das sich
zusammen setzt aus [Anfangsdatum]-[Enddatum]
Die Rechnung Funktioniert aber.
Der Ausdruck sieht in wirklichkeit so aus (hab ihn nur zur verständnis etwas abgekürzt):

Gst_Anteil: ([Gst Anteil]*[Objektkostenabrechnung]![Grundsteuer]*[NK_Anteil_in_Pro])/365*[Miettage]

Die berechnung funktioniert bis auf das das Ergebnis nicht gerundent ist!
Ich möcht bloß wissen wie ich nun in diese Formel die "fctRound" Funktion bekomme, damit das Ergebniss nur mit 2 Stellen nach dem Komma angezeigt wird!
trotzdem danke
bye Marc

Arne Dieckmann
10.05.2004, 17:11
Hm. Eigentlich sollte es schon so funktionieren (die Klammersetzung ist anders als bei Deinem Versuch):

Gst_Anteil: fctRound((([Gst Anteil]*[Objektkostenabrechnung]![Grundsteuer]*[NK_Anteil_in_Pro])/365*[Miettage]);2)


Probeweise könntest Du die Nachkommastellen auch einmal auf 6 oder so einstellen.

Engeli
10.05.2004, 18:42
Hallo

Oder so? ungetestet.

Gst_Anteil: Int(([Gst Anteil]*[Objektkostenabrechnung]![Grundsteuer]*[NK_Anteil_in_Pro])/365*[Miettage]*20+0.5)/20

Gruss Markus

masptv
11.05.2004, 09:48
Danke Arne!

Der Ausdruck von dir war 100 Prozentig :p !!! Stimmt die Zeichensetzung war falsch, und im Modul wahr auch ein Tippfehler :o ! Jetzt rundet er genau richtig!
Auch Danke an Markus, das Runden funktioniert aber leider rundet er
480,58743 auf 480,60. Trotzdem danke für die Hilfestellung!
Das rettet meinen Kopf. :redface:

Grüsse Marc