somar tipo BCD ou FMTBCD

Delphi

18/07/2008

O clientdataset com dbexpress traz os campos numeric do firebird como BCD ou FMTBCD, isso faz com que a função SUM(campo) do sql não funcione no quickreporter e no fortesreport.
Para soma-los tenho de criar um campo calculado do tipo float no clientdataset e jogar nele o valor do campo que quero somar.
Há alguma forma de fazer essa soma sem ter de criar uma variável ou campo calculado?
Fazer o SUM() funcionar com os campos originais ou fazer com que o clientdataset com dbexpress não os tragam como BCD ou FMTBCD?


Catunda

Catunda

Curtidas 0

Respostas

Catunda

Catunda

18/07/2008

Desculpem aí...
Cometi um pequeno engano no post.
Não é o SUM() utilizado no sql e sim qdo ele é utilizado no componente QRExpr do QuickReporter e o seu respectivo no FortesReporter.


GOSTEI 0
Joaoshi

Joaoshi

18/07/2008

Colega, faça um CAST no campo:

SELECT [b:45c0970b82]CAST(SUM(SeuCampo) AS FLOAT) [/b:45c0970b82] FROM SuaTabela;

Espero ter ajudado.


GOSTEI 0
Cd.karlh

Cd.karlh

18/07/2008

Alterei o comendo para CAST( (SUM(O.TMPTPR)/60 ) as Float )
mas não tive sucesso.
Continua retornando valor truncado. A expressão aparece no oracle com 13,4222 por exemplo. E no TClientDataSet aparece 13. Truncou o valor.

Até consigo fazer aparecer com zeros decimais, mas valor é truncado...

Alguma dica a mais ?


GOSTEI 0
POSTAR