FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
problema con procedimiento almacenado
Hola amigos del foro nuevamente quisiera perdirles su ayuda que siempre ha sido muy valiosa
Primero decirles que trabajo con Ibexpert y con Firebird 1.5 el problema que tengo es el siguiente: tengo dos tablas una ingreso(codmaterial,codproveedore,codingreso,fecha,cantidad,precio) y otra kardex (codmaterial,fecha,cantidadentrada,cantidadsalida,saldobs,saldofisico,precioponderado,validez) entonces lo que quiero hacer es crear un disparador para que cuando haga tenga un nuevo ingreso esos valores se actualicen en la tabla kardex y de esa forma tener siempre actualizadoel kardex de materiales entonces el disparador que hice en ibexpert es el siguiente: (el trigger actua sobre la tabla ingreso despues de insertar) declare variable codigo CHAR(4); declare variable COD CHAR(4); declare variable nombrep varchar (45); declare variable fisico integer; declare variable bs numeric (6,2); BEGIN if (ingreso.codp is not null) then begin select proveedor.nombrep from proveedor where (proveedor.codp=ingreso.codp)into :nombrep; end else begin nombrep='REINGRESO'; end SELECT CODM FROM SALDO WHERE SALDO.CODM=INGRESO.CODM INTO :COD; IF (COD IS NULL) THEN BEGIN INSERT INTO SALDO (CODM,TOTALINGRESO,TOTALEGRESO,SALDOFISICO,SALDOBS,PPP,FECHA,DETALLE,VALIDO) VALUES (INGRESO.CODM,INGRESO.CANTIDAD,0,INGRESO.CANTIDAD,INGRESO.PRECIOCOMPRA, (INGRESO.PRECIOCOMPRA/INGRESO.CANTIDAD),ingreso.fechacompra,'C.L. de '||:nombrep,'V'); END ELSE BEGIN for select saldo.codm ,saldo.saldofisico ,saldo.saldobs from saldo where ((saldo.codm=ingreso.codm) and (saldo.valido = 'V'))into :codigo,:fisico,:bs do begin update saldo set saldo.valido='F' where saldo.codm=ingreso.codm; INSERT INTO SALDO (CODM,TOTALINGRESO,TOTALEGRESO,SALDOFISICO,SALDOBS,PPP,FECHA,DETALLE,valido) VALUES (:codigo,INGRESO.CANTIDAD,0,(INGRESO.CANTIDAD+:fisico),(INGRESO.PRECIOCOMPRA+:bs), (INGRESO.PRECIOCOMPRA/INGRESO.CANTIDAD),ingreso.fechacompra,'C.L. de '||:nombrep,'V'); end END END bueno entonces cuando hago el primer registro en la tabla ingreso para el material 0001 (por ejemplo ) me registra sin problemas , para un segundo registro para el mismo material tambien no tengo problemas, el problema es cuando quiero hacer un tercer registro del mismo material 0001 en la tabla ingreso me sale el mensaje de multiple rows in singleton select . multiple rows in singleton select (en ib expert) creo que el problema esta la parte del codigo que esta en negrilla pero cuando hago una consulta normal me muestra solo un registro lo cual esta bien bueno la verdad nose donde esta el error quisiera porfavor que me den una manito con el problema que tengo Para ser mas claro lo que quiero hacer es que cada que hago un registro en la tabla ingreso me actualize la tabla kardex del material en si lo que quiero actualizar es o son los saldos fisicos y monetarios de cada material que se registre Bueno espero me colaboren porfavor y muchas gracias de ante mano por leer este hilo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|