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)
-   -   problema con resultado de SP (https://www.clubdelphi.com/foros/showthread.php?t=29807)

Choclito 01-02-2006 20:21:12

problema con resultado de SP
 
hola amigos del foro, comentarles que estoy haciendo un sistema de control de una farmacia y me pidieron un informe del movimiento fisico mensual y para lo cual hice el siguiente SP en el cual saco un listado de todos los medicamentos y luego de cada uno de ellos saco saldo anterior, saldo actual,egresos,ingresos, pero tengo el problema de que cuando quiero sacar el saldofisico de un medicamento y el resultado es null quiero asignar a ese valor el saldo anterior no me hace nada y al contrario cuando ejecuto el sp si el medicamento xxxx tiene saldo fisico 20 y luego el yyyyy y el zzzz votan resultado de null en la ejecucion me arrastra el ultimo valor en este caso 20 como puedo hacer para que mi Sp vote null si el select vota un resultado de null
el codigo es el siguiente
/******** en esta parte obtengo a todos los medicamentos****/
for
select c.nrocuentacon,c.descripcion,t.codtipomaterial,t.detalle,m.codmaterial,m.descripcion,m.unidad
from saldo s, materialmedicamento m,material_tipomaterial mt,tipo_material t,
tipomaterial_cuentacontable tc,cuenta_contable c
where ((s.detalle like '* SALDO%')AND(s.codm=m.codmaterial)AND(m.codmaterial=mt.codm)and(mt.codtm=t.codtipomaterial)and
(t.codtipomaterial=tc.codtipomaterial)and(tc.nrocuentacon=c.nrocuentacon)and (c.nrocuentacon like '125%'))
into :nrocuenta,:nombrecuenta,:nrotipo,:detalle,:codigom,:nombrec,:unidad
do
begin
/*******aqui obtengo el saldo del mes anterior de cada medicamento **/
select saldocantidad
from mostrar_saldo (:anio,:mes,:codigom)
into :saldocantidad;
/*******en este select es donde tengo problemas
obtengo el saldo actual de cada medicamento
select saldo.saldofisico
from saldo s
where ((saldo.codm=:codigom) and (extract (year from s.fecha)=:anio)and (extract (month from s.fecha)=:mes)
and (saldo.valido='V' or (saldo.detalle like '*%') ))
into :fisicoactual;
/**** pregunto si el resultado del select anterior es null y quiero q ese valor sea 0 pero no me hace nada cuando ejecuto el SP***////

if (fisicoactual IS NULL) then
fisicoactual=0;
suspend;

Y como les comentaba cuando ejecuto el SP si la variable fisicoactual tiene el valor null se carga a esa variable el valor anterior del medicamento anterior , como puedo solucionar ese problema, me explico de mejor manera
Valor esperado Valor generado por el SP
CodigoM fisicoactual fisicoactual
0102 23 23
0103 null 23
0104 121 121
0105 null 121
0106 null 121

Espero me hayan entendido y como veran los valores se repiten cuando el valor obtenido es null, ahhhh estoy trabajando con firebird 1.5 e ibexpert

Muchas gracias por la ayuda que me brinden


La franja horaria es GMT +2. Ahora son las 10:29:42.

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