Totalizar no período
Pessoal, na semana passada consegui resolver o problema aqui no forum com a ajuda da galera, só que mais para frete surgiu outra dúvida e novamente preciso da ajuda de vocês para sanar mais um problema.
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.
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 ?
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
Curtidas 0
Respostas
Ricardo Araujo
01/10/2012
SQL_SomaDevedor.Close;
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
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
Marcos Barbosa
01/10/2012
Desculpa ñ ter respondido o post, tive um problema e fiquei ausente, estou olhando sua resposta agora, vou testar e posto o resultado depois.
obrigado
obrigado
GOSTEI 0
Marcos Barbosa
01/10/2012
rbbarreto, funcionou, só precisou eu retirar do select e do group by a data de vencimento.
Novamente muito obrigado e desculpa pela demora em responder.
Novamente muito obrigado e desculpa pela demora em responder.
GOSTEI 0
Deivison Melo
01/10/2012
Podemos encerrar o tópico?
GOSTEI 0
Marcos Barbosa
01/10/2012
topico encerrado.
novamente, muito obrigado.
novamente, muito obrigado.
GOSTEI 0