Pagina 1 van 1

access update query met roudup functie

Geplaatst: 27 mei 2005, 12:02
door verdickt
Hallo,

ik heb volgende update query:

Code: Selecteer alles

UPDATE prijslijst INNER JOIN STOCK002 ON prijslijst.N° = STOCK002.ART_NUMMER SET STOCK002.INKOOP = [Prijslijst].[price], STOCK002.VERKOOPA = [Prijslijst].[price]*1.15*1.21;
De stock002 is een gelinkte db5 database die ik update vanuit access na
het inlezen van een andere database ( maakt volgens mij niet uit maar allez )

Ik weet dat je in excel de roundup functie kan gebruiken maar in sql
vind ik deze niet terug.

Ik heb al wat met de round functie liggen foefelen, krijg geen foutmelding maar het resultaat blijft gewoon hetzelfde.

Wat ik zou willen

indien iets 20,74€ kost dat hii dit dan afrond op 20,75

of zoals bijvoorbeeld in excel: =ROUNDUP($F305*1,21;1) op een tiental

Geplaatst: 27 mei 2005, 12:41
door meon
Display the number 873.726 rounded to 2, 1, 0, -1 and -2 decimal places respectively.
VALUES (DECIMAL(ROUND(873.726,2),6,3), DECIMAL(ROUND(873.726,1),6,3),
DECIMAL(ROUND(873.726,0),6,3), DECIMAL(ROUND(873.726,-1),6,3),
DECIMAL(ROUND(873.726,-2),6,3))

Geplaatst: 27 mei 2005, 12:51
door khsw
De formule die je hebt meegegeven zal echter 20.74 afronden naar 21.

Is het de bedoeling om 20.741 af te ronden naar 20.75 of moet ook 20.74 rond 20.75 worden (wat dit is niet echt een round) en dient dus alles te eindigen op een veelvoud van 0.05?

Ik heb je een voorbeeld gemaakt om 20.741 af te ronden naar 20.75, moet het toch anders zijn, laat het maar weten...

Code: Selecteer alles

Public Function RoundUp(number As Double, numberOfDigitsAfterDecimal As Integer) As Double
    Dim res As Double
    res = number * (10 ^ numberOfDigitsAfterDecimal)
    If CCur(Fix(res)) < CCur(res) Then res = res + 1 ' Omzetten naar currency wegens afrondingsproblemen in Access...
    RoundUp = Fix(res) / (10 ^ numberOfDigitsAfterDecimal)
End Function
Plak deze code in een module, dan kan je deze functie gewoon gebruiken vanuit je query.

RoundUp(number, numberOfDigitsAfterDecimal)
- number: het getal dat afgerond dient te worden
- numberOfDigitsAfterDecimal: het aantal getallen na de komma waarop afgerond dient te worden.

Code: Selecteer alles

UPDATE prijslijst INNER JOIN STOCK002 ON prijslijst.N° = STOCK002.ART_NUMMER SET STOCK002.INKOOP = [Prijslijst].[price], STOCK002.VERKOOPA = RoundUp([Prijslijst].[price]*1.15*1.21, 2);

Geplaatst: 27 mei 2005, 13:13
door verdickt
khsw schreef: Ik heb je een voorbeeld gemaakt om 20.741 af te ronden naar 20.75, moet het toch anders zijn, laat het maar weten...
Dit is exact wat ik zocht

Ik zal het eens uitproberen

alvast bedankt