Fórum Totalizar no período #425125

01/10/2012

0

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.
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

Marcos Barbosa

Responder

Posts

01/10/2012

Ricardo Araujo

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




Responder

Gostei + 0

03/10/2012

Marcos Barbosa

Desculpa ñ ter respondido o post, tive um problema e fiquei ausente, estou olhando sua resposta agora, vou testar e posto o resultado depois.
obrigado
Responder

Gostei + 0

03/10/2012

Marcos Barbosa

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.
Responder

Gostei + 0

03/10/2012

Deivison Melo

Podemos encerrar o tópico?
Responder

Gostei + 0

04/10/2012

Marcos Barbosa

topico encerrado.
novamente, muito obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar