Fórum Totalizar no período #425125
01/10/2012
0
Seguinte faço uma pesquisa no banco de faturamento para retornar tudo que está em aberto de um determinado cliente em um determinado período e ao final de pesquisa eu quero o total geral desse período.
SQL_SomaDevedor.Close;
SQL_SomaDevedor.SQL.Clear;
SQL_SomaDevedor.SQL.Add('select FAT_IDCLIENTE, FAT_STATUS, FAT_VENCIMENTO, sum(FAT_VALORFATURA) as total_devedor from FINAN_FATURAMENTO');
SQL_SomaDevedor.SQL.Add('WHERE FAT_IDCLIENTE = '+QuotedStr(DBEdit1.Text)+' AND FAT_STATUS = '+QuotedStr(aberto)+' AND ');
SQL_SomaDevedor.SQL.Add('FAT_VENCIMENTO BETWEEN :data_ini AND :data_fim GROUP BY FAT_IDCLIENTE, FAT_STATUS, FAT_VENCIMENTO');
// criando o parametro em tempo de execusão -> TOTAL PAGO.
SQL_SomaDevedor.Params.ParamByName('data_ini').DataType := ftDate;
SQL_SomaDevedor.Params.ParamByName('data_fim').DataType := ftDate;
SQL_SomaDevedor.Params.ParamByName('data_ini').Value := MaskEdit1.Text;
SQL_SomaDevedor.Params.ParamByName('data_fim').Value := MaskEdit2.Text;
SQL_SomaDevedor.Open;
Edit_TotalPAgar.Text := SQL_SomaDevedor.FieldByName('total_devedor').AsString;
O valor retornado é o seguinte:
idcliente status data Valor
1 A 30/05/2008 700,00
1 A 30/10/2008 600,00
Eu quero que me retorne assim:
1 A 1300,00
O que devo modificar no código ?
Marcos Barbosa
Curtir tópico
+ 0Posts
01/10/2012
Ricardo Araujo
SQL_SomaDevedor.SQL.Clear;
SQL_SomaDevedor.SQL.Add('select FAT_IDCLIENTE, FAT_STATUS, sum(FAT_VALORFATURA) as total_devedor from FINAN_FATURAMENTO');
SQL_SomaDevedor.SQL.Add('WHERE FAT_IDCLIENTE = '+QuotedStr(DBEdit1.Text)+' AND FAT_STATUS = '+QuotedStr(aberto)+' AND ');
SQL_SomaDevedor.SQL.Add('FAT_VENCIMENTO BETWEEN :data_ini AND :data_fim GROUP BY FAT_IDCLIENTE, FAT_STATUS');
// criando o parametro em tempo de execusão -> TOTAL PAGO.
SQL_SomaDevedor.Params.ParamByName('data_ini').DataType := ftDate;
SQL_SomaDevedor.Params.ParamByName('data_fim').DataType := ftDate;
SQL_SomaDevedor.Params.ParamByName('data_ini').Value := MaskEdit1.Text;
SQL_SomaDevedor.Params.ParamByName('data_fim').Value := MaskEdit2.Text;
Pode fazer desta forma que esta acima que dar certo.
Eu tenho um exemplo simples que e esta funcionando, em meu projeto segue codigo abaixo.
select it.cd_empresa, 'S' as status, sum(it.preco) Valor
from notas_fiscais_saida_itens it left join notas_fiscais_saida s
on (s.cd_nota_fiscal = it.cd_nota_fiscal)
where CONVERT(date, s.data_emissao, 103) between
CONVERT(date, '29/09/2012', 103) and
CONVERT(date, '01/10/2012', 103) and
it.cd_empresa = '3'
group by it.cd_empresa
cd_empresa Status Valor
3 S 67263,845237
Gostei + 0
03/10/2012
Marcos Barbosa
obrigado
Gostei + 0
03/10/2012
Marcos Barbosa
Novamente muito obrigado e desculpa pela demora em responder.
Gostei + 0
03/10/2012
Deivison Melo
Gostei + 0
04/10/2012
Marcos Barbosa
novamente, muito obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)