Jump to content

Delphi Enterprise 
pela METADE DO PREÇO

botao_delphi.png

 

 

tp_550_logo.png Homologação ACBr Apresenta:
Nova  Impressora
TP-550

botao_saibamais.png

 

 

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Orlando Dantas

ANSWERED Erro access violation ao encerrar o MDFe

Recommended Posts

Olá.

Mais uma vez venho solicitar a ajuda de vocês. Ao encerrar o MDFe quando chamo o método ImprimirEvento ele está me dando um erro de access violation, debugando ele para na pagina ACBrMDFeDAMDFEFR na seginte procedure: 

procedure TACBrMDFeDAMDFEFR.frxReportBeforePrint(Sender: TfrxReportComponent);
var
  qrCode: String;
begin
  if Assigned(FMDFe) then
  begin
    qrCode := FMDFe.infMDFeSupl.qrCodMDFe;
  if Assigned(Sender) and (Trim(qrCode) <> '') and (Sender.Name = 'ImgQrCode') then
     PintarQRCode(qrCode, TfrxPictureView(Sender).Picture.Bitmap, qrUTF8NoBOM);
  end;
end;

O mais estranho é que o erro somente me ocorre se eu tiver tentado fazer qualquer outra impressão de danfe anteriormente, ou seja se eu abrir o sistema e for diretamente encerrar o MDFe ele faz a impressão corretamente, mas se eu imprimir o danfe e depois for tentar encerrar aí ele me retorna o erro.

 

Share this post


Link to post
Share on other sites

Boa tarde.

O mesmo pode ser simulado no demo?

Att.


Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Share this post


Link to post
Share on other sites

Bom dia. Tentei simular o mesmo erro no demo, mas o mesmo não aconteceu. Vocês acham que pode está relacionado ao fast, pois aqui funcionava normal, e o erro começou a acontecer depois da atualização de alguns componentes e um deles foi o fast, mas como ele para em um arquivo do ACBr ao ser debugado, e o mesmo também, avia sido atualizado, por esse motivo imaginei que o erro estaria no componente do ACBr.

Share this post


Link to post
Share on other sites
14 minutos atrás, Orlando Dantas disse:

Bom dia. Tentei simular o mesmo erro no demo, mas o mesmo não aconteceu. Vocês acham que pode está relacionado ao fast, pois aqui funcionava normal, e o erro começou a acontecer depois da atualização de alguns componentes e um deles foi o fast, mas como ele para em um arquivo do ACBr ao ser debugado, e o mesmo também, avia sido atualizado, por esse motivo imaginei que o erro estaria no componente do ACBr.

Também não consegui replicar pelo programa exemplo.

Se conseguir crie uma aplicação simples onde o problema ocorra e anexe os fontes aqui.

  • Like 2

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
59 minutos atrás, BigWings disse:

Também não consegui replicar pelo programa exemplo.

Se conseguir crie uma aplicação simples onde o problema ocorra e anexe os fontes aqui.

Farei isso. Mas só para constar e talvez com esse feedback vocês já consigam me ajudar, quando eu simplesmente abro a aplicação e encerro o MDFe que é quando ele imprime sem erro o atributo FMDFe ele é igual a (nil), já quando eu utilizo o componente para fazer uma impressão antes de encerrar o MDFe, o mesmo atributo não vem vazio ele vem com informações assim entrando no IF e gerando o erro porque a property (qrCodMDFe) vem sem informação. 

Como eu faço a impressão após enviar, eu utilizo os métodos:

FVISUALIZAR_MDFE.MDFE.EventoMDFe.Evento.Clear;
FVISUALIZAR_MDFE.MDFE.Manifestos.Clear;

antes do envio.  

Share this post


Link to post
Share on other sites
1 hora atrás, Orlando Dantas disse:

Bom dia. Tentei simular o mesmo erro no demo, mas o mesmo não aconteceu. Vocês acham que pode está relacionado ao fast, pois aqui funcionava normal, e o erro começou a acontecer depois da atualização de alguns componentes e um deles foi o fast, mas como ele para em um arquivo do ACBr ao ser debugado, e o mesmo também, avia sido atualizado, por esse motivo imaginei que o erro estaria no componente do ACBr.

Me desculpem quando eu falei acima que não tinha conseguido gerar o mesmo erro no demo eu tinha testado da seguinte forma, eu adicionei a opção ACBrMDFe1.ImprimirEvento após o enviar pois é assim que eu faço na minha aplicação. Mas testando novamente pela opção do botão (btnImprimirEvento) conseguir simular o mesmo erro da seguinte forma:

Eu primeiro imprimo um XML de MDFe, após eu vou imprimir o evento, aí o mesmo erro é gerado.

Lembrando que eu adicionei o componente ACBrMDFeDAMDFEFR no demo para o teste.

Edited by Orlando Dantas

Share this post


Link to post
Share on other sites
2 minutos atrás, Orlando Dantas disse:

da seguinte forma, eu adicionei a opção ACBrMDFe1.ImprimirEvento após o enviar pois é assim que eu faço na minha aplicação.

Se fez alteração no programa exemplo, anexe os fontes alterados.


Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
1 minuto atrás, BigWings disse:

Se fez alteração no programa exemplo, anexe os fontes alterados.

No último teste que eu fiz a unica alteração foi que eu adicionei o componente ACBrMDFeDAMDFEFR e linquei ao ACBrMDFe, a outra alteração que eu disse que tinha feito foi no primeiro teste onde não tinha conseguido gerar o erro mas eu não salvei estas alterações, ou seja as mesmas não estavam no último teste. Mesmo assim se ainda preferir que eu mande os fontes com a adição do componente ACBrMDFeDAMDFEFR, anexarei agora.

Share this post


