Olá galera, nesta Quick Tips, irei finalizar o artigo sobre passagem de parâmetros no Crystal Reports XI diretamente pelo Delphi 2010, usando a VLC disponível no nosso site da DevMedia.

Vamos criar um exemplo simples, em Delphi, salve a unit como uFrmRelatorioCategoria.pas. Nela adicione :

  • 2 TButton(BtnVisualizar,BtnCarregarParametros);
  • 1 Tcrpe;
  • 1 TopenDialog
  • 1 TMemo


unit uFrmRelatorioCategoria;
 interface
 uses
  
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, UCrpeClasses, UCrpe32;
  
 type
    TFrmRelatorioCategoria = class(TForm)
       Crpe1: TCrpe;
       OpenDialog1: TOpenDialog;
       BtnVisualizar: TButton;
       BtnCarregarParametros: TButton;
       Memo1: TMemo;
       procedure BtnVisualizarClick(Sender: TObject);
       procedure BtnCarregarParametrosClick(Sender: TObject);
    private
       { Private declarations }
    public
       { Public declarations }
    end;
  
 var
  
 FrmRelatorioCategoria: TFrmRelatorioCategoria;
  
 implementation
 {$R *.dfm}
 procedure TFrmRelatorioCategoria.BtnCarregarParametrosClick(Sender: TObject);
 begin
    if OpenDialog1.Execute then
    begin
       Memo1.Clear;
       with Crpe1 do
       begin
          WindowState := wsMaximized;
          WindowButtonBar.PrintSetupBtn := True;
          ReportName := OpenDialog1.FileName;
          Memo1.Lines.AddStrings(ParamFields.Names);
       end;
    end;
 end;
 end.

Veja como é simples passar os parâmetros diretamente pelo Delphi, podemos fazer também uma “brincadeira”, com a propriedade ParamFields, que seria retornar a lista de parâmetros de um relatório, vamos ver como fazer isso logo abaixo, vamos implementar no BtnCarregarParametros.

procedure TFrmRelatorioCategoria.BtnVisualizarClick(Sender: TObject);
 begin
    if OpenDialog1.Execute then
    begin
       with Crpe1 do
       begin
          WindowState := wsMaximized;
          WindowButtonBar.PrintSetupBtn := True;
          ReportName := OpenDialog1.FileName;
          ParamFields.ByName('p_Categoria', '').CurrentValue := QuotedStr( 'PLUS' );
          Execute;
       end;
    end;

 end;

Veja o Exemplo construído:

Exemplo construído

Baixe neste artigo o exemplo completo juntamente com o relatório para teste.

Fico por aqui ate à próxima Quick Tips. Qualquer dúvida, dica, ou sugestão, envie um e-mail estarei a disposição para responder.