Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda no relatório de cheques


robinhocne

Pergunta

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

Mas o problema é que não mostra o resultado da soma pois aparece zero igual a imagem abaixo, pois preciso de ajuda nisso.

http://www.4shared.com/file/36411957/4e2ae...ulo-1_cpia.html

E ai o que será? :blink:

Link para o comentário
Compartilhar em outros sites

23 respostass a esta questão

Posts Recomendados

  • 0
Não aconteceu nada continua na mesma.

voce tem certeza que

valor1 := QrySomasLancados.FieldByName('Soma').AsFloat;

está recebendo valor da QrySomasLancados ?

verifique...

Tenho sim, pois está assim:

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;

Link para o comentário
Compartilhar em outros sites

  • 0

Colega... voce usou o debugger do delphi para verificar se valor1 realmente esta recebendo um valor ?

voce denifiu valor1 no QR ou no Form ?

se for no form voce tem que referenciar a unit do form no QR

se for no QR voce tem que referenciar a unit do QR no form

de qualquer forma voce pode colocar um showmessage para verificar se valor1 realmente tem algum valor

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;
    showmessage(floattostr(valor1));

de uma verificada...

Link para o comentário
Compartilhar em outros sites

  • 0
Colega... voce usou o debugger do delphi para verificar se valor1 realmente esta recebendo um valor ?

voce denifiu valor1 no QR ou no Form ?

se for no form voce tem que referenciar a unit do form no QR

se for no QR voce tem que referenciar a unit do QR no form

de qualquer forma voce pode colocar um showmessage para verificar se valor1 realmente tem algum valor

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;
    showmessage(floattostr(valor1));

de uma verificada...

Quando eu busco ele mostra que está recebendo o valor, mas nada mostra, agora a questão,se for no form voce tem que referenciar a unit do form no QR

se for no QR voce tem que referenciar a unit do QR no form, ??????????? :wacko: :mellow: :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

vamos tentar esclarecer ...

digamos que voce definiu a variavel valor1 no form

var valor1 : real;

então para ela aparecer no QR a unit do form deve ser referenciada no uses do QR, e no QR voce colocaria

EX:

uses Unit1; // unit do form

então no evento onprint do QrLabel Total ficaria

Value := FloatToStr(Form1.valor1); // ou da outra maneira

..................................................................................................

mas se valor1 estiver vazio quando voce executa a query, não vai mostrar nada no QR

se voce estivesse executando a sql no QR já seria diferente ...

Link para o comentário
Compartilhar em outros sites

  • 0
vamos tentar esclarecer ...

digamos que voce definiu a variavel valor1 no form

var valor1 : real;

então para ela aparecer no QR a unit do form deve ser referenciada no uses do QR, e no QR voce colocaria

EX:

uses Unit1; // unit do form

então no evento onprint do QrLabel Total ficaria

Value := FloatToStr(Form1.valor1); // ou da outra maneira

..................................................................................................

mas se valor1 estiver vazio quando voce executa a query, não vai mostrar nada no QR

se voce estivesse executando a sql no QR já seria diferente ...

Estou executando, tudo pelo QR e a variavel que foi declarada é na propria QR, isso que estou achando estranho!

Link para o comentário
Compartilhar em outros sites

  • 0

já que voce esta executando tudo pelo QR, faça um pequeno teste, depois que a query for executada, atribua um valor para a variavel valor1, e veja se o valor aparece no Report ... se aparecer significa que valor1 não esta recebendo valor algum da query.

outra coisa que ficou na duvida, voce esta executando a query no evento BeforePrint do QR ?

Link para o comentário
Compartilhar em outros sites

  • 0
já que voce esta executando tudo pelo QR, faça um pequeno teste, depois que a query for executada, atribua um valor para a variavel valor1, e veja se o valor aparece no Report ... se aparecer significa que valor1 não esta recebendo valor algum da query.

outra coisa que ficou na duvida, voce esta executando a query no evento BeforePrint do QR ?

Coloquei para a variavel receber, mas nada! :angry:

A query eu já testei em tudo, mas atualmente estou testando direto no botão mesmo!

