Autor Tema: Problema con datos Reales  (Leído 52 veces)

0 Usuarios y 1 Visitante están viendo este tema.

facknner

  • Newbie
  • *
  • Mensajes: 20
    • Ver Perfil
  • Institución: Universidad Nacional del Comahue
  • Nombre y apellido: Cristian ILABACA
  • Sistema: siu toba
  • Teléfono laboral: 0299-4490358
  • Utilizo algun sistéma del SIU: Sí
Problema con datos Reales
« : mayo 15, 2019, 11:59:35 am »
Hola resulta que tengo un campo importe de tipo real en la base, cuando quiero modificar un registro donde el monto es por ejemplo 11234,65 desde el formulario, me sale este error:
Citar
Error de concurrencia en la edición de los datos.

Mientras Ud. editaba esta información, la misma fue modificada por alguien más. Para garantizar consistencia sólo podrá guardar cambios luego de reiniciar la edición.

Ahora si lo grabo con un monto en 11234,60 no de ese error o por ejemplo con un monto de 9889,45 lo graba bien.
Que puede ser, hay algún problema con los datos de tipo real, es mejor usar doble precisión?


richard

  • Moderador Global
  • *****
  • Mensajes: 2627
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Problema con datos Reales
« Respuesta #1 : mayo 16, 2019, 11:11:00 am »
Cristian,

es un problema de representacion, Postgres guarda los campos float/double con precision variable y es distinta de la que maneja PHP... por  lo tanto cuando se intenta hacer la SQL para determinar si un registro en la bd se modifico, devuelve un falso positivo.. ya que  "3.14159" != "3.14159265359"... una opcion es forzar a Postgres a utilizar cierta precision, la otra es forzar a PHP y esperar que no tome en cuenta los ceros restantes postgres al realizar la consulta.

Lo mejor para ese caso seria definir el campo en cuestion como NUMERIC o DECIMAL y especificar precision/scale... pero el tema es que tenes que asegurarte de no enviar un valor que supere la cantidad de decimales... porque ahi hace el redondeo postgres. Por otra parte, precision determina la cantidad maxima de digitos del valor... con lo cual tenes un tope maximo tambien.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.