Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

prezados,

 

em alguns aplicativos utilizo os componentes da NFe e DANFERave no mesmo form onde trato os demais dados da NFe; entrego, imprimo o DANFE, envio email e tudo ok;

 

num aplicativo em desenvolvimento utilizei um form para tratar os dados da NFe e outro com os componentes e funçoes comuns da NFe, como consulta, cancelamento, etc.

 

do form-base chamo o form da NFe e envio a NFe, recebo o protocolo ok, mas quando vai para impressão (automática na chamada do .Enviar(lote,true)), já na tela do Rave, ao clicar OK recebo um Access Violation (anexo mensagem)

 

onde estou errando ?

o que está faltando ?

o xml está ok, protocolado, entregue

já re-instalei o DANFERave

o mesmo erro ocorre se opto por Imprimir e aponto o xml existente

o xml pode ser impresso através dos outros programas existentes

post-305-0-80861900-1362617382.jpg

 

agradeço a atenção

Otavio Benini

 

post-305-0-80861900-1362617382.jpg

  • Consultores
Postado

Faz o debug do código e poste exatamente qual linha que está gerando o erro de AV.

[]'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.
  • Membros Pro
Postado

anexo um printscreen da tela durante debug

o erro ocorre depois de clicar OK na tela do Rave, na linha 486 do ACBrNFeDANFERaveDM

 

obrigado pela atenção

Otavio Benini

 

 

 

post-305-0-63328800-1362667262_thumb.jpg

  • Consultores
Postado

Você consegue ver se um dos objetos é nil? Talvez o Connection ou o FNFe, ou o Det?

[]'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.
  • Consultores
Postado

Ponha um BreakPoint na linha que está gerando erro, no caso você diz 486. Daí quando o Delphi parar nessa linha você tem duas opções:

  1. Vá com o mouse em cima do objeto e deixe ele parado por alguns segundos. Isso vai mostrar o valor;
  2. ou Adicione um watch. (Você faz isso apertando Ctrl+F5, e escrevendo o objeto que deve ser analisado);

[]'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.
  • Membros Pro
Postado

Elton,

 

adicionei 3 watches: FNFE, Connection e Det

FNFE = nil

Det = undeclared identifier

Connection:

([csInheritable], '7.7.0 (VCL2010)', 684, #4, 0, nil {#0}, 65536, 0, #4, #9, nil {#0}, False, $126BE10, True, 'RT', False, $125CE38, 0, 0, 0, 0, '', '', '', True, False, rtDeveloper, $1283A00, (nil,nil), (nil,nil), (nil,nil), (ACBrNFeDANFERaveDM.TdmACBrNFeRave.CustomDadosProdutosCXNGetCols,$124F930), (ACBrNFeDANFERaveDM.TdmACBrNFeRave.CustomDadosProdutosCXNGetRow,$124F930), (nil,nil), (nil,nil), (nil,nil), (ACBrNFeDANFERaveDM.TdmACBrNFeRave.CustomDadosProdutosCXNOpen,$124F930), (nil,nil), (nil,nil))

 

sds

Otavio Benini

 

imagem:

post-305-0-96799000-1362760825_thumb.jpg

  • Consultores
Postado

Ok, vamos por partes:

 

O valor retornado pelo Connection mostra diversas propriedades, o que significa que o objeto está carregado na memória. Ou em outras palavras: "tudo ok".

 

Det = undeclared identifier

 

Significa que o Delphi não encontrou o Det. Isso era esperado, pois Det é parte do FNFE. Ou seja, para adicioná-lo no watch você teria que ter adicionado FNFE.Det. De qualquer forma o nosso vilão está no seguinte:

 

FNFE = nil

 

Isso quer dizer que o objeto FNFE não está acessível na memória. Então quando o componente tenta acessá-lo para buscar o valor do contador (linha apresentada), será gerado um erro de violação de acesso, ou Access Violation (AV). Pois, dizendo a grosso modo, você está tentando acessar algo que não existe na memória.

 

Como essa unit parece ser do seu programa, revise o código, o motivo de você estar acessando aí o objeto FNFE e o porquê ele não estar criado.

[]'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.
  • Membros Pro
Postado

Elton,

 

essa unit é a ACBrNFeDANFERaveDM, ou seja, do componente de impressão

o erro é apresentado logo após clicar OK na tela do Rave

ainda é possível ver a mensagem de "imprimindo pagina 1", muito rapidamente

por favor, da uma lida no post inicial desta questão

 

Otavio Benini

  • Consultores
Postado

Olá Otávio,

 

  Desculpe-me. Você tem razão. Essa unit é do ACBr... Ainda assim os objetivos para encontrar o erro continuam os mesmos.

 

  Você deve ter percebido que esse DataModule possui uma propriedade NFe. O que essa propriedade recebe é passado para o objeto FNFE. Em algum certo momento esse objeto precisa ser criado e preenchido e, pelo que eu vi, isso acontece fora desta unit.

  Em que momento é preenchido essa propriedade? Você precisa encontrar porque o erro é justamente causado quando a propriedade não está sendo preenchida.

[]'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.
  • Membros Pro
Postado

Elton,

 

vou explicar de outro modo prá vc entender:

 

inicio a rotina informando para o componente ACBrNFe algumas informações como ambiente, certificado, etc;

 

depois "preencho" a NFe usando ACBrNFe1.NotasFiscais.Add.NFe

 

depois usando ACBrNFe1.Enviar(NumNFe,true) o xml é criado, entregue, protocolado, tudo direitinho e é essa rotina quem manda imprimir (true), eu não faço nada além

 

ou seja, tudo acontece dentro do componente;

 

se pego o xml gerado, e protocolado, eu consigo impressão usando outro programa que também usa o componente

 

a questão está, portanto, dentro desse modelo, lógico, de usar um único form com um único componente da Nfe e um único componente de impressão sendo chamados por outros forms; tudo está correto, exceto a impressão;

 

mesmo usando só a impressão, quando entrego o xml para o componente (LoadFromFile) e depois uso ACBrNFe.NotasFiscais.Imprimir o erro é o mesmo, ou seja, a rotina de impressão do componente é quem está proporcionando ocasião para o AV

 

Otavio Benini

  • Consultores
Postado

Olá Otávio,

 

   Eu entendi, e quero deixar claro que eu quero ajudar você. Mas veja bem, eu não tenho o código fonte dando problema. Você tem. Então temos duas opções:

 

1) você cria um programa de exemplo da forma mais simples possível que causa o AV e me envia o código fonte para que eu possa reproduzir na minha máquina.

2) Eu vou lhe orientando onde procurar e você mesmo vai fazendo o debug do código procurando onde está o problema.

 

   Estou tentando seguir o segundo método, pois acho que assim você pode ganhar mais em conhecimento sobre debug e sobre o componente. Desta forma, futuramente você próprio poderia até mesmo corrigir outros problemas. Quem sabe até adicionar coisas que seriam benéficas não só pra você mas pra muitos outros.

   Entretanto, se quiser usar o primeiro método, fique a vontade de enviar um programa simples que reproduz o erro. Ou explanar como reproduzir o erro com o Exemplo do NFe

[]'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.
  • 4 semanas depois ...
  • Membros Pro
  • Solution
Postado

Elton,

 

agradeço seu empenho, mas o prbl era outro

achei outras coisas estranhas e depois de zerar meu pc e re-instalar tudo o prbl não mais ocorreu

obrigado

 

Otavio Benini

  • Consultores
Postado

Olá Otavio,

 

Que bom que consegiu resolver.

Obrigado pelo seu retorno.

Bom trabalho por aí. :)

[]'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.
×
×
  • 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.