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

Filtrar dados


MagoDanger

Pergunta

Pessoal, bom dia!

Estou com mais um probleminha aqui no momento de gerar recibos.

No meu Bd tenho vários lançamentos cadastrados, preciso fazer um filtro pelo código do inquilino e depois pelos valores que tem q sair no recibo do mês. até ai está tudo ok.

Só que nessa tabela alguns são valores CREDITOS e outros são DÉBITOS.

No caso, teria que deopis de filtrado ele somar todo crédito, somar todo débito e subtrair DÉBITO - CRÉDITO = RESULTADO.

como posso fazer isso, essas somas desses valores filtrados e depois subtraí-los?

PS: Os campos da tabela de pagamentos (tbl_pag_inq) são:

codigo //codigo do inquilino [tipo numérico]

valor //valor da parcela [tipo monetário]

vencimento //data do vencimento [tipo data/hora]

tipo //C quando CRÉDITO e D quando DÉBITO [tipo texto]

*** meu BD é Access

obrigado!

Editado por MagoDanger
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

pessoal, consegui fazer o filtro e somar apenas os filtrados.. porém ele somou tudo, independente de ser CREDITO ou DEBITO...

ficou assim:

var
  Present: TDateTime; dataini, datafim : Tdate;
  Ano, Mes, Dia : Word;
  somac : Double;
  somad : Double;
begin
  somac:=0;
  somad:=0;
  dm.q_pag_inq.First;
  Present:= EndOfTheMonth(Date);
  DecodeDate(Present, Ano, Mes, Dia);
  dataini := StartOfTheMonth(Date);
  datafim := EndOfTheMonth(Date);
  DateEdit1.Date := dataini;
  DateEdit2.Date := datafim;
begin
with dm.q_pag_inq do
begin
 Close;
 SQL.Clear;
 SQL.Add('select * from tbl_pag_inq where vencimento Between :dataini and :datafim');
 SQL.Add('AND id_inq = ' + QuotedStr(f_cad_inquilinos.Edt_inq.Text));
 SQL.Add('AND baixados = ' + QuotedStr(f_cad_inquilinos.edt_baixa.Text));
 Parameters.ParamByName('dataini').Value := DateEdit1.date;
 Parameters.ParamByName('datafim').Value := DateEdit2.date;
 Open;
while not dm.q_pag_inq.Eof do
begin
  somac := somac + dm.q_pag_inq.Fieldbyname('valor').Value;
  dm.q_pag_inq.Next;
  end;
  label3.Caption := FloatToStrF(somac,ffCurrency , 15,2);
end; end; end;

PS.

somac //é para armazenar o valor da soma de credito

somad //é para armazenar o valor da soma de debito

FALTA: somar o C e o D separados e subtraílos.

alguém pode me ajudar nesse filtro?

obrigado mais uma vez!

Link para o comentário
Compartilhar em outros sites

  • 0

tentei acrescentar essa linha:

if (dm.q_pag_inq.fieldbyname('valor').asString = 'c') then begin
ficando assim:
while not dm.q_pag_inq.Eof do
begin
  if (dm.q_pag_inq.fieldbyname('tipo').asString = 'c') then begin
  somac := somac + dm.q_pag_inq.Fieldbyname('valor').AsFloat;
  dm.q_pag_inq.Next;
  end;
  label3.Caption := FloatToStrF(somac,ffCurrency , 15,2);

mas não deu... a hroa que clica no botão não aparece nenhum erro, mas também não soma... simplesmente trava! ai tem que resetar no delphi.

0o''

Editado por MagoDanger
Link para o comentário
Compartilhar em outros sites

  • 0

opaaa, valeu!!!

Pode colocar o tópico como resolvido...

Agora funcionou certinho da forma como eu precisava... o código ficou assim:

begin
  somac:=0;
  somad:=0;
  dm.q_pag_inq.First;
  Present:= EndOfTheMonth(Date);
  DecodeDate(Present, Ano, Mes, Dia);
  dataini := StartOfTheMonth(Date);
  datafim := EndOfTheMonth(Date);
  DateEdit1.Date := dataini;
  DateEdit2.Date := datafim;
begin
with dm.q_pag_inq do
begin
 Close;
 SQL.Clear;
 SQL.Add('select * from tbl_pag_inq where vencimento Between :dataini and :datafim');
 SQL.Add('AND id_inq = ' + QuotedStr(f_cad_inquilinos.Edt_inq.Text));
 SQL.Add('AND baixados = ' + QuotedStr(f_cad_inquilinos.edt_baixa.Text));
 Parameters.ParamByName('dataini').Value := DateEdit1.date;
 Parameters.ParamByName('datafim').Value := DateEdit2.date;
 Open;
while not dm.q_pag_inq.Eof do
begin
  if dm.q_pag_inq.fieldbyname('tipo').AsString = 'C' then
  somac := somac + dm.q_pag_inq.Fieldbyname('valor').AsFloat
else
  somad := somad + dm.q_pag_inq.Fieldbyname('valor').AsFloat;
  dm.q_pag_inq.Next;
  label3.Caption := FloatToStrF(somac,ffCurrency , 15,2);
  label4.Caption := FloatToStrF(somad,ffCurrency , 15,2);
end; end; end; end;

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,5k
×
×
  • Criar Novo...