Arrondir valeur supérieure avce sql access
donlefou
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
buffon74 -
buffon74 -
Bonjour, je voudrais savoir si dans une requête SQL on pouvait arrondir une valeur à sa valeur entière supérieure.
Il y a la fonction Int(Nombre) qui arrondi juste à l'entier le plus proche.(0,3 devient 0)
Je voudrais arrondir 0,3 à 1.
Il y a la fonction Int(Nombre) qui arrondi juste à l'entier le plus proche.(0,3 devient 0)
Je voudrais arrondir 0,3 à 1.
6 réponses
Salut,
la fonction ROUND n'existe pas en ACCESS...
Mais on peut ruser, il faut voir si le nombre est à virgule (on regarde donc le résultat du nombre moins sa partie entière), dans ce cas, on isole la partie entière et on lui ajoute un, c'est l'objet de la requête ci-dessous :
la fonction ROUND n'existe pas en ACCESS...
Mais on peut ruser, il faut voir si le nombre est à virgule (on regarde donc le résultat du nombre moins sa partie entière), dans ce cas, on isole la partie entière et on lui ajoute un, c'est l'objet de la requête ci-dessous :
SELECT TABTEST.[champ], IIf([champ]-Int([champ])=0,[champ],int([champ])+1) AS Resu FROM TABTEST; champ Resu 0,024 1 0,5 1 1 1 14,5 15 2,3 3 0,1 1 0,3 1 1 1 2 2 3 3 1245 1245 45 45 1256 1256 4584,256 4585 2 2 6 6 7 7 8 8 95 95 0,0003 1Et hop !
en fait, la fonction int() ne renvoie pas le nombre le plus proche mais l'entier inférieur (0,3==>0 mais 0,8==>0)
c'est pour ça que int(nb+1) ça arrondi vers l'entier le plus haut.
c'est pour ça que int(nb+1) ça arrondi vers l'entier le plus haut.
Salut
Je crois que la fonction ROUND arrondi à l'entier le plus proche. Ce que tu peux faire, c'est arrondir et faire +1 sur l'arrondi...
A+
Je crois que la fonction ROUND arrondi à l'entier le plus proche. Ce que tu peux faire, c'est arrondir et faire +1 sur l'arrondi...
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en fait, la fonction int() ne renvoie pas le nombre le plus proche mais l'entier inférieur (0,3==>0 mais 0,8==>0)
c'est pour ça que int(nb+1) ça arrondi vers l'entier le plus haut.
c'est pour ça que int(nb+1) ça arrondi vers l'entier le plus haut.
Pour Info si ca peut aider quelqu'un
Fonction arrondi supérieur dans tous les cas dans l'expression d'une requête access
x est un réel
iif(int(x)=x;x;int(x+1))
x=1
int(1) est égal à 1 donc donne 1
x=1.1
int(1.1) n'est pas égal à 1 donc donne 1+1=2
Biensur on peut remplacer x par la valeur d'un champ mais dans ce cas n'oubliez pas les crochez
x est un champ
iif(int([x])=[x];[x];int([x]+1))
Cordialement
b747fred
Fonction arrondi supérieur dans tous les cas dans l'expression d'une requête access
x est un réel
iif(int(x)=x;x;int(x+1))
x=1
int(1) est égal à 1 donc donne 1
x=1.1
int(1.1) n'est pas égal à 1 donc donne 1+1=2
Biensur on peut remplacer x par la valeur d'un champ mais dans ce cas n'oubliez pas les crochez
x est un champ
iif(int([x])=[x];[x];int([x]+1))
Cordialement
b747fred
0,2 donne 1 OK
1,4 donne 2 OK
mais 1,6 donne 3 or il faut que 1,6 donne 2
Y'a un petit truc à modifier dans la formule, je pense.
Problème avec int ? avec le calcul de la différence ? Champs décrits en réels ?
Quelle version d'access ? (97 chez moi...)
essaye d'afficher uniquement le résultat de la différence : Pour voir...