Coalesce com D2010 e Firebird 2.5

Firebird

21/07/2012

Olá amigos,
seguinte, até ontem, utilizava normal o meu bco fb1.5 com d2010.
migrei para a versao fb2.5 e estou com o seguinte problema.

Importante: no IBEXPERT, funciona 100%, apenas apresenta o problema no D2010

Select
NF.Datamovimento
, M.Codprodutomov
, M.Descricao
, CL.Numclassificacao
, M.Quantmovimentada
, M.Valorunitario
, Rs_rounddec( M.Quantmovimentada * M.Valorunitario, 2 ) As ValorTotal
, Coalesce( ( Select First 1 ME.Aliqicm From Movestoque ME
Where ME.Codprodutomov = M.Codprodutomov
And ME.Codoperacao In (2,4)
And ME.Empresa = 1
And ME.Datamovimentoestoque <= NF.Datamovimento
Order By ME.Datamovimentoestoque ) , 0 ) As AliqICM

, Coalesce( ( Select First 1 ME.Aliqipi From Movestoque ME
Where ME.Codprodutomov = M.Codprodutomov
And ME.Codoperacao In (2,4)
And ME.Empresa = 1
And ME.Datamovimentoestoque <= NF.Datamovimento
Order By ME.Datamovimentoestoque ) , 0 ) As AliqIPI
, CL.Flagsubtributaria
, Case When M.Tipomovimento = 1 Then E Else S End AS TipoMovimento
, M.Numdocumentoes

From Notasfiscais NF
Left Join Movestoque M On M.Empresa = NF.Empresa
AND M.Tipocontrole = NF.Tipocontrole
And M.Codcontrole = NF.Codcontrole
Left Join Classfiscais CL On CL.Codigo = M.Codclassfiscal
Where ( NF.Empresa = 1 And NF.Codcontrole = 79196 AND NF.Tipocontrole = 2 )
OR ( NF.Empresa = 1 AND NF.Codcontrole = 35448 And NF.Tipocontrole = 1 )

Order By
M.Numdocumentoes
, M.Tipomovimento Desc

erro: no delphi, LIST INDEX OUT OF BOUNDS(-1)

importante:, se eu trocar o parametro do Coalesce, que no caso do select acima = 0, por -1, funciona normal, só dá problema se utilizar com parametro = 0.

Alguem ja passou por isso ?

Obrigado.
Cleber
Cleber Campos.

Cleber Campos.

Curtidas 0

Respostas

Cleber Campos.

Cleber Campos.

21/07/2012

sobe...
GOSTEI 0
Bruno Leandro

Bruno Leandro

21/07/2012

Ola cleber ainda não passei por esse erro mas, voce ja tentou forçar a conversão

tipo coalesce( (select 1 from tabx where y = 1) ,0)::integer

GOSTEI 0
Cleber Campos.

Cleber Campos.

21/07/2012

... coalesce( (select 1 from tabx where y = 1) ,0)::integer



Ola Bruno,
nao funcionou.

alguma outra sugestao.?

Grato.
Cleber
GOSTEI 0
Deivison Melo

Deivison Melo

21/07/2012

Tenta assim:

Select
NF.Datamovimento
, M.Codprodutomov
, M.Descricao
, CL.Numclassificacao
, M.Quantmovimentada
, M.Valorunitario
, Rs_rounddec( M.Quantmovimentada * M.Valorunitario, 2 ) As ValorTotal
, Coalesce( ( Select First 1 ME.Aliqicm
From Movestoque ME
Where ME.Codprodutomov = M.Codprodutomov
And ME.Codoperacao In (2,4)
And ME.Empresa = 1
And ME.Datamovimentoestoque <= NF.Datamovimento) , 0 ) As AliqICM,
Coalesce( ( Select First 1 ME.Aliqipi
From Movestoque ME
Where ME.Codprodutomov = M.Codprodutomov
And ME.Codoperacao In (2,4)
And ME.Empresa = 1
And ME.Datamovimentoestoque <= NF.Datamovimento
) , 0 ) As AliqIPI
, CL.Flagsubtributaria
, Decode(M.Tipomovimento,1,E,S) TipoMovimento
/*Case When M.Tipomovimento = 1 Then E Else S End AS TipoMovimento*/
, M.Numdocumentoes

From Notasfiscais NF Left Join Movestoque M On M.Empresa = NF.Empresa
Where ( NF.Empresa = 1 And NF.Codcontrole = 79196 AND NF.Tipocontrole = 2 )
and M.Tipocontrole = NF.Tipocontrole
and M.Codcontrole = NF.Codcontrole Left Join Classfiscais CL On CL.Codigo = M.Codclassfiscal
or ( NF.Empresa = 1 AND NF.Codcontrole = 35448 And NF.Tipocontrole = 1 )
Order BY M.Numdocumentoes, M.Tipomovimento Desc

PS. Infelizmente não tenho como testar aqui, pois não tenho o firebird instalado no trabalho (além de não ter as tabelas)...

Mas acho que vai rodar!!
GOSTEI 0
Cleber Campos.

Cleber Campos.

21/07/2012

Olá
o problema está nessa instrucao aqui

Select
...
...
, Coalesce( ( Select First 1 ME.Aliqipi
From Movestoque ME
Where ME.Codprodutomov = M.Codprodutomov
And ME.Codoperacao In (2,4)
And ME.Empresa = 1
And ME.Datamovimentoestoque <= NF.Datamovimento
) , 0 ) As AliqIPI
...
From ...

Acontece que, o parametro do Coalesce = 0, se eu mudar o parametro para qualquer coisa difirente de 0 (zero), funciona normal.
Muitissimo estranho.

fico no aguardo e obrigado.

Cleber
GOSTEI 0
Deivison Melo

Deivison Melo

21/07/2012

Estranho...

Tem como vc disponibilizar o ddl de suas tabelas ou me enviar por e-mail juntamente com a sua instrunção sql para que porra ajustar e devolver para vc de forma funcional?

Sem mais, grato!
GOSTEI 0
Deivison Melo

Deivison Melo

21/07/2012

Retificando:

Estranho...

Tem como vc disponibilizar o ddl de suas tabelas ou me enviar por e-mail juntamente com a sua instrunção sql para que *possa* ajustar e devolver para vc de forma funcional?

Sem mais, grato!
GOSTEI 0
Cleber Campos.

Cleber Campos.

21/07/2012

Ola Deivison, qual o seu email ?

lembrando que: no ibexpert, funciona normal,
somente no d2010 que nao vai.
GOSTEI 0
POSTAR