FastReport no Delphi - Variáveis


As variáveis são muito útil quando tem a necessidade de utilizar valores dinâmicos, exemplo envio de informações em tempo de execução. As variais são do formato "variant" ou seja, não precisamos declarar tipo, basta informar o seu conteúdo.

Para criar e trabalhar com variáveis no FastReport, selecione o item de menu "Relatório > Variáveis...". 
A variáveis no FastReport são em estrutura de dois níveis, primeiro nível e a categoria e o segundo nível a variável em si. Normalmente utilizadas quando contem muitas variáveis.

Então vamos para um exemplo: Vamos dizer que tempo muitas variáveis, vamos jogar essas variáveis para um relatório de venda.
  Clientes
    Código do cliente
    Nome do cliente
  Venda
    Código da venda
    Data do venda
    Número da nota fiscal

Nesse nosso exemplo acima os campos "Clientes" e "Venda" são nossas categorias e os de mais campos são nossas variáveis.
Vamos levar esse nosso exemplo para o FastReport. Abra o editor de variáveis e crie esta estrutura usando os botões "Nova categoria", "Nova Variável" e "Editar"




Mas você pode simplesmente enviar via Delphi as variáveis para o FastReport, fazendo desta forma não se precisa criar as variáveis dentro do FastReport, temos que fazer como no código abaixo.
procedure TFPosVendas.BtnVisualizarClick(Sender: TObject);
begin
  if dmRels.Ler_Arquivo('Pós-Vendas', 'FormAvalPosVendas.fr3') then begin
    dmrels.frxReport.Variables.Variables['Valor'] := QuotedStr(FormatFloat('R$#,##0.00', 1500.00));
    dmrels.frxReport.Variables.Variables['Vendedor'] := QuotedStr('Preencha aqui');
    dmrels.frxReport.Variables.Variables['Equipes'] := QuotedStr('Preencha aqui');
    dmrels.frxReport.Variables.Variables['NroContrato'] := IntToStr(1000);
    dmrels.frxReport.ShowReport;
  end;
end;

Já dentro do documento a variável é utilizada com o VarToStr(NomeDaVariavel), como esta abaixo.

5 comentários:

  1. Muito mal explicado.....
    tenho a variavel já criada no delphi pela seguinte linha:
    frxRelatorios.Variables['Assunto_1'] := QuotedStr(assunto1);

    Mas meu fastreport não enxerga ela
    Precisava compara-la dentro do fastreport para tomada de decisoes.

    ResponderExcluir
    Respostas
    1. Bom dia! Tem que colocar o " frxRelatorios.Variables['Assunto_1'] := QuotedStr(assunto1);" depois de setar o arquivo fr3 não antes

      Excluir
    2. Presta atenção Gabriel, o artigo não está mal explicado, vc que não tem atenção::
      frxRelatorios.Variables['Assunto_1'] := QuotedStr(assunto1), quando na verdade, deveria ser:
      frxRelatorios.Variables.Variables['Assunto_1'] := QuotedStr(assunto1); Tá ok meu caro!

      Excluir
  2. Parabêns!
    Me ajudou muito...
    Obrigado

    ResponderExcluir
  3. Ana e como eu declaro e uso a variável no texto vindo do banco de dados se eu uso [Cliente_nome] vindo no texto de uma banda ele não é alterado o que eu preciso fazer?

    ResponderExcluir