Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problemas con porcentajes (https://www.clubdelphi.com/foros/showthread.php?t=60508)

ronalg 04-10-2008 00:41:21

Problemas con porcentajes
 
Buenas amigos, como siempre buscando ayuda:

El asunto es el siguiente:

Tengo dos tablas:

Código SQL [-]
TB_VENTAS (
cod integer,
fecha TdateTime,
ref_proveedor integer [FK],
tipo_descuento integer[FK],
tipo compra integer [FK],
total decimal(10,2) )

TB_ITEMS_VENTAS (
cod integer,
ref_venta integer,
ref_producto integer,
precio_unitario decimal(10,2),
precio_unitario_descuento decimal(10,2),
cantidad integer,
subtotal decimal(10,2))

ademas tengo un trigger after_update para
Código SQL [-]
TB_VENTAS
, el cual en una parte verifica si se modifico el campo
Código SQL [-]
tipo_descuento
, si es asi ejecuta esta instrucción:

Código SQL [-]
update table tb_items_venta
set precio_unitario=precio_unitario_descuento*(1-( : porcentaje/100))
where ref_venta=new_cod;

para actualizar todos los precios de los items de la venta y queden de acorde con el decuento seleccionado (el parámetro : porcentaje se lo extrae previamente de otra tabla
Código SQL [-]
TB_TIPOS_DESCUENTOS
), lo que he descubierto es "FALLA LA DIVISION", asi es todo el factor
Código SQL [-]
*(1-(: porcentaje/100))
no calcula, pero si lo cambio por algo asi
Código SQL [-]
*(1-0.2)
funciona, y tampoco es el valor del parámetro : procentaje, pues si coloco
Código SQL [-]
*(1-: porcentaje)
también funciona, pero el calculo es incorrecto pues : porcentaje esta en tantos por ciento y se lo necesita en tantos por uno, todo esto me hace suponer que el error esta en la división
Código SQL [-]
*(1-(: porcentaje/100))

Uso EMS manager 3.0 y tambien IB-SQL, con firebird 1.5.

Muchas gracias de antemano por su ayuda

NOTA el espacio entre : y porcentaje (:porcentaje) tube que colocarlo asi en el foro porque me lo reconoce como un icono sancado la lengua

enecumene 04-10-2008 00:45:23

Pregunta: ¿es un procedimiento almacenado? ¿declaraste :porcentaje en el SP?)

ronalg 04-10-2008 03:27:57

Cita:

Empezado por enecumene (Mensaje 318068)
Pregunta: ¿es un procedimiento almacenado? ¿declaraste :porcentaje en el SP?)

no uso un SP uso un trigger
Cita:

trigger after_update

enecumene 04-10-2008 04:05:31

Cita:

Empezado por ronalg (Mensaje 318099)
no uso un SP uso un trigger

Bueno amigo sólo pregunto, porque a través de un trigger también puedes disparar un procedimiento ;)

Saludos.

ronalg 04-10-2008 21:10:39

mmmmmmmmmmm sera por las transacciones
 
Cuando creas una venta se crea un registro en una tabla y ese registro es maestro para los items de la venta que estan en una tabla detalle, los SP usan transacciones independientes, todo lo que haga un SP tiene su propia transacción, si disparo un procedimiento no podre deshacer ls inserción (o tendre que hacerlo con código) en sencillas palabras "Cuestion de gustos"
Lo que me preocupa es el problema de la division que falla.
"Creo que ya encontre el error" les cuento luego


La franja horaria es GMT +2. Ahora son las 11:09:30.

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