veja:

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;

:unsure:

Obs.: o engraçado ]e que eu montei um relatório a algum tempo para um amigo dessa maneira e deu certo, mas esse nada acontece, quer dizer tenho até ele aqui, e nele funciona e estou fazendo igualzinho no meu projeto e nada,nada e nada :(

Link para o comentário
Compartilhar em outros sites

  • 0
Obs.: o engraçado é que eu montei um relatório a algum tempo para um amigo dessa maneira e deu certo, mas esse nada acontece, quer dizer tenho até ele aqui, e nele funciona e estou fazendo igualzinho no meu projeto e nada,nada e nada

dificil responder sem saber tudo o que voce fez .. só posso sugerir que voce começe do zero novamente e tente descobrir onde esta o erro.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Robinhocne, inicialmente você mencionou:

Os dados ficaram assim:

Primeiramente declarei uma variavel na public:

valor1, valor2, valor3 : Real;
Eu entenderia este "na public" como sendo na seção public da declaração da sua classe do form do relatório, até porque depois você diz:
Estou executando, tudo pelo QR e a variavel que foi declarada é na propria QR, isso que estou achando estranho!
Isto posto, como você estaria iniciando VALOR1 antes de criar o seu FrmRelChequePre?
...
   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;

Link para o comentário
Compartilhar em outros sites

  • 0
Robinhocne, inicialmente você mencionou:
Os dados ficaram assim:

Primeiramente declarei uma variavel na public:

valor1, valor2, valor3 : Real;
Eu entenderia este "na public" como sendo na seção public da declaração da sua classe do form do relatório, até porque depois você diz:
Estou executando, tudo pelo QR e a variavel que foi declarada é na propria QR, isso que estou achando estranho!
Isto posto, como você estaria iniciando VALOR1 antes de criar o seu FrmRelChequePre?
...
   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;
Bom, deixa eu passar mais informações dessa questão, pois também fiz algumas alterações: Eu tenho um form para buscar os dados qeu serão mostrados no relatório, dados do formulario: Nome do Formulario (FrmLisRelCheques) Um IbQuery (QryTotais) responsavel pela total do sum do campo valor Um TDateEdit do pacote de componentes do RxLib (TxtDataInicial) e outro TDateEdit (TxtDataFinal) responsavel pelo filtro das datas entre o Vencimento da data incial até a data final E Um SpeedButton (SpbExibir) resposanvel pelos os procedimentos a serem mostrados no relatório. 1º A Variavel Valor1 foi declarada na public desse formulário de buscas:
... 
 private
    { Private declarations }
  public
  valor1 : Real;
  end;

var
  FrmLisRelCheques: TFrmLisRelCheques;

implementation 
....
No SpbExibir:
procedure TFrmLisRelCheques.spbexiClick(Sender: TObject);
begin
   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, agencia, conta, cheque, Tipo From Lancamento');
       Sql.Add('where (Vencimento >= :d1) and (Vencimento <= :d2) and cheque is not null and pagamento is null');
       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 QryTotais do
      Begin
         QryTotais.Close;
         QryTotais.Sql.Text :='Select sum(Valor)as "SOMA" From Lancamento Where cheque is not null and pagamento is null';
         QryTotais.Open;
      end;

    valor1 := QryTotais.FieldByName('Soma').AsFloat;

  With  TFrmRelChequePre.Create(Application) Do
      Try
         QuickRep1.Preview;
      Finally
         Free;
      end;
   close;
Emquestão de vizualização dos dados no relatório está perfeito, só essa parte:
With QryTotais do
      Begin
         QryTotais.Close;
         QryTotais.Sql.Text :='Select sum(Valor)as "SOMA" From Lancamento Where cheque is not null and pagamento is null';
         QryTotais.Open;
      end;

    valor1 := QryTotais.FieldByName('Soma').AsFloat;
Que é reposanvel pela soma e onde que o resultado é jogado para a QryTotais. Até aqui está Ok, pois testei para que jogasse o resultado em TLabel desse formulário e ai é mostrado, só no relatório que não está mostrando, fiz e refiz varias vezes pois nada: O Formulário onde está o relatório: Nome (FrmRelCheques) Principal banda, onde é para mostrar os resultados: Nome da Banda (QrBand4), setado o BandType para RbSummary, nessa banda tem um QrLabel (Total) onde será mostrado o resultado do Valor1 do FrmLisRelCheques. No Evento BeforePrint da QrBand4 coloquei os seguintes dados para ser mostrado o resultado do Valor1:
procedure TFrmRelChequePre.QRBand4BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
   Total.Caption   := FloatToStr (FrmLisRelCheques.Valor1);
end;

Mas ai chega a questão, pois não mostra nada! :angry:

Espero que essa informações possa me ajudar e que você possam entender o meu pedido.

Aguardo respostas,

Att , Robinhocne

Link para o comentário
Compartilhar em outros sites

  • 0

Robinhocne, já que você cria o relatório no mesmo procedimento que faz o cálculo e que o seu QRLabel irá mostrar o valor calculado ali, então experimente fazer a atribuição neste procedimento também:

...
  valor1 := QryTotais.FieldByName('Soma').AsFloat;

  With  TFrmRelChequePre.Create(Application) Do
      Try
         Total.Caption := FloatToStr (Valor1);  // <<<<<<<<<
         QuickRep1.Preview;
      Finally
         Free;
      end;
   close;
e remova este código do seu relatório:
procedure TFrmRelChequePre.QRBand4BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
   Total.Caption   := FloatToStr (FrmLisRelCheques.Valor1);
end;

Boa sorte!

Link para o comentário
Compartilhar em outros sites

  • 0
Robinhocne, já que você cria o relatório no mesmo procedimento que faz o cálculo e que o seu QRLabel irá mostrar o valor calculado ali, então experimente fazer a atribuição neste procedimento também:

...
  valor1 := QryTotais.FieldByName('Soma').AsFloat;

  With  TFrmRelChequePre.Create(Application) Do
      Try
         Total.Caption := FloatToStr (Valor1);  // <<<<<<<<<
         QuickRep1.Preview;
      Finally
         Free;
      end;
   close;
e remova este código do seu relatório:
procedure TFrmRelChequePre.QRBand4BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
   Total.Caption   := FloatToStr (FrmLisRelCheques.Valor1);
end;

Boa sorte!

Removi o codigo do BeforePrint e fiz do jeito que você passou e dá esse erro, coloquei antes e depois dessa linha de codigo, mas deu a mesma coisa e faltou acrescentar que é no Formulário (FrmRelChequePre.Total.Caption := FloatToStr (Valor1);)

Access violation at address 005AA1BB in module 'sistemacfc.exe'. Read of address 00000364.

Link para o comentário
Compartilhar em outros sites

  • 0
Robinhocne, já que você cria o relatório no mesmo procedimento que faz o cálculo e que o seu QRLabel irá mostrar o valor calculado ali, então experimente fazer a atribuição neste procedimento também:

...
  valor1 := QryTotais.FieldByName('Soma').AsFloat;

  With  TFrmRelChequePre.Create(Application) Do
      Try
         Total.Caption := FloatToStr (Valor1);  // <<<<<<<<<
         QuickRep1.Preview;
      Finally
         Free;
      end;
   close;
Removi o codigo do BeforePrint e fiz do jeito que você passou e dá esse erro, coloquei antes e depois dessa linha de codigo, mas deu a mesma coisa e faltou acrescentar que é no Formulário (FrmRelChequePre.Total.Caption := FloatToStr (Valor1);)
Não faltou não! <_< quando você usa with.. do, como está:
With  TFrmRelChequePre.Create(Application) Do
      Try
         Total.Caption := FloatToStr (Valor1);  // <<<<<<<<<
já está dizendo que Total se refere a algo que está no object ou record usado no WITH, neste caso TFrmRelChequePre ;)
Access violation at address 005AA1BB in module 'sistemacfc.exe'. Read of address 00000364.
E este access violation VOCE introduziu quando resolver colocar: FrmRelChequePre.Total.Caption := FloatToStr (Valor1); Sabe por que? Porque utilizando o WITH, você não está utilizando a variável FrmRelChequePre, e a menos que o form esteja habilitado no auto-create, esta variável realmente não aponta para uma área de memória válida. Observe que escrever:
FrmRelChequePre := TFrmRelChequePre.Create(Application);
try
  FrmRelChequePre.Preview;
