Fw: [firebase-br] Stored Procedure Selecionável - "Referência Cruzada"
Kléber Caneva
kdcc em terra.com.br
Qua Abr 12 11:33:13 -03 2006
Jader Ricardo,
Tente com o código alterado abaixo. (Tem um comentario indicando a alteração)
[]´s
Kléber Caneva
SELECT COUNT(*)
FROM TBSERVICOSARECEBER
INTO :VARTOTREG;
VARREGATU = 0;
FOR
SELECT SAR.PACSAR, PAC.DESPAC, EXTRACT(MONTH FROM SAR.DTSSAR),SAR.ENTSAR
FROM TBSERVICOSARECEBER SAR
LEFT JOIN TBPACIENTE PAC ON SAR.PACSAR = PAC.CODPAC
ORDER BY PAC.DESPAC
INTO :VARCODPAC, :VARDESPAC, :VARMESENT, :VARENTSAR
DO
BEGIN
VARREGATU = VARREGATU +1;
IF (:VARDESPA2 <> :VARDESPAC) THEN
BEGIN
PSCODPAC = :VARCODPA2;
PSDESPAC = :VARDESPA2;
PSMESJAN = :VARMESJAN;
PSMESFEV = :VARMESFEV;
PSMESMAR = :VARMESMAR;
PSMESABR = :VARMESABR;
PSMESMAI = :VARMESMAI;
PSMESJUN = :VARMESJUN;
PSMESJUL = :VARMESJUL;
PSMESAGO = :VARMESAGO;
PSMESSET = :VARMESSET;
PSMESOUT = :VARMESOUT;
PSMESNOV = :VARMESNOV;
PSMESDEZ = :VARMESDEZ;
VARMESJAN = NULL;
VARMESFEV = NULL;
VARMESMAR = NULL;
VARMESABR = NULL;
VARMESMAI = NULL;
VARMESJUN = NULL;
VARMESJUL = NULL;
VARMESAGO = NULL;
VARMESSET = NULL;
VARMESOUT = NULL;
VARMESNOV = NULL;
VARMESDEZ = NULL;
SUSPEND;
END
VARCODPA2 = :VARCODPAC;
VARDESPA2 = :VARDESPAC;
IF ((:VARMESENT = 1) AND (:VARENTSAR = 'E')) THEN
VARMESJAN = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 2) AND (:VARENTSAR = 'E')) THEN
VARMESFEV = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 3) AND (:VARENTSAR = 'E')) THEN
VARMESMAR = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 4) AND (:VARENTSAR = 'E')) THEN
VARMESABR = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 5) AND (:VARENTSAR = 'E')) THEN
VARMESMAI = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 6) AND (:VARENTSAR = 'E')) THEN
VARMESJUN = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 7) AND (:VARENTSAR = 'E')) THEN
VARMESJUL = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 8) AND (:VARENTSAR = 'E')) THEN
VARMESAGO = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 9) AND (:VARENTSAR = 'E')) THEN
VARMESSET = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 10) AND (:VARENTSAR = 'E')) THEN
VARMESOUT = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 11) AND (:VARENTSAR = 'E')) THEN
VARMESNOV = 'ENTREGUE';
ELSE
IF ((:VARMESENT = 12) AND (:VARENTSAR = 'E')) THEN
VARMESDEZ = 'ENTREGUE';
END
-- Retirado de dentro do For
PSCODPAC = :VARCODPA2;
PSDESPAC = :VARDESPA2;
PSMESJAN = :VARMESJAN;
PSMESFEV = :VARMESFEV;
PSMESMAR = :VARMESMAR;
PSMESABR = :VARMESABR;
PSMESMAI = :VARMESMAI;
PSMESJUN = :VARMESJUN;
PSMESJUL = :VARMESJUL;
PSMESAGO = :VARMESAGO;
PSMESSET = :VARMESSET;
PSMESOUT = :VARMESOUT;
PSMESNOV = :VARMESNOV;
PSMESDEZ = :VARMESDEZ;
SUSPEND;
END
Mais detalhes sobre a lista de discussão lista