Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2008
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 378
Poder: 24
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
  #2  
Antiguo 03-07-2008
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 21
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
  #3  
Antiguo 10-07-2008
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 531
Poder: 24
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
  #4  
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: 23
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
  #5  
Antiguo 23-07-2008
Avatar de jzginez
jzginez jzginez is offline
Miembro
 
Registrado: sep 2003
Ubicación: Puebla, México
Posts: 247
Poder: 24
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 20:07:43.


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