Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renato Muniz

Erro ao tentar usar campo resultado de um CASE

Recommended Posts

Olá pessoal estou com este código dando erro:

 



dados.heados.SQL.add('case when descontopercent <> 0 then');
dados.heados.SQL.add(' (E.subtotal - (e.subtotal * a.descontopercent) /100)');
dados.heados.SQL.add('when descontopercent <> 0 then ');
dados.heados.SQL.add(' (e.subtotal - a.descontoreal) ');
dados.heados.SQL.add('end as totalgeral, ');

Dá erro quando tento utilizar o campo TotalGeral

 


   /// erro!!
   dados.heados.Sql.Add(' (totalgeral - d.pago) as restapasgar,');

campo totalgeral nao encontrado.

 

 

se eu utilizar o campo totalgeral em outra instrucao, por exemplo um while na tabela eu consigo utiliza-lo.

 

 

ou seja na instrução SQL o campo fica invisivel e pelo DELPHI acessando a tabela tipo:

 

   nTotal := dados.heados.fieldbyname('totalgeral').ascurrency;

assim funciona. Mas preciso do campo na instrução SQL para um filtro.

 

 

quem por favor tiver uma solucao eu agradeço muito.

desde ja agradeço

at+

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo totalgeral é um alias, e não uma coluna, por isso que ele dá erro.

Como ele é um alias, você consegue acessar ele pelo delphi

 

O que eu uso para resolver esse problema é:

 

dados.heados.SQL.add('case when descontopercent <> 0 then');
dados.heados.SQL.add(' (E.subtotal - (e.subtotal * a.descontopercent) /100)');
dados.heados.SQL.add('when descontopercent <> 0 then ');
dados.heados.SQL.add(' (e.subtotal - a.descontoreal) ');
dados.heados.SQL.add('end as totalgeral, ');
dados.heados.SQL.add('(case when descontopercent <> 0 then');
dados.heados.SQL.add(' (E.subtotal - (e.subtotal * a.descontopercent) /100)');
dados.heados.SQL.add('when descontopercent <> 0 then ');
dados.heados.SQL.add(' (e.subtotal - a.descontoreal) ');
dados.heados.SQL.add('end ');
dados.heados.Sql.Add(' - d.pago) as restapasgar,');

ou seja, repetindo a instrução sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.