GARANTIR DESCONTO

Fórum Erro no método Execute de um relatório rave criado via códig #338582

12/03/2007

0

Olá amigos, criei um relatório via código em rave.
Na seleção dele criei a possibilidade de visualizar/imprimir e enviar por e-mail.
Quando setado para e-mail, altero as seguintes opções:

      RvRel.DefaultDest             := rdFile;
      RvRel.DoNativeOutput          := False;
      RvRel.OutputFileName          := NomeArquivo;
      RvRel.RenderObject            := RvMail ;


Ao executar o execute nesse modo, funciona perfeitamente, mas quando é gerado para visualização/impressão, ocorre os seguintes erros, lembrando que o relatório é mostrado perfeitamente, somente quando fecho a visualização é que ocorre o erro:

Access violation at address 77F755E9 in module ´ntdll.dll´. Read of address XXXXX


Método completo de execução:

   with RvRel.SystemPrinter do begin
      MarginBottom                  := 1;
      MarginLeft                    := 1;
      MarginTop                     := 1;
      MarginBottom                  := 1;
      Units                         := unCM;
      UnitsFactor                   := 2.54;
      Copies                        := 1;
      Orientation                   := poLandScape ;
      RvRel.SystemPreview.FormState := wsMaximized;
      RvRel.SystemSetups            := RvRel.SystemSetups - [ssAllowSetup];
      RvRel.SystemPreview.RulerType := rtBothCm;
      RpDev.SelectPaper(´A4´,false);
      RvRel.Execute;


Obrigado pela atenção.

Mario


Aldus

Aldus

Responder

Posts

12/03/2007

Dadonas

Aldus, não entendo bulhufas de rave, mas acredito que está acontendo algo relacionado a intanciação do relatório. Como vc está trabalhando com a criação do relatório em tempo de execução, verifique se vc está efetuando o .Create e o FreeAndNil(Relatorio) depois de utilizá-lo.

Fallow


Responder

Gostei + 0

12/03/2007

Aldus

Olá Danilo,

Este form que tenho genérico, conforme a seleção do relatório gero o relatório, sendo a configuração do relatório e sua execução é única.

No form de seleção do relatório, uso o reguinte código:

   Application.CreateForm(TfRelatorioRave, fRelatorioRave);
   fRelatorioRave.NomeRelatorio := ´custoporcentro´;
   fRelatorioRave.DestRelatorio := EditDestino.ItemIndex ;
   fRelatorioRave.NomeArquivo   := ´Relatorio_de_Custos_por_Centro_de_Custo.pdf´;
   fRelatorioRave.ShowModal;
   fRelatorioRave.Release;


No Form fRelatorioRave, configuro e executo o relatório no OnShow.

Att
Mario


Responder

Gostei + 0

12/03/2007

Dadonas

depois desta linha:

fRelatorioRave.Release;


vc deve liberar este objeto de memoria assim:

FreeAndNil(fRelatorioRave);


Porém depois de acrescentar esta linha, se vc tentar acessar alguma coisa tipo
fRelatorioRave.QualquerMetodo;

,dai dá erro de violação de acesso de memória parecido com aquele que vc postou.

Fallow


Responder

Gostei + 0

12/03/2007

Aldus

Olá Danilo, fiz a alteração mencionada mas continua com o mesmo erro:

   Application.CreateForm(TfRelatorioRave, fRelatorioRave);
   fRelatorioRave.NomeRelatorio := ´custoporcentro´;
   fRelatorioRave.DestRelatorio := EditDestino.ItemIndex ;
   fRelatorioRave.NomeArquivo   := ´Relatorio_de_Custos_por_Centro_de_Custo.pdf´;
   fRelatorioRave.ShowModal;
   fRelatorioRave.Release;
   FreeAndNil(fRelatorioRave);


Fiz um teste e coloque um showmessage depois do FreeAndNil e o sistema acusa os erros e não passa por esta linha.

Estranho não?


Responder

Gostei + 0

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

Aceitar