[firebase-br] Mensagem de Erro

Sandro Souza escovadordebits em gmail.com
Qua Maio 6 15:28:14 -03 2009


Bom dia/tarde Wellington.

Grande Wellington, você poderia testar com a função COALESCE?

Ou seja, testar o seguinte SELECT:

SELECT
  P.PES_NOME,
  COALESCE((SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1
WHERE(D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 1 or D1.COD_TIPO = 4)
AND (D1.TABELA = 1) AND (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)),
0)AS EMPRESTIMO,
  COALESCE((SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
(D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 2) AND (D1.TABELA = 1) AND
(D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)), 0)AS FERIAS,
  COALESCE((SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
(D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 1) AND
(D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)), 0)AS DECIMO,
  COALESCE((SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
(D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 1) AND (D1.TABELA = 2) AND
(D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)), 0)AS VALES,
  COALESCE((SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
(D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 2) AND
(D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)), 0)AS  FARMACIA
FROM SOCIOS S
LEFT JOIN PESSOAS P ON S.PES_CODIGO = P.PES_CODIGO
WHERE  S.SOC_STATUS = 'V'

Por favor, informe se funcionou.

Espero ter ajudado mais que atrapalhado. :D

2009/5/6 Wellington Melo <wellmsilva em gmail.com>

> Na Realidade o que quero é que qdo o valor for nulo o resultado seja 0.
>
>
> 2009/5/6 Wellington Melo <wellmsilva em gmail.com>
>
>> Desculpa Sandro, o comando é:
>>
>> SELECT P.PES_NOME,
>>   CASE WHEN  ((SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 1 or D1.COD_TIPO = 4) AND
>> (D1.TABELA = 1) AND (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))> 0)
>> THEN
>>        (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 1 or D1.COD_TIPO = 4) AND
>> (D1.TABELA = 1) AND (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))
>>   ELSE 0
>>   END AS EMPRESTIMO ,
>>   CASE WHEN (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 2) AND (D1.TABELA = 1) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))>0 THEN
>>        (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 2) AND (D1.TABELA = 1) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))
>>   ELSE 0
>>   END AS FERIAS,
>>   CASE WHEN (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 1) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))>0 THEN
>>        (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 1) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))
>>   ELSE 0
>>   END AS DECIMO,
>>   CASE WHEN (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 1) AND (D1.TABELA = 2) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))>0 THEN
>>        (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 1) AND (D1.TABELA = 2) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))
>>   ELSE 0
>>   END AS VALES,
>>   CASE WHEN   (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 2) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)) >0 THEN
>>         (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 2) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))
>>   ELSE 0
>>   END AS  FARMACIA,
>> ...
>>  obs(até aki ele funciona, mas ao continua da erro.)
>>
>> ...
>>  CASE WHEN   (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 2) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM)) >0 THEN
>>         (SELECT SUM(D1.VALOR_BRUTO) FROM VI_DEDUCOES D1 WHERE
>> (D1.PES_CODIGO = S.PES_CODIGO)AND(D1.COD_TIPO = 3) AND (D1.TABELA = 2) AND
>> (D1.DATA_PAGAMENTO BETWEEN :DATAINI AND :DATAFIM))
>>   ELSE 0
>>   END AS  FARMACIA
>>
>>
>> FROM SOCIOS S
>> LEFT JOIN PESSOAS P ON S.PES_CODIGO = P.PES_CODIGO
>> WHERE  S.SOC_STATUS = 'V'
>>
>> 2009/5/6 Sandro Souza <escovadordebits em gmail.com>
>>
>> Bom dia/tarde Wellington.
>>>
>>> Você não informou o comando SQL que gerou esse erro, o que ajudaria
>>> muito, mas pelo pouco que pesquisei aqui, você provavelmente está usando
>>> muitas uniões, e nesse caso, o Firebird não está aguentando o "rojão".
>>>
>>> Se não for isso, então poste o comando SQL completo e todas as
>>> informações que você puder passar para que possamos lhe ajudar melhor.
>>>
>>> Espero ter ajudado mais que atrapalhado. :D
>>>
>>> 2009/5/6 Wellington Melo <wellmsilva em gmail.com>
>>>
>>>>  Gostaria de saber  que quer dizer esta mensagem:
>>>> Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255.
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>
>>>
>>
>



Mais detalhes sobre a lista de discussão lista