finally
  FrmRelChequePre.Free;
end;
é diferente de:
with TFrmRelChequePre.Create(Application) do
try
  Preview;
finally
  Free;
end;

Na primeira a variável FrmRelChequePre é válida, na segunda, você nem se referiu a éla.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Observando o tópico vi que vocês estão usando free em vez de release para liberar o form.

a vantagem do release é que ele aguarda até que todos os eventos dos componentes do form tenham encerrado suas execuções para então fechar o form. Isto evita que se deixe áreas sujas na memória.

O help do Delphi recomenda o uso de release em vez do free conforme mostro abaixo, principalmente em janelas filhas:

Destroys the form and frees its associated memory.

Delphi syntax:

procedure Release;

C++ syntax:

void __fastcall Release(void);

Description

Use Release to destroy the form and free its associated memory.

Release does not destroy the form until all event handlers of the form and event handlers of components on the form have finished executing. Release also guarantees that all messages in the form's event queue are processed before the form is released. Any event handlers for the form or its children should use Release instead of Free (Delphi) or delete (C++). Failing to do so can cause a memory access error.

Note: Release returns immediately to the caller. It does not wait for the form to be freed before returning.

Link para o comentário
Compartilhar em outros sites

  • 0
Observando o tópico vi que vocês estão usando free em vez de release para liberar o form.

