[firebase-br] Problema com um cursor dentro do outro e CONCATENACAO

Danilo Gomes danrgomes em gmail.com
Qui Out 25 12:06:56 -03 2007


Obrigado Paulo a sua dica ja me ajudou bastante porem estou com outro
problema


Há registros em que não ha dependentes e mesmo assim ele nao esta zerando a
variavel, alguem tem uma dica ...




CREATE PROCEDURE LISTA_ADIMPLENTES(
    PDTI DATE,
    PDTF DATE)
RETURNS (
    CD_CLIENTE INTEGER,
    NUMERO INTEGER,
    FILIAL INTEGER,
    NUM_DOC VARCHAR(14),
    EMISSAO DATE,
    VENCTO DATE,
    PAGTO DATE,
    VALOR NUMERIC(15,2),
    VALOR_PAGO NUMERIC(15,2),
    BAIXA DATE,
    BOLETO NUMERIC(12,1),
    PARCELA INTEGER,
    TIPO VARCHAR(1),
    NOME VARCHAR(60),
    CIDADE VARCHAR(30),
    REPRESENTANTE VARCHAR(20),
    DEPENDENTES VARCHAR(500))
AS
DECLARE VARIABLE DEP VARCHAR(60);
DECLARE VARIABLE DEPS VARCHAR(500);
DECLARE VARIABLE PCD_CLIENTE INTEGER;
DECLARE VARIABLE PFILIAL INTEGER;
DECLARE VARIABLE CONTA INTEGER;
DECLARE VARIABLE CD_CLIDEP INTEGER;
DECLARE VARIABLE JAPASSOU VARCHAR(1) ;
begin
DEP = '';
DEPS = '';
CD_CLIDEP = 0;
JAPASSOU = 'N';
for
  SELECT
       t16.cd_cliente,
       T16.numero,
       T16.filial,
       T16.num_doc,
       T16.emissao,
       T16.vencimento,
       T16.pagto,
       T16.valor,
       T16.valor_pago,
       T16.baixa,
       T16.nbloq,
       T16.parcela,
       t16.tipo,
       T01.razao,
       T01.cidade,
       T21.representante,
       t16.cd_cliente,
       T16.filial

FROM t16_contas_receber T16
LEFT JOIN t01_clientes T01 ON (T01.cd_cliente = T16.cd_cliente and
t01.filial = t16.filial)
LEFT JOIN t21_venda_plano T21 ON (T16.pedido_numero = T21.cd_venda AND
T16.pedido_filial = T21.filial)
WHERE T16.ativo = 'A' AND T16.valor_pago IS NOT NULL AND t16.vencimento >
:pDTi and t16.vencimento < :pDTf
ORDER BY T01.razao
INTO
    :PCD_CLIENTE,
    :NUMERO ,
    :PFILIAL ,
    :NUM_DOC,
    :EMISSAO,
    :VENCTO,
    :PAGTO,
    :VALOR,
    :VALOR_PAGO,
    :BAIXA ,
    :BOLETO,
    :PARCELA,
    :TIPO,
    :NOME,
    :CIDADE,
    :REPRESENTANTE,
    :CD_CLIENTE,
    :FILIAL
DO
 BEGIN
  FOR SELECT
  (T0101.NOME),
  COALESCE(count(T0101.NOME),0),
  (T0101.CD_CLIENTE)
  FROM T0101_DEPENDENTES T0101
  WHERE ((T0101.CD_CLIENTE = :PCD_CLIENTE) AND (T0101.FILIAL =  :PFILIAL)
AND (T0101.CD_DEPENDENTE >0))
  GROUP BY 1,3
  INTO
    DEP,
    :CONTA,
    CD_CLIDEP
  DO
  BEGIN
/*ESTE TRECHO*/

    if ((DEP IS NULL) OR (DEP = '')) then
      BEGIN
       DEP = '';
       DEPS = '';
       CONTA = 0;
       DEPENDENTES = 'branco';
      END
    if (DEP <> '') then
     BEGIN
           IF (DEPS IS NOT NULL) THEN
            BEGIN
              DEPS= DEPS  || ' - ' || DEP;
              DEPENDENTES = DEPS;
              DEP = '';
              CD_CLIDEP = PCD_CLIENTE;
            END
           if (DEPS is NULL) then
            BEGIN
              DEPS = DEP;
              DEP = '';
              DEPENDENTES = DEPS;
              CD_CLIDEP = PCD_CLIENTE;
            END
     DEP = '';
     CONTA = 0;
     END
  DEP = '';
  CONTA = 0;
  CD_CLIENTE = :PCD_CLIENTE;
  FILIAL = :PFILIAL;
  END
  DEP = '';
  DEPS = '';
  PCD_CLIENTE =0;
  PFILIAL =0;
  CONTA = 0;
  JAPASSOU = 'N';
  suspend;
 END
  DEP = '';
  DEPS = '';
  CONTA = 0;
end




Em 25 Oct 2007 07:03:09 -0200, wagner.quirino em portallogus.com.br <
wagner.quirino em portallogus.com.br> escreveu:
>
> Obrigado pelo contato, dentro em breve estarei retornando.
>
> Wagner L. Quirino
> W.E. Logus Informática Ltda
> (37) 3322-2149
> www.portallogus.com.br
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista