Montar um SQL com debito/credito e saldo?

Delphi

22/06/2006

Boa Tarde amigos delphianos,
alguém pode me dizer a onde encontro algo para montar uma SQL com saldos? To tendo dificudade em fazer um desta forma:

Primeiro: Filtrar por mês tipo janeiro/2006 a junho/2006

depois em um dbgrid aparecer assim:

mes.................debito...............credito.............saldo......DC< br /> jan/2006.........5.000,00...................0,00...........5.000,00...D
fev/2006.........4.500,00.............2.000,00...........7.500,00...D
mar/2006..............0,00.............4.000,00...........3.500,00...D


E assim por diante

Gradecido a quem puder me ajudar.


Jlimajr

Jlimajr

Curtidas 0

Respostas

Micheus

Micheus

22/06/2006

se vc postar as tabelas envolvidas talvez fique mais fácil de postar uma sugestão.


GOSTEI 0
Cpd_arim

Cpd_arim

22/06/2006

select mes, sum(debito) as debito, sum(credito) as credito, sum(credito-debito) as saldo from suatabela group by mes


GOSTEI 0
Jlimajr

Jlimajr

22/06/2006

Obrigado amigos delphianos consegui fazer o que eu queria

var
vsaldo : double;
begin
vsaldo:= 0;
//-------------------------calculos soma de saldos-----------------------------------
aguardedadoson;
with dm.calculos do
  begin
    close;
    sql.clear;
    sql.add(´select mes, ano, dataextenso, conta, sum(coalesce(valord,0))as debito, sum(coalesce(valorc,0))as credito, (sum(coalesce(valord,0)) - SUM(coalesce(valorc,0)))as saldo from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    sql.add(´group by mes, ano, dataextenso, conta´);
    sql.add(´order by mes´);
    open;
    dm.calculos.First;

    while not dm.calculos.Eof do
    begin
      vsaldo:=dm.calculos.fieldbyname(´saldo´).asFloat+vsaldo;
      dm.calculos.FieldByName(´mes´).asString:=dm.calculos.fieldbyname(´mes´).asString;
      dm.calculos.FieldByName(´ano´).asString:=dm.calculos.fieldbyname(´ano´).asString;
      dm.calculos.FieldByName(´debito´).asFloat:=dm.calculos.FieldByName(´debito´).AsFloat;
      dm.calculos.FieldByName(´credito´).asFloat:=dm.calculos.FieldByName(´credito´).AsFloat;
      dm.calculos.FieldByName(´saldo´).asFloat:=vsaldo;
      dm.calculos.Next;
    end;
  end;
//-----------------------------------final codigo soma de calculo-------------------------------  
  //------------soma totaldebitos---------------
  with dm.somad do
  begin
    close;
    sql.clear;
    sql.add(´select sum(coalesce(valord,0))as totdebito from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    open;
  end;
  //---------------------final soma debito------------
  //------------soma totalcredito---------------
  with dm.somac do
  begin
    close;
    sql.clear;
    sql.add(´select sum(coalesce(valorc,0))as totcredito from tbconta´);
    sql.add(´WHERE (conta = ´ + quotedstr(Edit1.Text) + ´) and (ano = ´ + quotedStr(ComboBox1.Text) + ´)´);
    open;
  end;
  //---------------------final soma credito------------
  if DM.calculos.isempty then
     showmessage(´Nao há registro neste numero de conta. Por favor tente novamente´);
     aguardedadosoff;
end;



Gradecido a ajuda de todos. :D


GOSTEI 0
POSTAR