Arrondir valeur supérieure avce sql access

donlefou Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
 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.

6 réponses

blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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 :
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	1
Et hop !
2
donlefou Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Blux, mais il me semble qu'il y a un petit probleme.
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.
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Re-testé chez moi, ça fonctionne bien...

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 :
SELECT TABTEST.[champ], ([champ]-Int([champ])=0) AS Resu
FROM TABTEST;
Pour voir...
0
donlefou Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   > blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ok c'est bon, ca marche, merci Blux. A++
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359 > blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ca m'intéresse de savoir d'où venait l'erreur...
0
random Messages postés 1612 Date d'inscription   Statut Membre Dernière intervention   155
 
et 2 ca donnerait pas 3 avec cette méthode ?
1
no_pain
 
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.
1
Utilisateur anonyme
 
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
no_pain
 
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.
0
aquaman
 
faux: int(1+1) = 2
alors que 1 arrondi nous donne 1

pas encore la bonne solution
0
blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
La question initiale était d'arrondir à l'entier supérieur, la formule que j'ai donnée en son temps marche parfaitement.

1 arrondi nous donne 1 La fonction d'arrondi n'existe pas sous ACCESS...
0
b747fred > blux Messages postés 27121 Date d'inscription   Statut Modérateur Dernière intervention  
 
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
0
buffon74 > b747fred
 
Je cherchais sur Internet à faire l'arrondi sup d'un réel sous Access. Je suis tombée sur votre message qui m'a grandement aidée.
Merci.
0