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