Só para especialistas em Delphi

Delphi

18/02/2003

Uso o XP-Delphi5-InterBase6

Eu tiro qualquer relatório varias vezes usando a rotina abaixo e tudo sai normalmente, em uma determinada vez da o erro na linha marcada com seta.

“Access violation at address 0051B815 in module ´MENU.exe´. Read of address 018911DA” ,

ou

“A component named QRStantardPreview already exist.”


Acredito que o componente QRStandardPreview em um determinado momento não é destruído da memória, Mas como destruilo como resolver de outra forma?

Application.CreateForm(TRazaoR_f,RazaoR_f);
RazaoR_f.QRazaoR_f.PreviewModal; <<=====
RazaoR_f.QRazaoR_f.Destroy;
RazaoR_f.QRazaoR_f:=nil;
RazaoR_f:=nil;


Anonymous

Anonymous

Curtidas 0

Respostas

Anonymous

Anonymous

18/02/2003

Tente colocar, [b:46a09d3bb6]imediatamente antes[/b:46a09d3bb6] de RazaoR_f:=nil;, RazaoR_f.Free;


GOSTEI 0
Anonymous

Anonymous

18/02/2003

Esse problema é comum no Quick Report, ele costuma dar esses erros na plataforma XP, tinha um sistema que tinha relatórios em Quick Report, tive que mudar para outro gerador de relatório, pois os mesmo não funcionavam no XP


GOSTEI 0
Anonymous

Anonymous

18/02/2003

Tente fechar o Form que contém o TQuickRep imediatamente após chamar o preview...

Application.CreateForm(TRazaoR_f, RazaoR_f);
RazaoR_f.QRazaoR_f.PreviewModal;
RazaoR_f.Close; <<<=========


GOSTEI 0
Anonymous

Anonymous

18/02/2003

Obrigado a todos mas nada funcionou.
Acho que e bug do Report


GOSTEI 0
Anonymous

Anonymous

18/02/2003

Mas o erro que vc diz não acontece em run-time, nao eh?
esse problema acontece qnd vc dá o preview em tempo de projeto,
em run-time nunca aconteceu comigo.

valeu.


GOSTEI 0
Anonymous

Anonymous

18/02/2003

desculpa ai,
nao vi que vc tinha colocado o pedaco do fonte que dah erro. :)
nesse caso, acho que o problema estah em usar previewmodal,
sempre uso somente preview eh funciona blz.


GOSTEI 0
Anonymous

Anonymous

18/02/2003

Faça o seguinte:

if RazaoR_f = nil Then
Application.CreateForm(TRazaoR_f,RazaoR_f)

RazaoR_f.QRazaoR_f.PreviewModal; <<=====
RazaoR_f.QRazaoR_f.Destroy;
RazaoR_f.QRazaoR_f:=nil;
RazaoR_f:=nil;

Valeu

Até mais


GOSTEI 0
Anonymous

Anonymous

18/02/2003

O erro acontece em tempo de projeto e em run-time.
Com previewmodal e só preview.

Esperimente tirar o relatório umas vinte vezes sem sair do sistema.
As vezes comigo dá o erro na terceira vez as vezes dá na enesima.

Obrigado


GOSTEI 0
Adilsond

Adilsond

18/02/2003

procedure TMeuForm.VisualizarRel(Value: Boolean);
begin
with TRazaoR_f.Create(Self) do
try
QRazaoR_f.DataSet.Open; // monto os parametros da query no beforeopen
try
if QRazaoR_f.DataSet.IsEmpty then
raise Exception.Create(´Não existem registros para a opção escolhida.´);
case Value of
True : QRazaoR_f.Preview;
False: QRazaoR_f.Print;
end;
finally
QRazaoR_f.DataSet.Close;
end;
finally
QRazaoR_f.QRPrinter := nil;
QRazaoR_f.Free;
Free;
end;
end;


GOSTEI 0
Anonymous

Anonymous

18/02/2003

Utilize o procedimento abaixo:

procedure QRDestroi;
var
nIdx: Integer;
begin
for nIdx := (Screen.FormCount-1) downto 0 do
with Screen.Forms[nIdx] do
if ClassName = ´TQRStandardPreview´ then
Close;
end;
======================

Faça assim no botão de manda dar o preview:
QrDestroi;
QuickRep1.PreviewModal;


GOSTEI 0
POSTAR