PDA

Vollständige Version anzeigen : Runden auf 2 Stellen in Access 2000


Diego
28.06.2001, 09:35
Hallo
Weiss jemand wie man im Feld Steuerelementinhalt runden kann? Ich gab folgenden Befehl ein:

=round([TotalMenge]/5;2)*5

danach reklamierte Access wegen dem Refehl "round". Wie kann man dort runden, es muss sicher eine Möglichkeit geben.

Besten Dank für Eure Tipps.

Diego

Pepi
28.06.2001, 09:47
Hi Diego,
soweit ich es sehe, verfügt Access über keine Runden-Funktion. Aber man kann sie sich von Excel "ausleihen" (über VBA). Brauchst du nähere Infos?

Diego
28.06.2001, 10:03
Hi Pepi
Ja Infos würden mich sehr interessieren.

Gruss Diego

MEHR
28.06.2001, 10:28
Hier ist eine Funktion, die ich irgendwo 'mal gefunden habe:

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

'Mit Hilfe dieser Funktion können Sie eine Zahl auf eine beliebige Stelle
'runden. Maximal können 15 Ziffern (Ziffern vor dem Komma + Ziffern nach dem
'Komma <= 15 Ziffern) dargestellt werden.
'Der Übergabeparameter "varZahl" stellt die zu rundende Zahl dar.
'Die Variable "intStellen" gibt an, auf wieviel Stellen nach (positive Zahl)
'bzw. vor (negative Zahl) dem Komma gerundet werden soll.
'Aus der deutschen MSKB

Dim X As Double
Dim dblErgebnis As Double
Dim Zahlzwi As Double
Dim Neg As Boolean

On Error GoTo Error_handler

If varZahl < 0 Then
Zahlzwi = varZahl * -1
Neg = True
Else
Zahlzwi = varZahl
Neg = False
End If

If IsNull(Zahlzwi) Then
dblErgebnis = 0
Else
' wenn negative Zahl, dann muß der absolute Wert genommen werden
If intStellen < 0 Then
X = 10 ^ (Abs(intStellen))
dblErgebnis = Int(Zahlzwi / X + 0.5) * X
Else
X = 10 ^ intStellen
dblErgebnis = Int(Zahlzwi * X + 0.5) / X
End If

End If

If Neg Then
dblErgebnis = dblErgebnis * -1
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

Gruß MERH

kama
28.06.2001, 11:04
Versuchs mal in deinem feld mit

=ZLong([TotalMenge]*100)/100

Die Nachkommastellen werden bei der Typumwandlung automatisch gerundet
Es steht dir allerdings nur folgender Zahlenraum zur Verfügung:
-2.147.483.648 bis 2.147.483.647
Ich hoffe das reicht
Ansonsten bleiben die noch die Formateinstellungen des Feldes.

Pepi
28.06.2001, 12:46
Hi Diego,
die kürzeste Form (ohne early binding) wäre folgender Code:

MsgBox Excel.Application.WorksheetFunction.Round(1.2345, 2)

Etwas ausführlicher:
Dim ExcelApp As Excel.Application
Set ExcelApp = CreateObject("Excel.Application")
MsgBox Excel.Application.WorksheetFunction.Round(1.2345, 2)
ExcelApp.Quit
Set ExcelApp = Nothing

Vielleicht hilft das ja weiter...

Pepi
28.06.2001, 14:18
Hi Diego,
nachdem der letzt Versuch wiederrausgeflogen ist, hier nochmal.
In der ausgiebigeren Fassung könnte ein Code wie folgt aussehen (Verweise unter Extras/Verweise auf Excel 8.0 Objektbibliothek erstellen):

Dim ExcelApp As Excel.Application
Set ExcelApp = CreateObject("Excel.Application")
MsgBox ExcelApp.WorksheetFunction.Round(DeinWert)
ExcelApp.Quit
Set ExcelApp = Nothing

Kürzer könnte man auch direkt über
MsgBox Excel.Application.WorksheetFunction.Round(DeinWert)
auf die Funktion zugreifen.
Im "Ernstfall" würde ich die Deklaration und das Zu´greifen auf Excel allerdings in eine globale Funktion verlagern, damit nur einmal zu Beginn Excel im Hintergrund geöffnet werden muss und der Zugriff dann schnell auf die Funktion(en) erfolgen kann. Später dürfte dann das Schliessen/Beenden nicht vergessen werden.

Vielleicht hilft dir das ja weiter.

wagner-laessig
17.07.2001, 13:09
hallo diego!

sieh doch einmal unter Runden (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=45878) nach.
dort wird eigentlich dein thema beantwortet

ciao et cu

marcus