a vantagem do release é que ele aguarda até que todos os eventos dos componentes do form tenham encerrado suas execuções para então fechar o form. Isto evita que se deixe áreas sujas na memória.

Você está correto Denis Courcy.

Eu mesmo já havia feito menção a isto ano passado.

É força do mau hábito. ;)

Valeu.

Link para o comentário
Compartilhar em outros sites

  • 0
Observando o tópico vi que vocês estão usando free em vez de release para liberar o form.

a vantagem do release é que ele aguarda até que todos os eventos dos componentes do form tenham encerrado suas execuções para então fechar o form. Isto evita que se deixe áreas sujas na memória.

Você está correto Denis Courcy.

Eu mesmo já havia feito menção a isto ano passado.

É força do mau hábito. ;)

Valeu.

Bom, ficou assim:

With  TFrmRelCaixa.Create(Application) Do
      Try

         QuickRep1.Preview;
         Entrada.Caption  := FloatToStr (Entrada);
      Finally
         Free;
      end;

Mas ai deu esse erro, na hora de compilar:

[Error] FLisRelCaixa.pas(88): There is no overloaded version of 'FloatToStr' that can be called with these arguments

Link para o comentário
Compartilhar em outros sites

  • 0

Robinhocne, porque é que você não deixa para mudar as coisas depois que resolver o problema? <_<

Agora o tal Total virou Entrada? e Valor1 também? :blink:

A mensagem de erro, sugere que você não mudou o nome da variável Valor1, mas sim, que está passando o parâmetro errado (um TQRText) para a função FloatToStr que está "programada" para receber um "float" - por isso ela menciona que não existe uma redefinição para esta função (o tal overload).

Outra coisa, eu havia mostrado no exemplo que o tal Total recebia a conversão do tal valor1 antes de chamar Preview. E não foi por acaso. Ocorre que antes de você visualizar o seu relatório, ele já deve ter o label com seu texto inicializado. De que vai servir para você inicializar o label, depois de seu preview ser fechado (é quando a linha de atribuição será executada)?

Link para o comentário
Compartilhar em outros sites

  • 0
Robinhocne, porque é que você não deixa para mudar as coisas depois que resolver o problema? <_<

Agora o tal Total virou Entrada? e Valor1 também? :blink:

