[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