Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Expression Evaluation not supported


robinhocne

Pergunta

Eu estava querendo somar quantidade de horas entre o meu horarioInicial e horarioFinal, mas tá dando esse erro:

Expression Evaluation not supported

Esse é o codigo que estou montando:

with QryHoras do
    begin
      close;
      sql.Clear;
      sql.Add('Select Aluno, Sum((HorarioInicial + HorarioFinal)) AS HorasMarcadas From Teoricas'
              +' where Aluno = :Alu Group By Aluno Order By Aluno');
      ParamByName('Alu').AsString := TxtCod.Text;
      open;
    end;

   Total :=  QryHoras.FieldByName('HorasMarcadas').AsInteger;
   Horas :=  Total / 86400;
   Edit1.Text := TimeToStr(Horas);

O que estou fazendo de errado ????

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

robinhocne, você não deixou claro onde o erro ocorre: se na execução do SQL ou no código mais abaixo?

Estou supondo que tenha sido no SQL.

Primeiro, parece-me que você não está usando a operação correta dentro do SUM. Voce não deveria estar somando as diferenças, já que quer obter o total de horas. Ou seja, ao invés de:

HorarioInicial + HorarioFinal

deveria usar:

HorarioFinal - HorarioInicial

Segundo, por acaso não há algum destes dois campos nulo na sua base?

Terceiro, sabendo que o resultado da operação com horas resultará em um tipo float (equivalente a TTime ou TDateTime) e, por consequência, que a parte referente a hora estará na parte fracionária, você acha que obteria o resultado correto utilizando o método AsInteger como no código:

Total := QryHoras.FieldByName('HorasMarcadas').AsInteger

Já toquei neste assunto várias vezes aqui no forum. Dê uma olha neste post do colega paulobergo e no seguinte.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
robinhocne, você não deixou claro onde o erro ocorre: se na execução do SQL ou no código mais abaixo?

Estou supondo que tenha sido no SQL.

Primeiro, parece-me que você não está usando a operação correta dentro do SUM. Voce não deveria estar somando as diferenças, já que quer obter o total de horas. Ou seja, ao invés de:

HorarioInicial + HorarioFinal

deveria usar:

HorarioFinal - HorarioInicial

Segundo, por acaso não há algum destes dois campos nulo na sua base?

Terceiro, sabendo que o resultado da operação com horas resultará em um tipo float (equivalente a TTime ou TDateTime) e, por consequência, que a parte referente a hora estará na parte fracionária, você acha que obteria o resultado correto utilizando o método AsInteger como no código:

Total := QryHoras.FieldByName('HorasMarcadas').AsInteger

Já toquei neste assunto várias vezes aqui no forum. Dê uma olha neste post do colega paulobergo e no seguinte.

Abraços

Isso mesmo, o que estava dando de errado era na sql mas ai mudei de (+) para (-) e deu certo!

valeu obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...