A mensagem de erro, sugere que você não mudou o nome da variável Valor1, mas sim, que está passando o parâmetro errado (um TQRText) para a função FloatToStr que está "programada" para receber um "float" - por isso ela menciona que não existe uma redefinição para esta função (o tal overload).

Outra coisa, eu havia mostrado no exemplo que o tal Total recebia a conversão do tal valor1 antes de chamar Preview. E não foi por acaso. Ocorre que antes de você visualizar o seu relatório, ele já deve ter o label com seu texto inicializado. De que vai servir para você inicializar o label, depois de seu preview ser fechado (é quando a linha de atribuição será executada)?

É me desculpe:

Mas então as variaveis ficaram assim:

Entrada, Saida, Total : Real;

no lugar de

Valor1, Valor2, Valor3 : Real;

Então mas como ficaria ?

Pois não entendi de como ficaria essa linha que está dando o erro:

Entrada.Caption := FloatToStr (Entrada);

Link para o comentário
Compartilhar em outros sites

  • 0
Robinhocne, porque é que você não deixa para mudar as coisas depois que resolver o problema? <_<

Agora o tal Total virou Entrada? e Valor1 também? :blink:

A mensagem de erro, sugere que você não mudou o nome da variável Valor1, mas sim, que está passando o parâmetro errado (um TQRText) para a função FloatToStr que está "programada" para receber um "float" - por isso ela menciona que não existe uma redefinição para esta função (o tal overload).

Outra coisa, eu havia mostrado no exemplo que o tal Total recebia a conversão do tal valor1 antes de chamar Preview. E não foi por acaso. Ocorre que antes de você visualizar o seu relatório, ele já deve ter o label com seu texto inicializado. De que vai servir para você inicializar o label, depois de seu preview ser fechado (é quando a linha de atribuição será executada)?

É me desculpe:

Mas então as variaveis ficaram assim:

Entrada, Saida, Total : Real;

no lugar de

Valor1, Valor2, Valor3 : Real;

Então mas como ficaria ?

Pois não entendi de como ficaria essa linha que está dando o erro:

Entrada.Caption := FloatToStr (Entrada);

Não explicar.

Mas vou dar uma sugestão: renomeie o seu componente QRText - Entrada - para QTEntrada.

Link para o comentário
Compartilhar em outros sites

  • 0
Robinhocne, porque é que você não deixa para mudar as coisas depois que resolver o problema? <_<

Agora o tal Total virou Entrada? e Valor1 também? :blink:

A mensagem de erro, sugere que você não mudou o nome da variável Valor1, mas sim, que está passando o parâmetro errado (um TQRText) para a função FloatToStr que está "programada" para receber um "float" - por isso ela menciona que não existe uma redefinição para esta função (o tal overload).

Outra coisa, eu havia mostrado no exemplo que o tal Total recebia a conversão do tal valor1 antes de chamar Preview. E não foi por acaso. Ocorre que antes de você visualizar o seu relatório, ele já deve ter o label com seu texto inicializado. De que vai servir para você inicializar o label, depois de seu preview ser fechado (é quando a linha de atribuição será executada)?

É me desculpe:

Mas então as variaveis ficaram assim:

Entrada, Saida, Total : Real;

no lugar de

Valor1, Valor2, Valor3 : Real;

Então mas como ficaria ?

Pois não entendi de como ficaria essa linha que está dando o erro:

Entrada.Caption := FloatToStr (Entrada);

Não explicar.

Mas vou dar uma sugestão: renomeie o seu componente QRText - Entrada - para QTEntrada.

Ficou assim:

With  TFrmRelCaixa.Create(Application) Do
      Try
         QTEntrada.Caption := FormatFloat('R$ ##0.00',Entrada);
         QTSaida.Caption   := FormatFloat('R$ ##0.00',Saidas);
         QTTotal.Caption   := FormatFloat('R$ ##0.00',Total);
         QuickRep1.Preview;
      Finally
         Free;
      end;
   close;

Pois ai eu já até formatei para que no relatório e mostra assim:

R$ 555,00

Ok, Resolvido mais um probleminha meu...

Agradeço a atenção de todos, pois para min está sendo uma otima ajuda.

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...