Erro no método Execute de um relatório rave criado via códig
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:
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:
Método completo de execução:
Obrigado pela atenção.
Mario
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
Curtidas 0
Respostas
Dadonas
12/03/2007
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
Fallow
GOSTEI 0
Aldus
12/03/2007
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:
No Form fRelatorioRave, configuro e executo o relatório no OnShow.
Att
Mario
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
GOSTEI 0
Dadonas
12/03/2007
depois desta linha:
vc deve liberar este objeto de memoria assim:
Porém depois de acrescentar esta linha, se vc tentar acessar alguma coisa tipo
,dai dá erro de violação de acesso de memória parecido com aquele que vc postou.
Fallow
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
GOSTEI 0
Aldus
12/03/2007
Olá Danilo, fiz a alteração mencionada mas continua com o mesmo erro:
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?
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?
GOSTEI 0