Ir para conteúdo
  • Cadastre-se

dev botao

Access Violation ao tentar imprimir inutilização


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1304 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Estou tendo erro de access violation ao executar o seguinte comando:

  dmAcbr.ACBrNFe1.ImprimirInutilizacao;

Estranho que só dá o erro na segunda vez que executa.
 

Segue abaixo a procedure completa:

 

procedure TfInutilizacaoAdd.bbSalvarClick(Sender: TObject);
var
 iID_Inutilizacao : Integer;
 sXML, sArq : string;
begin
  if length(Memo1.Text) <= 15 then
  begin
   iMessageBox(handle,'Favor preencher no mínimo 15 caracteres!','Inutilizar',MB_OK);
   Exit;
  end;


 if iMessageBox(Handle,'Deseja realmente inutilizar a numeração?','Inutilizar Numeração',MB_YESNO) <> IDYES then
  Exit;

 dmAcbr.ACBrNFe1.WebServices.Inutiliza(  sApenasNumeros(dmConexao.TFILIALCNPJ.AsString),
                                         Memo1.Text,
                                         edtAno.Value,
                                         55,
                                         edtSerie.Value,
                                         edtNumInicial.Value,
                                         edtNumFinal.Value);

 if dmAcbr.ACBrNFe1.WebServices.Inutilizacao.cStat = 102 then
 begin
  fInutilizacao.TInutilizacaoID_INUTILIZACAO.Required := False;
  fInutilizacao.TInutilizacao.Insert;
  fInutilizacao.TInutilizacaoID_INUTILIZACAO.IsNull;
  fInutilizacao.TInutilizacaoID_FILIAL.AsInteger      := iID_FILIAL;
  fInutilizacao.TInutilizacaoANO.AsInteger            := edtAno.Value;
  fInutilizacao.TInutilizacaoMODELO.AsInteger         := 55;
  fInutilizacao.TInutilizacaoSERIE.AsInteger          := edtSerie.Value;
  fInutilizacao.TInutilizacaoNUMERO_INICIAL.AsInteger := edtNumInicial.Value;
  fInutilizacao.TInutilizacaoNUMERO_FINAL.AsInteger   := edtNumFinal.Value;
  fInutilizacao.TInutilizacaoJUSTIFICATIVA.AsString   := Memo1.Text;
  fInutilizacao.TInutilizacaoPROTOCOLO.AsString       := dmAcbr.ACBrNFe1.WebServices.Inutilizacao.Protocolo;
  fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime     := dmAcbr.ACBrNFe1.WebServices.Inutilizacao.dhRecbto;

  if dmAcbr.ACBrNFe1.WebServices.Inutilizacao.tpAmb = taProducao then
   fInutilizacao.TInutilizacaoAMBIENTE.AsString := 'Produção'
  else
   fInutilizacao.TInutilizacaoAMBIENTE.AsString := 'Homologação';

  //retorna proximo id do generator
  iID_Inutilizacao := iRetornarID('GEN_INUTILIZACAO_ID');

  fInutilizacao.TInutilizacao.Post;
  dmConexao.IBTCONEXAO.CommitRetaining;

  sArq := dmConexao.TFILIALCODIGO_ESTADO.AsString +
         Copy(IntToStrZero(fInutilizacao.TInutilizacaoANO.AsInteger, 4), 3, 2) +
         sApenasNumeros(dmConexao.TFILIALCNPJ.AsString) +
         IntToStrZero(fInutilizacao.TInutilizacaoMODELO.AsInteger, 2) +
         IntToStrZero(fInutilizacao.TInutilizacaoSERIE.AsInteger, 3) +
         IntToStrZero(fInutilizacao.TInutilizacaoNUMERO_INICIAL.AsInteger, 9) +
         IntToStrZero(fInutilizacao.TInutilizacaoNUMERO_FINAL.AsInteger, 9);

  bInserirXMLDB('INUTILIZACAO',
                'INUTILIZACAO',
                IntToStr(iID_Inutilizacao),
                fInutilizacao.TInutilizacaoPROTOCOLO.AsString,
                'Inutilizada',
                dmACBr.ACBrNFe1.WebServices.Inutilizacao.XML_ProcInutNFe,
                sArq+'-procInutNFe.xml',
                fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime,
                0);


 // dmAcbr.ACBrNFe1.NotasFiscais.Clear;

  sXML := sVerificaArquivo('Inutilizada', 'INUTILIZACAO',
                           ExtractFileDir(Application.ExeName)+'\XML_NFE\Inu\'+FormatDateTime('YYYYMM',
                           fInutilizacao.TInutilizacaoDATA_HORA.AsDateTime)+'\'+sArq+'-procInutNFe.xml', iID_Inutilizacao ,
                           0);

  dmAcbr.ACBrNFe1.DANFE:=dmAcbr.ACBrNFeDANFEFR1;

  dmAcbr.ACBrNFe1.InutNFe.XML:='';
  dmAcbr.ACBrNFe1.InutNFe.LerXML( sXML );

  dmAcbr.ACBrNFe1.ImprimirInutilizacao;


  fInutilizacao.TInutilizacao.Close;
  fInutilizacao.TInutilizacao.ParamByName('ID_FILIAL').AsInteger := iID_FILIAL;
  fInutilizacao.TInutilizacao.Open;

  iMessageBox(handle,'Numeração inutilizada com sucesso! Favor excluir as notas fiscais que foram inutilizadas (caso houver)!','Inutilizar Numeração',MB_OK);
  Close;
 end
 else
 begin
  iMessageBox(handle,pchar('Não foi possível inutilizar a numeração!'+#13+IntToStr(dmAcbr.ACBrNFe1.WebServices.Inutilizacao.cStat)+' - '+dmAcbr.ACBrNFe1.WebServices.Inutilizacao.xMotivo),'Inutilizar Numeração',MB_OK);
 end;

end;
 

 

 

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

 O mesmo ocorre ao reproduzir no demo?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

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


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

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


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Marcio,

Você chegou a "debugar" para saber exatamente em que linha da sua rotina ou do componente ocorre o erro de violação de acesso?

Consultor SAC ACBr

Italo Giurizzato 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

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

A.V. somente ocorre quando você tenta acessar um Objeto que não existe... ou seja, ele já foi destruído, ou ainda não foi criado...

Revise a sua rotina de impressão, e verifique se você está modificando por código a atribuição do DANFE ao componente...

Vá com o Debug, e identifique a linha exata, onde ocorre o problema...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.