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 31-01-2006
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Problemas con SP :-(

Hola a todos

Tengo un problema en mi Sp explico el problema te

Tengo una tabla que contiene los productos que tienen relacion con un producto (unidos por key_producto) , el SP lo que deberia hacer es llamar todos los productos que tengan relacion con este codigo dar de baja el saldo e insertar en los historicos pero resulta que me barre todos los productos de mi tabla productos

El query lo pruebo desde la consola me funciona perfecto enviando el mismo parametro alguien me puede ayudar


Cita:
CREATE PROCEDURE BAJAR_COMBO (
KEY_VIENE INTEGER,
KEY_CAB INTEGER,
KEY_PRODUCTO INTEGER,
CANTID NUMERIC(15,2))
AS
DECLARE VARIABLE KEY_PRODUB INTEGER;
DECLARE VARIABLE KEY_PROD INTEGER;
DECLARE VARIABLE PCOSTO NUMERIC(15,4);
DECLARE VARIABLE BAJAR_CANTIDAD NUMERIC(15,2);
DECLARE VARIABLE PRECIO_ULT NUMERIC(15,4);
DECLARE VARIABLE PRECIOA NUMERIC(15,4);
DECLARE VARIABLE PRECIOB NUMERIC(15,4);
DECLARE VARIABLE PRECIOC NUMERIC(15,4);
begin
/* Procedure Text */
FOR Select pc.key_producto,pc.key_producto_b,(pc.cantidad*:cantid) Bajar,p.pre_cos,p.precio_uing,
p.precioa,p.preciob,p.precioc
from pdet_compuesto pc, producto p
Where pc.key_producto=p.key_producto
and p.key_producto=:key_producto
INTO :KEY_PROD,:KEY_PRODUB,:BAJAR_CANTIDAD,:PCOSTO,:PRECIO_ULT,:PRECIOA,:PRECIOB,:PRECIOC do
BEGIN
Update producto set saldo_fac=saldo_fac-:Bajar_cantidad
Where key_producto=:Key_prod;
/* Se da de baja a las bodegas*/
Update producto_bodega set cantidad=cantidad-:Bajar_cantidad
Where key_producto_b=:Key_produb;
/* Se Ingresa a los Historicos */
Insert Into His_mov(key_producto_b,Key_viene,viene_de,tp_mov,key_cabeza,cod_transac,key_caja,fecha_sys,cantidad, subtotal,pre_cos,Pre_uing,PrecioA,PrecioB,Precioc,saldo)
Values(:KEY_PRODUB ,:KEY_viene,'E', -1, :KEY_CAB, 'VEN', null, 'Now', :BAJAR_CANTIDAD,1,costo,:PRECIO_ULT,:PRECIOA,:PRECIOB,:PRECIOC,0);

END
suspend;
end
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 01-02-2006
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Poder: 20
cuburu Va por buen camino
Quizas deberías de reestruturar tu código un poco:

Código:
CREATE PROCEDURE BAJAR_COMBO (
                                                 KEY_VIENE INTEGER,
                                                 KEY_CAB INTEGER,
                                                 KEY_PRODUCTO INTEGER,
                                                 CANTID NUMERIC(15,2))
AS
  DECLARE VARIABLE KEY_PRODUB INTEGER;
  DECLARE VARIABLE KEY_PROD INTEGER;
  DECLARE VARIABLE PCOSTO NUMERIC(15,4);
  DECLARE VARIABLE BAJAR_CANTIDAD NUMERIC(15,2);
  DECLARE VARIABLE PRECIO_ULT NUMERIC(15,4);
  DECLARE VARIABLE PRECIOA NUMERIC(15,4);
  DECLARE VARIABLE PRECIOB NUMERIC(15,4);
  DECLARE VARIABLE PRECIOC NUMERIC(15,4);
begin
/* Procedure Text */
FOR SELECT pc.key_producto,pc.key_producto_b,(pc.cantidad*:cantid) Bajar, p.pre_cos, p.precio_uing, p.precioa, p.preciob, p.precioc
FROM pdet_compuesto pc inner join producto p 
                 on pc.Key_Producto = p.key_producto
WHERE p.key_producto = :key_producto
INTO :KEY_PROD, :KEY_PRODUB, :BAJAR_CANTIDAD, :PCOSTO, :PRECIO_ULT, :PRECIOA, :PRECIOB, :PRECIOC do
BEGIN
  Update producto set saldo_fac = saldo_fac - :Bajar_cantidad
  Where key_producto = :Key_prod;

/* Se da de baja a las bodegas*/
  Update producto_bodega set cantidad = cantidad - :Bajar_cantidad
  Where key_producto_b = :Key_produb;

/* Se Ingresa a los Historicos */
  Insert Into His_mov(key_producto_b, Key_viene, viene_de, tp_mov, key_cabeza, cod_transac, key_caja, fecha_sys, cantidad, subtotal, pre_cos, Pre_uing, PrecioA, PrecioB, Precioc, saldo)
Values(:KEY_PRODUB, :KEY_viene, 'E', -1, :KEY_CAB, 'VEN', null, 'Now', :BAJAR_CANTIDAD, 1, costo, :PRECIO_ULT, :PRECIOA, :PRECIOB, :PRECIOC, 0);
END
suspend;
end
pues no encuentro un verdadero problema para ello, quizas no he revisado bien pero creo que ncesesitas reestructurar un poco tus consultas. He notado que utilizas producto cartesiano para ello en lugar de un inner join. Quizas enviandonos las estructuras de las tablas te pueda ayudar alguien del foro.

Suerte.
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
Problemas y mas problemas... zugazua2001 Impresión 3 22-12-2006 20:46:36
Problemas con instalacion y archivo idr20009.dll allende Varios 0 19-01-2006 15:46:33
Problemas al Imprimir en WinXP AGAG4 Impresión 6 20-12-2005 01:16:43
Aplicacion con problemas. gasal Lazarus, FreePascal, Kylix, etc. 4 21-02-2005 12:49:00
problemas con Export pack y win 98 cuxoapat Impresión 1 20-05-2003 09:56:47


La franja horaria es GMT +2. Ahora son las 04:44:01.


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