Ir ao conteúdo
  • Cadastre-se

Soma de Dados - Onde está o erro?


Posts recomendados

Pessoal, recorro mais uma vez a vocês.

 
Meu projeto é em Delphi 10 usa BD access.
 
preciso somar os valores do campo "Valor" da tabela "Detalhe_Entrada", do mês corrente.
 
Fiz assim:
 
DateTimePicker2.Date := StartOfTheMonth(Date());DateTimePicker3.Date := EndOfTheMonth(Date());       QueryMes.Close;      QueryMes.SQL.Clear;      QueryMes.SQL.Add('Select Sum(Valor)as SOMA from Detalhe_Entrada WHERE Data >= :DATAINI and Data <=:DATAFIN group by Data');      QueryMes.Parameters.paramByname('DATAINI').Value := DateTimePicker2.Datetime;      QueryMes.Parameters.paramByname('DATAFIN').Value := DateTimePicker3.Datetime;      QueryMes.Open;      Label20.Caption := formatfloat('#,#0.00', QueryMes.fieldbyname('SOMA').ASCURRENCY);
 
Só que o danado só soma os valores do primeiro dia do mês e ignora o restante. Não sei mais o que fazer. Alguém pode dar uma luz?
Abraços.
 
Tentei usar:
QueryMes.SQL.Add('Select Sum(Valor)as SOMA from Detalhe_Entrada WHERE Data Between :DATAINI and :DATAFIN group by Data');

Mas também não resolveu.
 
Também tentei com essa linha
Label20.caption := formatfloat('#,#0.00', QueryMesSoma2.asfloat);
mas assim não compila. Dá esse erro:
[DCC Error] un_entradas.pas(237): E2003 Undeclared identifier: 'QueryMesSoma2'
Link para o comentário
Compartilhar em outros sites

Outra alternativa, é usar um laço While do primeiro até o ultimo registro e somando o valor

 

Exemplo:

var  TOTAL :  Currency;Begin      QueryMes.Close;      QueryMes.SQL.Clear;      QueryMes.SQL.Add('Select * from Detalhe_Entrada WHERE Data >= :DATAINI and Data <=:DATAFIN group by Data');      QueryMes.Parameters.paramByname('DATAINI').Value := DateTimePicker2.Datetime;      QueryMes.Parameters.paramByname('DATAFIN').Value := DateTimePicker3.Datetime;      QueryMes.Open;      TOTAL := 0;     QueryMes.first; // VAI PARA O PRIMEIRO REGISTRO     WHILE NOT   QueryMes.eof do // ENQUANDO NÃO ESTIVER NO ULTIMO     begin      Total := Total + QueryMescaposomar.value;       QueryMes.next;     end;      Label20.Caption := formatfloat('#,#0.00', total);

Espero que ajude.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...