[ obradorriuss @ 13.07.2005. 16:48 ] @
Kako mogu da od broja koji je tipa Number>Double>Currency na 5 decimala (JEDINICNA CENA PROIZVODA) da dobijem broj koji cje biti JEDINICNA CENA*KOLICINA = UKUPNO (broj Number>Double>Currency na 2 decimale)??
Ali ne zelim da mi on to samo prikaze jer rezultat se dobije na 5 decimala (ja mogu da mu kazem Display na 2 decimale) ali zbog daljeg rachuna sa ovim poljem neophodno mi je da imam znachi broj sa 2 decimale. ALI BASH BROJ! Ne broj od 5 decimala koji prikazuje samo 2.....
Primer:
5.12345 zelim da dobijem 5.12 i da mi dalje rachuna sa vrednoscju 5.12 !
Meni trenutno prikaze rezultat 5.12 ali mi rachuna sa vrednoscju 5.12345.
Kako to da izbegnem?
HVALA..
[ krul @ 13.07.2005. 20:52 ] @
=round(tvojbroj,kolikodecimala)
round funkcija radi posao
[ obradorriuss @ 13.07.2005. 23:17 ] @
a gde treba da ispishem to "=round(moj broj, koliko decimala)" kad idem na Build expression nema ponudjena ta opcija. molim te ako mozes samo malo detaljnije da opishesh jer sam probao da stavim "=round([suma],2) i nikako necje.
Hvala
[ krul @ 14.07.2005. 00:24 ] @
Ne znam tacno gde hoces da koristis tu vrednost, pretpostavljam da to treba da bude text box; ako je onda ovako: u control source property texboxa

=round(CDbl([CREDATMPT]),2)

Moguci problem je to da je vrednost polja u pogresnom data tipu, kao sto je to kod mene slucaj [CREDATMPT] onda samo convertujes data tip ako je to moguce i to je to.
Javi ako ima problema ali pokusaj da budes malo specificniji.
Pozdrav
[ obradorriuss @ 14.07.2005. 01:27 ] @
Pazi problem je u tome sto u Accessu 97 ne postoji uopste funkcija ROUND.
Ima neka RND ali nisam siguran da je to ta...
TO znachi da bi trebalo ispisati neku ROUND funkciju a to sam nasao na netu i glasi:


Public Function Round( _
ByVal Number As Variant, NumDigits As Long, _
Optional UseBankersRounding As Boolean = False) As Double
'
' ---------------------------------------------------
' From "Visual Basic Language Developer's Handbook"
' by Ken Getz and Mike Gilbert
' Copyright 2000; Sybex, Inc. All rights reserved.
' ---------------------------------------------------
'
Dim dblPower As Double
Dim varTemp As Variant
Dim intSgn As Integer

If Not IsNumeric(Number) Then
' Raise an error indicating that
' you've supplied an invalid parameter.
Err.Raise 5
End If
dblPower = 10 ^ NumDigits
' Is this a negative number, or not?
' intSgn will contain -1, 0, or 1.
intSgn = Sgn(Number)
Number = Abs(Number)

' Do the major calculation.
varTemp = CDec(Number) * dblPower + 0.5

' Now round to nearest even, if necessary.
If UseBankersRounding Then
If Int(varTemp) = varTemp Then
' You could also use:
' varTemp = varTemp + (varTemp Mod 2 = 1)
' instead of the next If ...Then statement,
' but I hate counting on TRue == -1 in code.
If varTemp Mod 2 = 1 Then
varTemp = varTemp - 1
End If
End If
End If
' Finish the calculation.
Round = intSgn * Int(varTemp) / dblPower
End Function

Sad pomocju ove funkcije mogu da napishem =round([suma],2) i automatski dobijam zaokruzenu vrednost na 2 decimale ali kad kliknem na text box i dalje se pojave preostale 3 decimale i dalje mi rachuna sa svih 5 decimala.

Evo sada sam obrisao taj modul kao da ne postoji i stavio sam sve kako si napisao, medjutim necje nikako u text boxu mi prijavi #Name?

Meni ovo treba da stoji u izvestaju, tj. to kalkulisanje.
Nadam se da sam sada bio malo precizniji....

Nikako ne mogu da isechem broj na 2 decimale.....
[ obradorriuss @ 14.07.2005. 03:02 ] @
Konachno sam uspeo da ispishem funkciju....Evo kako ide:

Public Function Round2CB(Value, Optional Precision As Variant) As Double

If IsNull(Value) Then Exit Function
If IsMissing(Precision) Then Precision = 2
Value = Fix(Value * 10 ^ Precision + 0.5 * Sgn(Value)) / 10 ^ Precision
Round2CB = Value

End Function

Posle u Control source napishemo "=Round2CB([Ukupno],2)" i to je to...

Hvala na pomocji!
[ izonic @ 15.07.2005. 11:19 ] @
Function Zaokruzi(Broj As Double, Decimala As Integer)
Dim FormatD As String

If Format$(Broj) = "" Then GoTo Kraj
Select Case Decimala
Case 1
FormatD = "##.#"
Case 2
FormatD = "##.##"
Case 3
FormatD = "##.###"
Case 4
FormatD = "##.####"
Case 5
FormatD = "##.#####"
Case 6
FormatD = "##.######"
Case 7
FormatD = "##.#######"
Case 8
FormatD = "##.########"
Case Else
MsgBox "Loši ulazni parametri"
End Select
Zaokruzi = Format(Broj, FormatD)
Kraj:
End Function

Poziv Na Kontrolu
=Zaokruzi([Vrijednost];Broj decimala)
ili
=Zaokruzi([Vrijednost],Broj decimala)