Access - Formato con decimales, evitar que aparezcan en caso de enteros

 
Vista:

Formato con decimales, evitar que aparezcan en caso de enteros

Publicado por Fofitólogo (40 intervenciones) el 25/04/2020 11:16:35
Hola,

Tengo un campo cuadro de texto calculado en un formulario, en el que quiero que me muestre el resultado numérico con un solo decimal.

Pero en el caso de que no tenga decimales (entero) me aparezca sin decimales.

En las propiedades del cuadro de texto tengo puesto Formato Estandar y lugares decimales 1. En caso de que el resultado sea 4,24 hace lo que busco (4,2) pero si es 4 me aparece el decimal (4,0)

He probado a poner Formato Número general y lugares decimales 1, pero aunque en caso de número entero no me coloca decimales, cuando el resultado tiene más de un decimal me aparecen varios y no me respeta la limitación de un decimal (por ejemplo 6,465 en lugar de 6,5 que es lo que busco)

¿Qué formato debería darle a este campo?
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

Formato con decimales, evitar que aparezcan en caso de enteros

Publicado por Anonimo (3316 intervenciones) el 25/04/2020 19:59:50
Lo que importa es lo que se muestra o lo que se necesita es que solo tenga un decimal …..

En el caso de que 'lo importante' es que solo permita un decimal, lo optimo seria utilizar la función ROUND o la alternativa de manipularlo por cuenta propia (por ejemplo: se le multiplica por diez, se toma SOLO la parte entera y se divide por diez) …

Ya tendríamos un dato que o es entero (sin decimales que mostrar) o muestra un único decimal (porque no tiene mas)
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

Formato con decimales, evitar que aparezcan en caso de enteros. Solucionado.

Publicado por Fofitólogo (40 intervenciones) el 26/04/2020 09:45:17
Hola,
ostrás, pues estaba fácil...no me había planteado que directamente hubiera función a esos efectos.

Me va perfecta. He envuelto la expresión que tenía de cálculo en el origen de control por REDONDEAR ("mi expresión";1) ya que mi access está en español y ya realiza exáctamente lo que quiero.

Muchas gracias

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

Campo de formulario con decimales, limitar entrada a un decimal

Publicado por Fofitólogo (40 intervenciones) el 26/04/2020 20:40:39
Hola,
Aunque no es sobre lo originalmente preguntado en el hilo aprovecho tu respuesta para plantear otra duda respecto al mismo formulario.

En este caso, en un campo cuadro de texto en este caso "independiente" ya que es el usuario el que introduce el dato numérico, quiero que este esté limitado a máximo un decimal.
Aunque esto ya lo implementé con una máscara de entrada (gracias al forero Francisco) he visto que no me convence del todo esta forma. Me gustaría que no aparecieran los símbolos de la máscara de entrada al introducir el dato el usuario y sobre todo no me gusta que hay que ser preciso al colocar el cursor. Por ejemplo si se entra en este campo a través del tabulador (con la máscara que tengo 90,9), se empieza a introducir el número en la posición del primer 9 que en el 99% de los casos obliga a borrar y cambiar la posición con el ratón (por la del 0 de la máscara que es más habitual) y volver a introducir.

Si puede ser me gustaria hacer entonces esto de otra forma y he pensado en hacerlo mediante código. He pensado en tu referencia de multiplicar por 10. En el evento "After Update" de dicho campo podría preguntar si la multiplicación de 10 por el campo no resulta Entero entonces que lo dé por inválido y/o salte un mensaje.

Me quedo en If 10*Me.Nombredelcampo<> ... Pero no sé si hay algún parámetro para verificar si es Entero.

Es un hilo de idea que se me está ocurriendo, pero no sé si lo estoy complicando demasiado.

En cualquier caso agradecería cualquier ayuda para esto de limitar la entrada de decimales. Resaltando que lo de la máscara ya lo he utilizado pero prefiero otra cosa.
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

Campo de formulario con decimales, limitar entrada a un decimal

Publicado por Anonimo (3316 intervenciones) el 26/04/2020 22:05:46
La forma de verificar si un numero cualquiera es o no entero, consiste en convertirlo a entero y compararlo consigo mismo, solo le quedan dos opciones:

Son iguales ---> bien
NO son iguales ----> mal

1
IF A = Int(A) Then …..

--- Acoto ---
Por curiosidad he ojeado el hilo mencionado y me llama la atención que no se le aplique el método propuesto en la validación, porque para evitar los decimales en exceso basta poner ese limite en la validación, a Access le da lo mismo un :
entre 5 y cien
que
entre 0.00022 y 33

Para Access son simples números lo que representen es otra cosa (representaran lo que el programador considere adecuado)
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

Campo de formulario con decimales, limitar entrada a un decimal

Publicado por Fofitólogo (40 intervenciones) el 27/04/2020 14:57:33
Hola, Estupendo. Muchas gracias.

Lo de verificar esto también con la regla de validación se me había pasado por la cabeza pero lo descartaba porque pensaba que ahi no se podía hacer (no siempre la ignorancia es atrevida). Pero la verdad es que pudiendo hacerlo me parece una solución buena. Mejor que en el código.

Así que me he puesto manos a la obra teniendo en cuenta lo de multiplicar por 10 y la forma de comprobar que es entero...

Tras devanarme los sesos he sacado 10*Nota=Int(10*Nota) como la validación que buscaba. (Nota es el nombre de mi campo)

Finalmente y también tras arduas dudas y probatinas de qué operadores lógicos utilizar para enlazarlo con las anteriores reglas de validación que ya tenía para ese campo, he conseguido mi objetivo con esta:

Es Nulo O (>=0 Y <=10 Y (10*[Nota])=Int(10*[Nota]))

Por rizar el rizo se me ocurre una duda al respecto de estas reglas de validación "múltiples", ya poco importante, por curiosidad más que nada.

¿Se pueden implementar alternativos "Textos de validación" para la validación de un campo?

Es decir, por ejemplo en este caso...En el texto de validación pongo "El valor debe estar entre 0 y 10 y con un decimal máx"

Pero, si se pudiera poner un texto para cada caso diferente en que se infrinja la regla de validación, podría aplicar que salte "El valor debe estar entre 0 y 10" o "El valor debe tener un decimal máx" en función de la regla que se estuviera incumpliendo.
¿Es posible?
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

Campo de formulario con decimales, limitar entrada a un decimal

Publicado por Anonimo (3316 intervenciones) el 28/04/2020 10:04:39
Has logrado validar el dato y entiendes lo que has hecho.

Solo una observación:
El proceso que se esta empleando es un proceso asistido (lo asiste el propio Access)

Ir a procesos mas complicados exige el crear procesos propios que tendrán que ser planteados analizados y corregidos para que funcionen siempre bien (aquí Access no intervendría como auxilio y guía)

Lo que implica conocer mejor las posibilidades y requerimientos del entorno, algo que necesita básicamente: tiempo, dedicación y 'abrir la mente' a los nuevos conceptos que si bien abren posibilidades -a veces abrumadoras- también imponen condiciones.
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

Campo de formulario con decimales, limitar entrada a un decimal. Solucionado

Publicado por Fofitólogo (40 intervenciones) el 28/04/2020 17:41:39
Ya entiendo.

¡Gracias!

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