Ola amigos.Ainda levando uma surra com SQL. Então fui por outro caminho.
procedureTfrmPrincipal.BotaoCalcularClick(Sender: Tobject);
begin
vvalor:=0;
vtotDespesa:=0;
vmes:=frmPiricipal.ComboMes.Text; // aqui seleciono o mes
vano:=frmPrincipal.ComboAno.Text; // aqui seleciono o ano
vItem:=frmPrincipal.ComboItem.Text;
frmPrincipal.IBTableDebito.First;
while not (frmPrincipal.IBTableDebito.Eof)do
begin
if(frmPrincipal.IBTableDebito.Locate ('MES; ANO; ITEM', varArrayof([vmes, vano, vitem]),[]))then // Aqui ele encontra a linha que tem o item Valor (string)
begin
vvalor:=srttofloat(frmPrincipal.IBTableDebito.FieldByName('VALOR').asString);
vtotDespesa:=vtotDespesa+vvalor;
EditSoma.Text:=floattostr(vtotDespesa);
frmPrincipal.IBTableDebito.Next;
end;
end;
end;
A idéia é ir para o começo do banco de dados e usar um while para varrer a soma (campo Valor) definida pelo MES, ANO e ITEM, ate o final da tabelaPor exemplo, seleciono o mes (janeiro), o Ano (2019) o Item (farmacia, por exemplo). Ele vai ate o final e mostra o mvalor durante o mes, quanto foi gasto de farmacia. So que não está funcionando bem... So le a primeira linha e fica pulando do while para o If locate, incessantemente (só haviam 3 registros para ler)Alguma santa alma pode ajudar... Acho que isso fnciona, mas deve ter algum erro aí nessas linhas e não encontro onde