PDA

Vollständige Version anzeigen : runden mit access 2000??


philip
04.10.2001, 08:07
guten morgen allerseits

in einem bericht berechne ich zeitspannen über das datum und rechne diese in monate um. die ergebnisse will in mit der funktion RUNDEN(zahl;stellen) runden lassen, als zahl hab ich den feldnamen (bei mir [alter]) eingegeben.
laut hilfe sollte das gehen..tatsächlich passiert halt nix, ich bekomm statt dessen sogar eine dialogbox angezeigt, die nach den parameterwerten von RUNDEN fragt...

hat jemand eine idee an was das liegen könnte?

thx philip

Goki
04.10.2001, 09:43
Hallo Phillip,

probier mal das folgende aus ... wenn 'zahl' in deinem Ausdruck ein Feld ist, dann muß du es in die []-Klammern setzen ... also beispielsweise ...

RUNDEN([Feldname]; 2)

Damit müßte es dann funktionieren ...

slg
Goki

Sascha Trowitzsch
04.10.2001, 10:55
Phillip,

du musst deiner Funktion auch noch einen Feldnamen geben, sonst interpretiert die Abfrage 'RUNDEN' als Feldnamen, den es aber nicht kennt und deshalb als einzugebenden Parameter definiert. Also:
Abfragefeld:

Ergebnis = RUNDEN([Feldname]; 2)

Ciao, Sascha

P.S.: Sollte die Funktion an anderer Stelle in der Abfrage stehen (z.B. Kriterium), so ist immer ein ' = ' vor RUNDEN zu setzen!

philip
04.10.2001, 11:52
danke euch beiden

@goki
so hatt ichs schon versucht geht leider nicht..

@sascha
bei deinem vorschlag kommt die abfrage nach den parameterwerten nicht mehr..dafür eine syntaxfehlermeldung..;-)
einstellungen des feldes sind bei mir so:
name: altertest
steuerelemetinhalt: altertest=RUNDEN([alter];2)
muß ich vielleicht noch was beim zahlenformat einstellen? momentan auf standartzahl mit automatischer dez-stellenanzeige

Rallekalle
04.10.2001, 13:12
Hallo,
Runden kann Access nicht. Versuche deshalb folgende Funktion einzubauen (unter Module neues Modul mit dem Namen Runden):

Function AufXStellenRunden(varZahl As Variant, intStellen As Integer) As Double

Dim x As Double
Dim dblErgebnis As Double

On Error GoTo Error_handler
If IsNull(varZahl) Then
dblErgebnis = 0
Else
If intStellen < 0 Then
x = 10 ^ (Abs(intStellen))
dblErgebnis = Int(varZahl / x + 0.5) * x
Else
x = 10 ^ intStellen
dblErgebnis = Int(varZahl * x + 0.5) / x
End If
End If
AufXStellenRunden = dblErgebnis
Exit_AufXStellenRunden:
Exit Function

Error_handler:

MsgBox "Der Fehler " & Error(Err) & "trat beim runden auf."
AufXStellenRunden = varZahl
Resume Exit_AufXStellenRunden
End Function

Aufrufen kannst Du die Funktion dann von überall heraus indem Du AuXStellenRunden([Feldname oder Rechenoperation];2)

Die 2 steht für die Anzahl der Nachkommastellen, ist beliebig.

Bis dann
Ralle

Sascha Trowitzsch
04.10.2001, 13:57
Wieso kann Access nicht RUNDEN ???
Natürlich kann es das, aber mit ROUND ;-)

@philip:
Das Abfragefeld heisst also:

altertest=Round([alter];2)

Die Access-Hilfe ist mir wieder mal ein Rätsel! RUNDEN sollte eigentlich die deutsche Version sein.
Aber anscheinend ist es wie auch AUFRUNDEN nur in der Library msowcf.dll enthalten.

Sei's drum,
Sascha

philip
04.10.2001, 14:13
@sascha
also mit round klappts auch nicht..bekomme wieder die sytaxfehlermeldung
vielleicht ist meine .dll auch nicht die aktuelleste (11.03.99)..es gibt ja schließlich etliche service packs fürs office

@ralle
danke für das skript/modul, werds nachher mal testen


laut hilfe im access2000 gibt es diese runden-funktion. wenn ich aber in der knowledge-base nachschaue (unter access2k) dann bekomme ich als lösungsvorschlag auch nur ein skript angeboten..von der runden-funktion ist nichts zu finden.. http://www.microsoft.com/IntlKB/Germany/Support/kb/D43/D43383.htm?LN=DE&SD=SO&FR=0

danke noch mal für eure unterstützung
philip

kama
04.10.2001, 14:49
Habe für dich mal ins Archiv geschaut und bin auf folgendes gestoßen Runden (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=47334)

Mehr geht nicht ;)

Sascha Trowitzsch
04.10.2001, 18:49
Bei mir funktioniert die Syntax mit Round wie angegeben.
Hab's gerade in einer Abfrage getestet.

Ciao, Sascha

PS: Ach shit (!!), die Syntax ist oben natürlich auch falsch! Richtig ist:

altertest: Round([alter];2)


[Dieser Beitrag wurde von Sascha Trowitzsch am 04.10.2001 editiert.]