Ir para conteúdo
Fórum Script Brasil
  • 0

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


Eder

Pergunta

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 para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...