Access - redondear hacia arriba

 
Vista:

redondear hacia arriba

Publicado por jose (1 intervención) el 02/12/2006 15:30:29
hola necesito darle formato a un campo de una tabla (access) para que al ingresar un numero por ejemplo si es 2,1 aparezca 3 o sea redondee hacia arriba, en regla de validacion de ese campo uso la funcion redondear.mas pero me da error no me reconoce al campo, si alguien sabe como puedo hacer por favor que me responda, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:redondear hacia arriba

Publicado por mi menda (1111 intervenciones) el 04/12/2006 04:54:00
Puedes poner esto en el evento al salir del campo. No se si abra una funcion para esto en VB.

Private Sub Numero_Exit(Cancel As Integer)

Dim intPosicionDecimal As Integer
Dim lngRedondeoMas As Long

If IsNull(Me.Numero) Then Exit Sub

intPosicionDecimal = InStr(Me.Numero, ",")

If intPosicionDecimal = 0 Then
Exit Sub
Else
lngRedondeoMas = Left(Me.Numero, intPosicionDecimal) + 1
Me.Numero = lngRedondeoMas
End If

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:redondear hacia arriba

Publicado por mi menda (1111 intervenciones) el 05/12/2006 00:39:59
Jose.
Me he dado cuenta de un error. Si alguien introduce un número con decimales 0 (125,00), el procedimiento dará 126. Además como el código que te he pasado no me convencia, he mirado algunas funciones númericas, y he encontrado la función Fix(), que devuelve la parte entera del número pasado como parametro, con lo que solo hay que comparar el entero devuelto con el valor del campo (sí el valor devuelto es igual al valor del campo, los decimales introducidos serian 0, ó ninguno; si el entero devuelto es menor que el valor del campo, los decimales del campo serian mayor de 0).
Además ahora el código es más sencillo. Pon el código en el evento al salir, o despues de actualizar:

Dim ExtraerEntero As Long

If IsNull(Me.NombreCampo) Then Exit Sub

ExtraerEntero = Fix(Me.NombreCampo)

Select Case Me.NombreCampo
Case Is = ExtraerEntero
Me.NombreCampo = ExtraerEntero
Case Is > ExtraerEntero
Me.NombreCampo = ExtraerEntero + 1
End Select
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:redondear hacia arriba

Publicado por Luis (1 intervención) el 31/08/2007 00:07:11
Posiblemente se una solucion muy obvia y no tiene nada del otro mundo, pero es algo asi como una regla matematica que podria servirte, yo tenia el mismo problema, necesitaba que los registros de una tabla siempre se redondearan hacia arriba, lo unico que hice fue indicar la expresion ROUND(numero + .5) o sea que siempre se va a redondear al numero entero mas proximo unicamente sumandole a ese numero .5 y redondeando el resultado...

Tarde pero seguro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:redondear hacia arriba

Publicado por Jose (1 intervención) el 26/06/2012 18:48:45
Hola Luis

Yo tengo también el mismo problema que el compañero que abrió esta consulta. Tengo un access que una de las columnas es una división entre otras dos y no son números divisibles, por lo que lógicamente me da decimales.

Yo busco redondear ese resultado, de esta forma: si es 0.1 me ponga 1, si es 0.6 también, si es 1.1 me ponga 2, es decir, siempre a la alza, sin decimales, pero no yendo a la baja en el caso de que sea algo que no suba más allá de medio punto sobre el número entero.

No se si el comando FIX que pones en la anterior respuesta sirve, pero el redondeo sumando 0.5 no vale ya que a veces, dependiento del pico, me sube uno más, y el dato se dispara(lo he probado con más constantes y tampoco)

Espero haberme explicado bien. Si la solución es el FIX ¿me puedes decir donde poner ese código? Yo de programación poca idea la verdad.

Gracias de antemano y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

redondear hacia arriba

Publicado por Andrés (1 intervención) el 20/05/2014 16:37:21
Hace tiempo tuve el mismo problema y lo solucione creando una función RedondearAMas (Numero,Presición)

Aqui te paso la función

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function RedondearAMas(ByVal Numero As Currency, Optional ByVal Decimales As Long = 0) As Currency
If Decimales < 0 Then
RedondearAMas = Numero
Exit Function
End If
 
RedondearAMas = Int(Numero)
RedondearAMas = RedondearAMas + _
Int((Numero - RedondearAMas) * _
10 ^ Decimales) / _
10 ^ Decimales
If RedondearAMas < Numero Then
RedondearAMas = RedondearAMas + 10 ^ (-Decimales)
End If
End Function


Básicamente lo que hice es luego simplemente utilzarlo de la misma manera que uso la funcion redondear

Espero te sirva

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

redondear hacia arriba

Publicado por Israel (1 intervención) el 24/03/2018 08:07:42
Gracias por esta respuesta, me ayudó a hacer lo que dice.

Al que hizo la función... mil gracias.

Funciona con solo copy-paste, super.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

redondear hacia arriba

Publicado por Anonimo (3316 intervenciones) el 27/03/2018 13:02:57
ArribaSinDecimales = Int(Un_valor - ( Un_valor <> Int( Un_valor )))

Ventana de inmediato:

Un_valor = 78
?Int(Un_valor - ( Un_valor <> int( Un_valor )))
78

Un_valor = 78.0001
?int(Un_valor - ( Un_valor <> int( Un_valor )))
79

Un_valor = 78.999999
?int(Un_valor - ( Un_valor <> int( Un_valor )))
79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

redondear hacia arriba

Publicado por Fernando (15 intervenciones) el 26/03/2021 13:56:12
excelente! gracias! aplicado a impresion de eqtiquetas ( salen dos por etiquetas)

1
2
3
4
5
6
7
8
9
CopiasCant = Me.Texto120
 CopiasCant = CopiasCant / 2
 CopiasCant = Int(CopiasCant - (CopiasCant <> Int(CopiasCant)))
 If CopiasCant < 1 Then
 CopiasCant = 1
 End If
Call DoCmd.OpenReport("EtiquetasNotasDePedidos", acViewPreview)
 
DoCmd.PrintOut , , , , CopiasCant
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

redondear hacia arriba

Publicado por Ing_Jose Cortes (2 intervenciones) el 23/12/2019 15:16:02
Buenos días
.
Excelente Funcion muchas GRACIAS

En caso que quiera redondear a :

Unidad
Decena
Centana y demás

Solo modificó el 10?

Muchas gracias
atn. JOSE MANUEL CORTES
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar