Ver Mensaje Individual
  #1  
Antiguo 04-10-2008
ronalg ronalg is offline
Miembro
 
Registrado: may 2003
Ubicación: Sucre - Bolivia
Posts: 68
Reputación: 22
ronalg Va por buen camino
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 (orcentaje) tube que colocarlo asi en el foro porque me lo reconoce como un icono sancado la lengua
__________________
Saludos desde Sucre - Bolivia
"Si te lo puedes imaginar lo
puedes resolver" Pyriel
Responder Con Cita