Array
(
)

Formatar campo de Consulta

Ilanocf
   - 16 set 2004

Olá pessoal,

Tenho a consulta abaixo:


Citação:

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(´ (Sum(TB_DetalhesDaAvaliacao.Contador) / TB_DetalhesDaAvaliacao.CodigoDaResposta) AS ValorGeral´);
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.


Vinicius2k
   - 16 set 2004

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:
#Código

select cast(CAMPO_FLOAT as integer) from TABELA


T+


Ilanocf
   - 16 set 2004

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


Citação:

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



Citação:

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


Mas não deu certo.


Vinicius2k
   - 16 set 2004

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 :
#Código

CAST( Sum(TB_DetalhesDaAvaliacao.Contador) / 
TB_DetalhesDaAvaliacao.CodigoDaResposta
AS INTEGER) AS ValorGeral


T+


Ilanocf
   - 17 set 2004

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


Vinicius2k
   - 17 set 2004

Ilano,

Pelo que li :

Citação:
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 ?
#Código

CONVERT( Sum(TB_DetalhesDaAvaliacao.Contador) /
TB_DetalhesDaAvaliacao.CodigoDaResposta
USING INTEGER) AS ValorGeral


T+