GARANTIR DESCONTO

Fórum Ajuda no relatório de cheques #352729

30/01/2008

0

Acho que terminei um relatório, mas ele não me mostra a soma total:

Uso o Delphi 7 e Firebird 2.0

Primeiramente montei um relatório no QuickReport 4 bandas,
1> RbTitle = com o titulo de relatórios
2> RbColumnReader = especificando os dados.
3> RbDetail = com os campos que vai me mostrar no relatório, no caso me mostra: o codigo do aluno, numero do cheque, conta, agencia e data de vencimento do cheque.
4> RbSummary = com um QrLabel nome de Total, onde vai me mostrar o meu total da soma:

Os dados ficaram assim:

Primeiramente declarei uma variavel na public:

valor1, valor2, valor3 : Real;


Acrescentei uam IbQuery para a instrução do relatório, a :
[b:22d27dfbcf]> DtmIza => DataModule
> QryIza => IbQuery que busca os dados do relatório na tabela de lancamentos de acordo com a instrução:
> QrySomasLancados => IbQuery responsavel pela soma de valores para mostrar no QrLabel (Total),
Pois estou fazendo um filtro para buscar os cheques por data de vencimentos.[/b:22d27dfbcf]

O Relatório (QuickRep1) esta linkado ao (DtmIza.QryIza).

E no botão para exibir o relatório coloquei esses dados:

 With DtmIza.QryRelEmp do
      Begin
         Close;
         Sql.Clear;
         Sql.Add (´Select Codigo, Empresa, Cnpj From Empresa´);
         Open;
      end;

   With DtmIza.QryIza Do
      begin
       Close;
       Sql.Clear;
       Sql.Add(´Select Aluno, Valor, Vencimento, Pagamento, Conta, Agencia, cheque, Tipo From Lancamento´);
       Sql.Add(´where (Vencimento >= :d1) and (Vencimento <= :d2) and cheque is not null Order By Cheque, Vencimento ´);
       ParambyName(´d1´).value  := FormatDateTime (´dd/mm/yyyy´ , StrToDate (TxtDataInicial.Text));
       ParambyName(´d2´).value  := FormatDateTime (´dd/mm/yyyy´ , StrToDate (TxtDataFinal.Text));
       Open;
     End ;
   If DtmIza.QryIza.RecordCount = 0 Then
      Begin
         ShowMessage(´Sem dados para relatório!´);
         exit;
      End
   Else
      With QrySomasLancados do
      Begin
         QrySomasLancados.Close ;
         QrySomasLancados.Sql.Text :=´Select sum(Valor)as "SOMA" From Lancamento where cheque is not null´;
         QrySomasLancados.Open ;
      end;
    valor1 := QrySomasLancados.FieldByName(´Soma´).AsFloat;

  With  TFrmRelChequePre.Create(Application) Do
      Try
         QuickRep1.Preview;
      Finally
         Free;
      end;
   close;


Pois no Evento BeforePrint da banda QrSummary onde mostra os valores eu acrescentei :

procedure TFrmRelChequePre.QRBand4BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
    Total.Caption := FloatToStr(valor1);
end;


Onde o Total é o QrLabel que me mostra o total.

[b:22d27dfbcf]Mas o problema é que não mostra o resultado da soma pois aparece zero igual a imagem abaixo, pois preciso de ajuda nisso.[/b:22d27dfbcf]

[img]http://www.4shared.com/file/36411772/6e85d01/Sem_Ttulo-1.html[/img]

E ai o que será? :blink:


Robinhocne

Robinhocne

Responder

Posts

30/01/2008

Darkrme

Amigo.. no lugar deste codigo:
 With QrySomasLancados do
      Begin
         QrySomasLancados.Close ;
         QrySomasLancados.Sql.Text :=´Select sum(Valor)as "SOMA" From Lancamento where cheque is not null´;
         QrySomasLancados.Open ;
      end;
    valor1 := QrySomasLancados.FieldByName(´Soma´).AsFloat;


Tenta colocar assim:
[b:fd6d57bb32]Declare uma variavel i do tipo integer no comeco da procdure[/b:fd6d57bb32]
DtmIza.QryIza.First;
valor1 : 0;
for i := 1 to DtmIza.QryIza.RecordCount do
begin
valor1 := valor1 + DtmIza.QryIza.FieldByName(´Valor´).AsFloat;
DtmIza.QryIza.Next;
end;
FrmRelatorioCheques.Total.Caption := FloatToStr(valor1);


Bom, se tiver algum erro no codigo eh pq eu utilizo ADO e eh um pouco diferente a sintaxe.. eh soh vc arrumar.. mas a ideia eh essa =)

espero ter ajudado.


Responder

Gostei + 0

01/02/2008

Robinhocne

não deu certo, não aparece nada!


Responder

Gostei + 0

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

Aceitar