Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2008
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Tipo de datos apto para cálculos monetarios

Saludos camaradas, mi pregunta es muy sencilla:

¿Qué tipo de dato es apropiado para almacenar cantidades monetarias en interbase y firebird?

Eso es todo...

Gracias por sus respuestas.
__________________
Herr Heins Faust
Responder Con Cita
  #2  
Antiguo 01-07-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Smile

Saludos.

Revisa este post:
http://www.clubdelphi.com/foros/show...ighlight=money
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #3  
Antiguo 01-07-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Hola,

Pues yo uso campos tipo float, no causan problemas a la hora de hacer calculos y para la parte visual ($ 1.000) uso el DisplayFormat
__________________
Web
Responder Con Cita
  #4  
Antiguo 01-07-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Yo uso Numeric(15, 2) y/o Double Precision, realmente en el ultimo que pienso es en el Float, ya que realmente me sucedieron varios disparates con él.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 01-07-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Cita:
Empezado por jhonny Ver Mensaje
Yo uso Numeric(15, 2) y/o Double Precision, realmente en el ultimo que pienso es en el Float, ya que realmente me sucedieron varios disparates con él.
Qué extraño amigo Johnny, yo siempre he usado Float y nunca me ha dado problemas, sí me ha dado problemas para calculos es el númeric por la coma.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 01-07-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Wink

yo utilizaba el Float... pero me dio muchos problemas... tanto para la parte visual como el manejo de algunos numeros que no me aceptaba o me los cambiaba... creo que deje algunos post con lo anterior (Interbase)...

cuando se muestra el valor por un DBGrid de un dato que es Float se ve 1588.23999023438 y lo que me debe mostrar es el 1588.24... lo raro es que cuando lo imprimo me aparece bien... pero en fin...


el otro problema lo tube con un valor de 127 millones y algo... que la cifra que ingrese no me la aceptaba, y realice varias pruebas y habian 3 o 4 numeros consecutivos que no los tomaba y los cambiaba... pense que era el tope, pero si ponia un numero superior si lo aceptaba...

así que me cambie al numeric...bueno,,, todo esto en Interbase 6

Salu2
__________________
BlueSteel
Responder Con Cita
  #7  
Antiguo 01-07-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Pues yo para la parte visual siempre usaba el DisplayFormat.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #8  
Antiguo 01-07-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Cita:
Empezado por BlueSteel Ver Mensaje
yo utilizaba el Float... pero me dio muchos problemas... tanto para la parte visual como el manejo de algunos numeros que no me aceptaba o me los cambiaba... creo que deje algunos post con lo anterior (Interbase)...

cuando se muestra el valor por un DBGrid de un dato que es Float se ve 1588.23999023438 y lo que me debe mostrar es el 1588.24... lo raro es que cuando lo imprimo me aparece bien... pero en fin...


el otro problema lo tube con un valor de 127 millones y algo... que la cifra que ingrese no me la aceptaba, y realice varias pruebas y habian 3 o 4 numeros consecutivos que no los tomaba y los cambiaba... pense que era el tope, pero si ponia un numero superior si lo aceptaba...

así que me cambie al numeric...bueno,,, todo esto en Interbase 6

Salu2
Bueno eso es algo importante, no tenia idea de los problemas que podria causar (Claro no se si en Firebird sea lo mismo), hasta ahora el unico tipo de dato que me causa problemas es el de fecha... pero bueno eso no va al caso.
__________________
Web
Responder Con Cita
  #9  
Antiguo 01-07-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Talking

bueno... corrigo... no eran con 127 millones.. el error ocurria con 27 millones ($27.220.415)

aquí dejo el hilo (Problema con campo Float en Interbase )

y aquí dejo otro hilo donde realizo una pregunta muy parecida.... ( tipos de datos...cual escojo ? )

salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 01-07-2008 a las 18:35:09.
Responder Con Cita
  #10  
Antiguo 01-07-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 19
felipe88 Va por buen camino
Ahora que lo pienso , si he tenido errores como el que planteas amigo BlueSteel en el primer hilo que mencionas; creia que eran los decimales, me ha pasado de que cuando hago un sum() en una tabla de unos 30.000 registros este me incrementa unos cuantos numeros (Ej: 21.536.450 = 21.536.472) mas o menos, aunque no me implica mayor complicacion en el momento si es de tener en cuenta este pequeño pero molesto detalle para otras eventualidades, ire estudiando los numeric y double precision ... algo nuevo para aprender.
__________________
Web
Responder Con Cita
  #11  
Antiguo 02-07-2008
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Hola familia.

Bueno creo que los tipos de datos ofrecidos por Interbase / Firebird son suficientes para todas las necesidades en nuestros sistemas, no comparto que motores de bases de datos como mySQL tienen una cantidad exagerada de tipos de datos.

Me parece que debemos utilizar para operaciones monetarias un decimal (15,2) pues permite manejar 2 decimales de precision que es lo que normalmente en los sistemas de gestion (contabilidades por ejemplo) se utiliza, o alguno de ustedes ha visto un cheque con tres cifras en la parte decimal ?, pues yo no lo he visto.

Los float son para calculo cientifico donde necesitamos manejar cantidad de digitos en la parte decimal, ademas, he observado que quienes utilizan float para sistemas de gestion, cuando se hacen sumatorias encuentran diferencias por la forma en que se maneja el redondeo.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #12  
Antiguo 03-07-2008
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Yo ya había probado con float, pero eso de los decimales me deja consternado, quizás en definiticva el valor más apropiado para cálculos monetarios se el Decima(15,2).

Gracias por sus respuestas compañeros
__________________
Herr Heins Faust
Responder Con Cita
  #13  
Antiguo 10-07-2008
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 524
Poder: 22
IVAND Va por buen camino
aumentar algo a todo esto (ojala haya leido todo) , les comento yo uso numeric(15,2) pero aun me siguen apareciendo esos numeros raros de decimales pero cambie el dialecto a 3 y hay funcionan bien pero cuando quiero crear una nueva tabla y creo un valor integer me sale un error en mi programa diciendo que es de tipo big integer y no me deja trabajar , utilizo firebird 1.5 , delphi 6 e IBX
__________________
IVAND
Responder Con Cita
  #14  
Antiguo 10-07-2008
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
como IVAND yo tambien cambie a numeric(9,2).

con float he tenido (y tengo) muchos problemas de redondeo.

pero para un nuevo programa cree la base de datos firebird en dialect 3, desde su inicio y los campos para moneda en numeric(9,2) y no he tenido problemas de redondeo.

los tengo en tablas anteriores aunque cambie a dialect 3.

segun vi en post anteriores, en dialect 1 es DOUBLE PRECISION y en dialect 3 es INT64 (un integer datatype).se tienen errores de redondeo en dialect 1


la base de datos la cree con IBExpert
__________________
Todos llevamos nuestros demonios a cuestas..

Última edición por gmontes fecha: 10-07-2008 a las 21:09:05.
Responder Con Cita
  #15  
Antiguo 23-07-2008
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 21
jzginez Va por buen camino
Hola amigos ya leí varios temas y este es el que mas se acerca a lo que quiero, tengo el también el problema con los decimales, uso el tipo de dato decimal(15,2) el cual me funciona muy bien, el problema que tengo es a la hora de comparar 2 cantidades de un calculo con estos datos, las tablas que tengo son ventas y abonos.

tabla ventas
....
id integer,
subtotal decimal(15,2),
pimpuesto decimal(15,2),
impuesto computed by (subtotal * impuesto / 100),
total computed by (subtotal + impuesto),
......

p/e:
id = 1
subtotal = 142.90
pimpuesto = 15
impuesto = 21.435
total = 164.335

en delphi con la propiedad displayformat el total lo muestro como $164.30

tabla abonos
.......
id_venta integer,
monto decimal(15,2)
.......
p/e:
id_venta = 1
monto = 164.30

visualmente esta bien el cliente me pago la cantidad correcta de la venta, pero el problema se presenta al hacer una vista en base a la siguiente consulta para saber cuanto me deben mis clientes:
Código SQL [-]
 select ventas.id, ventas.total, (select sum(abonos.monto) from abonos where abonos.id_venta = ventas.id)) abonos, (Ventas.total - (select sum(abonos.monto) from abonos where abonos.id_venta = ventas.id))) saldo
from ventas

para este ejemplo me dice que este cliente me debe 0.035, cuando no debe de ser así porque trunque el total, alguien me puede decir como debo de filtrar mi consulta para que estas diferencias tan chicas las elimine o en el campo saldo me ponga 0

gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8)
Jorge Zamora Ginez
Puebla, Pue. México
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Calculos con tipo Time Cañones SQL 1 25-04-2007 19:29:11
Problema en tipo de Datos.. marceloalegre Varios 5 30-10-2006 16:09:13
tipo de dato para realizar calculos?? Leogiro OOP 1 16-09-2004 02:10:15
Tipo de datos Letty Conexión con bases de datos 4 13-01-2004 21:19:48
El Juicio (No apto para impresionables) delphi.com.ar Humor 10 12-12-2003 21:51:16


La franja horaria es GMT +2. Ahora son las 13:57:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi