access update query met roudup functie

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
verdickt
Premium Member
Premium Member
Berichten: 647
Lid geworden op: 12 maa 2004, 22:24

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
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

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))
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

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);
verdickt
Premium Member
Premium Member
Berichten: 647
Lid geworden op: 12 maa 2004, 22:24

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
Plaats reactie

Terug naar “Development”