Redondear valor superior con SQL Access

donlefou Mensajes publicados 44 Estado Miembro -  
 buffon74 -
Hola, me gustaría saber si en una consulta SQL se puede redondear un valor a su entero superior.
Existe la función Int(Número) que solo redondea al entero más cercano (0,3 se convierte en 0).
Quisiera redondear 0,3 a 1.

6 respuestas

blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención   3 455
 
Hola,

la función REDONDEAR no existe en ACCESS...

Pero se puede hacer un truco, hay que ver si el número es decimal (por lo que se mira el resultado del número menos su parte entera), en ese caso, se aísla la parte entera y se le añade uno, este es el objetivo de la consulta a continuación :
SELECT TABTEST.[campo], IIf([campo]-Int([campo])=0,[campo],int([campo])+1) AS Resu FROM TABTEST; campo 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
¡Y listo!

--
¡A+ Blux
 "Los tontos se atreven a todo. Es incluso por eso que los reconocemos"
2
donlefou Mensajes publicados 44 Estado Miembro
 
Gracias Blux, pero me parece que hay un pequeño problema.
0,2 da 1 OK
1,4 da 2 OK
pero 1,6 da 3, y debe ser que 1,6 dé 2
Hay algo que hay que modificar en la fórmula, creo.
0
blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención   3 455
 
Re-testeado en casa, funciona bien...

¿Problema con int? ¿con el cálculo de la diferencia? ¿Campos descritos en reales?
¿Qué versión de Access? (97 en mi caso...)

intenta mostrar únicamente el resultado de la diferencia :
 SELECT TABTEST.[champ], ([champ]-Int([champ])=0) AS Resu FROM TABTEST;
Para ver...

--
A+ Blux
 "Los tontos, se atreven a todo. Es incluso así como los reconocemos"
0
donlefou Mensajes publicados 44 Estado Miembro > blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención  
 
Ok está bien, funciona, gracias Blux. A++
0
blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención   3 455 > blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención  
 
Me interesa saber de dónde venía el error...

--
A+ Blux
 "Los imbéciles se atreven a todo. Es incluso por eso que los reconocemos"
0
random Mensajes publicados 1612 Estado Miembro 155
 
¿Y 2 no daría 3 con este método?
--
¿No es hermosa la vida?
1
no_pain
 
de hecho, la función int() no devuelve el número más cercano, sino el entero inferior (0,3==>0 pero 0,8==>0)

por eso int(nb+1) redondea hacia el entero más alto.
1
_Agnes
 
Hola

Creo que la función ROUND redondea al entero más cercano. Lo que puedes hacer es redondear y hacer +1 sobre el redondeo...

¡Hasta luego!
--
El tiempo perdido nunca se recupera. Entonces, sigamos sin hacer nada. J.Renard
0
no_pain
 
de hecho, la función int() no devuelve el número más cercano sino el entero inferior (0,3==>0 pero 0,8==>0)

por eso int(nb+1) redondea hacia el entero más alto.
0
aquaman
 
falso: int(1+1) = 2
mientras que 1 redondeado nos da 1

todavía no es la solución correcta
0
blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención   3 455
 
La pregunta inicial era redondear al entero superior, la fórmula que di en su momento funciona perfectamente.

1 redondeo nos da 1 La función de redondeo no existe en ACCESS...

--

A+ Blux
 "Los tontos se atreven a todo. Es incluso por eso que los reconocemos"
0
b747fred > blux Mensajes publicados 5021 Fecha de registro   Estado Moderador Última intervención  
 
Para información, si puede ayudar a alguien

Función de redondeo superior en todos los casos en la expresión de una consulta access

x es un número real

iif(int(x)=x;x;int(x+1))

x=1

int(1) es igual a 1, por lo tanto da 1

x=1.1

int(1.1) no es igual a 1, por lo tanto da 1+1=2

Por supuesto, se puede reemplazar x por el valor de un campo, pero en este caso no olvides los corchetes

x es un campo

iif(int([x])=[x];[x];int([x]+1))

Atentamente

b747fred
0
buffon74 > b747fred
 
Estaba buscando en Internet cómo hacer el redondeo superior de un número real en Access. Encontré su mensaje que me ha ayudado enormemente.
Gracias.
0