Link to post
Share on other sites

Alguém já passou por esse problema? e conseguiu resolver? No Demo dá o mesmo erro. É como se o componente não estivesse limpo aí pega valores que não deveria ter no encerramento assim gerando o access violation.

Share this post


Link to post
Share on other sites

Bom dia Orlando,

É muito estranho o que você esta relatando, pois no programa exemplo, mais precisamente o botão que exemplifica esse evento temos:

    ACBrMDFe1.Manifestos.Clear;  // <--- essa linha limpa o componente antes de carregar o XML do MDF-e que vai ser encerrado
    ACBrMDFe1.Manifestos.LoadFromFile(OpenDialog1.FileName);

    ACBrMDFe1.EventoMDFe.Evento.Clear; // <--- essa linha limpa a classe evento antes de receber os dados de um evento, neste caso o de encerramento

    with ACBrMDFe1.EventoMDFe.Evento.New do
    begin
      infEvento.chMDFe     := Copy(ACBrMDFe1.Manifestos.Items[0].MDFe.infMDFe.ID, 5, 44);
      infEvento.CNPJCPF    := edtEmitCNPJ.Text;
      infEvento.dhEvento   := now;
      infEvento.tpEvento   := teEncerramento;
      infEvento.nSeqEvento := 1;

      infEvento.detEvento.nProt := ACBrMDFe1.Manifestos.Items[0].MDFe.procMDFe.nProt;
      infEvento.detEvento.dtEnc := Date;
      infEvento.detEvento.cUF   := StrToInt(Copy(IntToStr(ACBrMDFe1.Manifestos.Items[0].MDFe.infDoc.infMunDescarga.Items[0].cMunDescarga),1,2));
      infEvento.detEvento.cMun  := ACBrMDFe1.Manifestos.Items[0].MDFe.infDoc.infMunDescarga.Items[0].cMunDescarga;
    end;

    ACBrMDFe1.EnviarEvento( 1 ); // 1 = Numero do Lote

    MemoResp.Lines.Text := ACBrMDFe1.WebServices.EnvEvento.RetWS;
    LoadXML(ACBrMDFe1.WebServices.EnvEvento.RetWS, WBResposta);

 


Consultor SAC ACBr Italo Jurisato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Share this post


Link to post
Share on other sites
5 horas atrás, Italo Jurisato Junior disse:

Bom dia Orlando,

É muito estranho o que você esta relatando, pois no programa exemplo, mais precisamente o botão que exemplifica esse evento temos:

    ACBrMDFe1.Manifestos.Clear;  // <--- essa linha limpa o componente antes de carregar o XML do MDF-e que vai ser encerrado
    ACBrMDFe1.Manifestos.LoadFromFile(OpenDialog1.FileName);

    ACBrMDFe1.EventoMDFe.Evento.Clear; // <--- essa linha limpa a classe evento antes de receber os dados de um evento, neste caso o de encerramento

    with ACBrMDFe1.EventoMDFe.Evento.New do
    begin
      infEvento.chMDFe     := Copy(ACBrMDFe1.Manifestos.Items[0].MDFe.infMDFe.ID, 5, 44);
      infEvento.CNPJCPF    := edtEmitCNPJ.Text;
      infEvento.dhEvento   := now;
      infEvento.tpEvento   := teEncerramento;
      infEvento.nSeqEvento := 1;

      infEvento.detEvento.nProt := ACBrMDFe1.Manifestos.Items[0].MDFe.procMDFe.nProt;
      infEvento.detEvento.dtEnc := Date;
      infEvento.detEvento.cUF   := StrToInt(Copy(IntToStr(ACBrMDFe1.Manifestos.Items[0].MDFe.infDoc.infMunDescarga.Items[0].cMunDescarga),1,2));
      infEvento.detEvento.cMun  := ACBrMDFe1.Manifestos.Items[0].MDFe.infDoc.infMunDescarga.Items[0].cMunDescarga;
    end;

    ACBrMDFe1.EnviarEvento( 1 ); // 1 = Numero do Lote

    MemoResp.Lines.Text := ACBrMDFe1.WebServices.EnvEvento.RetWS;
    LoadXML(ACBrMDFe1.WebServices.EnvEvento.RetWS, WBResposta);

 

Boa tarde. Gravei um pequeno vídeo demonstrando o erro que dá mesmo no Demo. Unica alteração feita foi colocar um componente ACBrMDFeDAMDFEFR. 

https://1drv.ms/v/s!AgBd18bzyxx6iaRNLG-7YVly01B8eg?e=Al5szH

Como já informei em um dos meus comentários  acima debugando encontrei o seguinte erro:

Quando eu imprimo diretamente o evento ele imprime sem erro, o atributo FMDFe ele é igual a (nil), já quando eu utilizo o componente para fazer uma impressão do Danfe antes de imprimir o evento,  o mesmo atributo não vem vazio ele vem com informações assim entrando no IF e gerando o erro porque a property (qrCodMDFe) vem sem informação. 

Share this post


Link to post
Share on other sites
10 minutos atrás, Orlando Dantas disse:

No exemplo de impressão do evento, primeiro é necessário selecionar o XML do MDFe, depois o XML do evento.

Você está selecionando o XML do evento duas vezes.

 

  • Thanks 1

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
53 minutos atrás, BigWings disse:

No exemplo de impressão do evento, primeiro é necessário selecionar o XML do MDFe, depois o XML do evento.

Você está selecionando o XML do evento duas vezes.

 

Obrigado meu amigo. Esse realmente era meu problema, no meu sistema eu não estava selecionando o XML do MDFe, ao fazer isso o problema foi resolvido. Os moderadores podem fechar o tópico. 

Share this post


Link to post
Share on other sites

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.


Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...