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 tabela Por 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
Pergunta
device
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 tabela
Por 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
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.