Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1016 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Ao gerar um relatorio com mais de 200 notas fiscais (sim, o cliente imprime tudo de uma vez para enviar ao contador) fica absurdamente lento.

Identifiquei que o problema é um bug conhecido do fast report neste ponto:

function TACBrNFSeDANFSeFR.PrepareReport(NFSe: TNFSe): Boolean;

.

.

.

      for I := 0 to TACBrNFSe(ACBrNFSe).NotasFiscais.Count - 1 do
      begin

        CarregaDados(TACBrNFSe(ACBrNFSe).NotasFiscais.Items.NFSe);

        if (I > 0) then
          Result := frxReport.PrepareReport(false)
        else
          Result := frxReport.PrepareReport

      end;

Onde o PrepareReport(false) acrescenta um novo relatorio a cada NFs-e (usando o recurso de multi-relatorios). Mas depois de uma certa quantidade fica muito lento.

Fiz algumas alterações nos fontes para tornar isto mais rapido. Qual o procedimento para submeter a alteração à eventual incorporação definitiva?

Abraços

 

 

 

  • Membros Pro
Postado

O que eu fiz foi usar uma dica conhecida que resolve este problema de degradação do FastReport em multiplos relatorios.

Ao invés de um PrepareReport(FALSE) que vai acumulando os relatórios (e degradando) usa-se um segundo frxReport chamando o PreviewPages.AddFrom(frxReport).

Isto foi feito em uma unit separada em anexo. A única coisa que tive que alterar no código original foi tornar o método CarrgaDados protected.

Abraços

UPolyAcbrDANFSE.pas

  • Membros Pro
Postado

Como eu disse, criei uma unit separada para resolver o problema. Isto foi feito para isolar a alteração do ACBr original. A unica lteração no codigo original foi tornar o método CarrgaDados protected (na unit ACBrNFSeDANFSeFR.pas)

Abraços

  • 4 anos depois...
  • Membros Pro
Postado (editado)

Sei que este post é antigo mas o problema persiste. Eu mantive minha versao da unit durante este tempo mas agora tive que fazer uma atualização geral e o problema retornou. A unit que eu havia enviado anteriormente era uma sobrescrição da classe TACBrNFSeDANFSeFR para evitar alteraçoes no codigo original do Acbr. 

Desta vez entao estou enviando as mudanças feitas na unit original para avaliação dos Srs.

A ideia central (que torna o processo bem mais rápido) é:

frxReport.PreviewPages.AddFrom(frxReportTemp);

na linha 315

Abraços

 

 

 

ACBrNFSeDANFSeFR.pas

Editado por MagoSchmidt
  • 1 ano depois...
  • Membros Pro
Postado

Vi que voces aceitaram minha colaboração. Muito obrigado!

Identifiquei o mesmo problema na ACBrNFeDANFEFRDM.pas, a original processou por 12hs e nao terminou a geraçao de 3000 NF's

Segue a versao corrigida que fez o trabalho em 50mins

Abraços

 

ACBrNFeDANFEFRDM.pas

  • Curtir 1
  • Moderadores
Postado
22 horas atrás, MagoSchmidt disse:

Vi que voces aceitaram minha colaboração. Muito obrigado!

Identifiquei o mesmo problema na ACBrNFeDANFEFRDM.pas, a original processou por 12hs e nao terminou a geraçao de 3000 NF's

Segue a versao corrigida que fez o trabalho em 50mins

Abraços

 

ACBrNFeDANFEFRDM.pas 96 kB · 1 download

antes de alterar tu atualizou o svn??

antes de alterar e enviar?

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Consultores
Postado
Em 14/02/2022 at 13:17, MagoSchmidt disse:

Vi que voces aceitaram minha colaboração. Muito obrigado!

Identifiquei o mesmo problema na ACBrNFeDANFEFRDM.pas, a original processou por 12hs e nao terminou a geraçao de 3000 NF's

Segue a versao corrigida que fez o trabalho em 50mins

Abraços

 

ACBrNFeDANFEFRDM.pas 96 kB · 2 downloads

Olá tudo bem?

Infelizmente seu arquivo está muito desatualizado. Não temos como analisar sem saber em qual revisão está.

Por favor, atualize para a última revisão do SVN e anexe novamente para que possamos dar prosseguimento.

  • Curtir 3

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 1016 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.