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 21-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Hola, gracias por tu interés. la consulta la estoy realizando directamente en firebird utilizando la herramienta EMS Intebase Manager.
Responder Con Cita
  #2  
Antiguo 21-11-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
De que tipo de dato son los campos PRECIO y COSTO?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 21-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
son decimal(18,4).
Responder Con Cita
  #4  
Antiguo 21-11-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Quizás sea la visualización del EMS Interbase Manager quien te redondea el resultado.

Prueba esto, para confirmarlo : select cast(cast(precio as numeric(15,6)) / costo as varchar(50)) from producto

Si el problema no está en un redondeo en los componentes de presentación en pantalla, entonces prueba de cambiar el tipo a todos los operandos (en principio solo debería ser necesario hacerlo en el primero) :

select cast(precio as numeric(15,6)) / cast(costo as numeric(15,6)) from producto

NOTA: Aunque lo acabo de probar en una base de datos Firebird 2.0, y a mi me funciona correctamente solo cambiando el tipo en el primer operando, tal y como te recomendé en el mensaje anterior. Así que aunque el EMS Interbase Manager te muestre solo 4 caracteres, en tu aplicación deberías poder mostrar correctamente los 6 caracteres que en realidad devuelve la consulta.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 21-11-2011 a las 23:46:37.
Responder Con Cita
  #5  
Antiguo 22-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Question

Bueno aun nada, tratare de ser mas especifico.

Código SQL [-]
SELECT
       (cast(costo as NUMERIC(15,6)) + cast((cast(costo as NUMERIC(15,6)) * (pcj_venta1/100)) as numeric(15,6))) / cast(costo as NUMERIC(15,6))
FROM productos
WHERE id = 147

La primera parte del select hace referencia al precio : (cast(costo as NUMERIC(15,6)) + cast((cast(costo as NUMERIC(15,6)) * (pcj_venta1/100)) as numeric(15,6)))

La segunda al costo : cast(costo as NUMERIC(15,6)).

El porcentaje de venta pcj_venta1 no es mas que una variable de tipo decimal(4,4).

El resultado luego de realizar la consulta donde el costo es 12987 y precio es 15516.8876 es el siguiente... 1.1284.

Ahora el por que. requiero hacer esto... bueno sucede que el cliente el margen de utilidad esta dado por ((precio/costo)-1))*100 donde reemplazando me dará una utilidad de 12.8449, pues bien, ahora el cliente compro no a 12987 sino a 11000 pero se requiere que el precio de venta se mantenga por lo tanto calculo el precio actual y lo divido entre el nuevo costo para actualizar el margen de utilidad en la tabla.

Espero quizás me entiendan el porque de la necesidad de los decimales ya que con solo los cuatro del resultado 1.1284 al restarle 1 y multiplicarlo por 100 me da 12.84 donde el precio se vera afectado... como enrredado cierto!
Responder Con Cita
  #6  
Antiguo 22-11-2011
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 24
RONPABLO Va por buen camino
Prueba con lo que te dijo Chris (double precision)
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #7  
Antiguo 22-11-2011
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Efectivamente... gracias a todos. Ya funciono la cuestión estaba en hacerle cast a pcj_venta1 era lo único y listo.. claro esta utilice el double precisión. Por ultimo habrá mucha diferencia en utilizar double precision y decimal o numeric?
Responder Con Cita
  #8  
Antiguo 21-11-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Creo que es ahí el detalle. Los campos no son de DOUBLE PRECISION. Necesitas convertir a DOUBLE PRECISION los campos COSTO y PRECIO al momento de hacer la consulta: Por ejemplo;
Código SQL [-]
select cast(a.precio as double precision) / cast(a.costo as double precision) from ...

Puedes leer más al respecto en http://www.firebirdfaq.org/faq79/

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
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
Decimales eduardo360 Varios 1 19-02-2008 03:29:28
Decimales en una consulta (TQUERY ) a paradox Wonni Conexión con bases de datos 6 14-11-2006 22:22:33
Decimales Luis Alberto Varios 1 19-05-2006 17:40:25
decimales jfontane Varios 2 24-06-2003 06:35:19
Decimales alexisns Conexión con bases de datos 2 22-06-2003 22:45:40


La franja horaria es GMT +2. Ahora son las 18:06:39.


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