Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Erro Geração do Relatório


Eder

Question

Ola,

Tenho um relatório, um tanto complexo no delphi + quick report, ele trabalha com várias quickrep´s e com o componente do quick QRCompositeReport que une as quickrep´s para formar o relatório.

O relatório funciona perfeitamente, porem quando o usuario coloca para gerar pela terceira vez ele da o erro:

"INSUFFICIENT MEMORY FOR THIR OPERARION".

Ai tenho que fechar a aplicação e gerar novamente, ai funciona...nunca da para gerar mais de 2 relatórios, sempre na terceira vez da este erro.

Já fiz algumas mudanças no BDE tipo: altetei na propriedade “SHAREDMEMSIZE” com 4096, e altere a propriedade “SHAREDMEMLOCATION” para “0×5BDE”.

Mas não resolveu..

Gostaria de saber se alguém já passou por isto e se resolveu este problema.

Muito Obrigado. :unsure:

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

"INSUFFICIENT MEMORY FOR THIR OPERARION".

Memoria insuficiente para essa operação

esse erro ocorre quando a memoria não foi liberada pelo componente, a melhor maneira seria criar o relatorio em tempo de execução e depois libera-lo da memoria.

exemplo:

procedure TForm1.QRCompositeReport1AddReports(Sender: TObject);
begin
  QRCompositeReport1.Reports.Add(QuickRep1);
  QRCompositeReport1.Reports.Add(QuickRep2);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   try
      if QRCompositeReport1 = nil then
         QRCompositeReport1 := TQRCompositeReport1.Create(self);
   except
      ShowMessage('Erro na criação do formulário !!');
      exit;
   end;

   QRCompositeReport1.Print;

   QRCompositeReport1 := nil;
   QRCompositeReport1.Free;
   
end;

abraço

Link to comment
Share on other sites

  • 0

Jhonas,

Problema resolvido.

Peguei a sua dica + uma dica que achei na net ficando assim:

try

if FormComVendedor.QRCompositeReport1 = nil then

FormComVendedor.QRCompositeReport1 := FormComVendedor.QRCompositeReport1.Create(self);

except

ShowMessage('Erro na criação do formulário !!');

exit;

end;

{PROCESSAMENTO}

FormComVendedor.QRCompositeReport1.Prepare;

FormComVendedor.QRCompositeReport1.Preview;

{limpá a memória}

FormComVendedor.QRCompositeReport1 := nil;

FormComVendedor.QRCompositeReport1.Free;

FormComVendedor.Query1.Free;

FormComVendedor.Query2.Free;

FormComVendedor.Query3.Free;

e no Onclose no FormComVendedor:

procedure TFormComVendedor.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

FormComVendedor.Release;

FormComVendedor:= nil;

Action:= caFree;

end;

Deste jeito a mensagem de erro sumiu, fiz uns tentes gerando mais de 20 relatorios simultaneos e o erro não ocorrem mais.

Amigo, Muito Obrigado pela ajuda.

Abraço.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...