Formatar campo de Consulta

16/09/2004

Olá pessoal,

Tenho a consulta abaixo:

With DMConsultas.PlanilhaExcel Do Begin Close; SQL.Clear; SQL.Add(´SELECT DISTINCTROW TB_Avaliacao.NomeDoCurso,´); SQL.Add(´ TB_Avaliacao.AnoDaAvaliacao, TB_Avaliacao.NomeDaUnidade, TB_DetalhesDaAvaliacao.CodigoDaPergunta, TB_DetalhesDaAvaliacao.Pergunta, TB_DetalhesDaAvaliacao.CodigoDaResposta,´); SQL.Add(´ TB_DetalhesDaAvaliacao.Resposta,´); SQL.Add(´ [color=red:705020a3ce](Sum(TB_DetalhesDaAvaliacao.Contador) / TB_DetalhesDaAvaliacao.CodigoDaResposta) AS ValorGeral´)[/color:705020a3ce]; SQL.Add(´FROM TB_Avaliacao´); SQL.Add(´INNER JOIN TB_DetalhesDaAvaliacao ON TB_Avaliacao.CodigoDaAvaliacao = TB_DetalhesDaAvaliacao.CodigoDaAvaliacao´); SQL.Add(´GROUP BY TB_Avaliacao.NomeDoCurso,´); SQL.Add(´ TB_Avaliacao.AnoDaAvaliacao, TB_Avaliacao.NomeDaUnidade, TB_DetalhesDaAvaliacao.CodigoDaPergunta, TB_DetalhesDaAvaliacao.Pergunta, TB_DetalhesDaAvaliacao.CodigoDaResposta,TB_DetalhesDaAvaliacao.Resposta´); SQL.Add(´HAVING TB_Avaliacao.NomeDaUnidade= :P1 AND TB_Avaliacao.AnoDaAvaliacao= :P2 AND TB_Avaliacao.NomeDoCurso= :P3 AND TB_DetalhesDaAvaliacao.CodigoDaResposta> :P4´); SQL.Add(´ORDER BY TB_DetalhesDaAvaliacao.CodigoDaPergunta, TB_DetalhesDaAvaliacao.CodigoDaResposta´); ParamByName(´P1´).Value:=ComboUnidades.Text; ParamByName(´P2´).Value:=TxtAno.Text; ParamByName(´P3´).Value:=ComboCursos.Text; ParamByName(´P4´).Value:=0; Open; End;


A linha em vermelho é o campo q preciso formatar para não ter casas decimais, como posso fazer isso direto na consulta, pois tenho q exportar estes dados para o Excel.

Grato,

Ilano.


Ilanocf

Respostas

16/09/2004

Vinicius2k

Colega,

Qual a base ? Vi em outros tópicos seus que vc trabalha com MySQL...

Não sei se vai ajudar muito mas...
Procure na documentação do MySQL por funções que façam tranformação ou então ´Truncagem´ de números... creio q este seria o caminho...
Por exemplo, se vc estivesse usando IB/FB, seria a função CAST:
select cast(CAMPO_FLOAT as integer) from TABELA


T+


Responder Citar

16/09/2004

Ilanocf

Isso, estou usando MySQL.
Já tentei destas duas formas:

SQL.Add(´ (Sum(cast(cast(TB_DetalhesDaAvaliacao.Contador As Float)as Integer)) / TB_DetalhesDaAvaliacao.CodigoDaResposta) AS ValorGeral´);


SQL.Add(´ (Sum(cast(TB_DetalhesDaAvaliacao.Contador As Float)as Integer) / TB_DetalhesDaAvaliacao.CodigoDaResposta) AS ValorGeral´);


Mas não deu certo.


Responder Citar

16/09/2004

Vinicius2k

Eu, realmente, não sei se o MySQL tem a função CAST...
Mas se tiver e vc quer retirar as casas decimais , ou seja, truncar o número, vc precisa usar CAST AS INTEGER... mas no resultado final da coluna...
Creio q seria assim :
CAST( Sum(TB_DetalhesDaAvaliacao.Contador) / 
      TB_DetalhesDaAvaliacao.CodigoDaResposta 
AS INTEGER) AS ValorGeral


T+


Responder Citar

17/09/2004

Ilanocf

Tb não deu certo! Peguei a seguinte documentação neste link [url]http://dev.mysql.com/doc/mysql/pt/Cast_Functions.html#IDX1424[/url], mas tb não consegui nada! Q coisa mais complicada!


Responder Citar

17/09/2004

Vinicius2k

Ilano,

Pelo que li :
CONVERT() com USING é usado para converter dados entre diferentes conjuntos de caracteres. No MySQL, nomes trancodificados são o mesmo que o nome do conjunto de caracteres correspondentes. Por exemplo, esta instrução converte a string ´abc´ no conjunto de caracteres padrão do servidor na string correspondente no conjunto de caracteres utf8: SELECT CONVERT(´abc´ USING utf8);


A função do MySQL similar ao CAST do IB/FB não é a própria CAST e sim a CONVERT... USING...
Já tentou usar ?
CONVERT( Sum(TB_DetalhesDaAvaliacao.Contador) /
      TB_DetalhesDaAvaliacao.CodigoDaResposta
USING INTEGER) AS ValorGeral


T+


Responder Citar