LER XML DE NOTA FISCAL DE ENTRADA ?
ALGUEM JÃ TEVE ESTE PROBLEMA?
Se alguem pude me ajudar agradeço;
Obrigado
Se alguem pude me ajudar agradeço;
Obrigado
Qual é o [Ô]problema[Ô] que vc está encontrando em fazer a leitura do xml?
Como fazer pegando os dados de uma nota fiscal eletronica.
Recomendo usar esse componente FREE: ChilkatXML
DOWNLOAD do componente:
http://www.chilkatsoft.com/download/XmlActiveX.msi
Tutorial
http://www.example-code.com/vb/default.asp
http://www.example-code.com/vb/xml_getContent.asp
Bem fácil de usar, o site possui vários exemplos.
DOWNLOAD do componente:
http://www.chilkatsoft.com/download/XmlActiveX.msi
Tutorial
http://www.example-code.com/vb/default.asp
http://www.example-code.com/vb/xml_getContent.asp
Bem fácil de usar, o site possui vários exemplos.
Bom dia, cara, ontem passei este exemplo para um colega aqui no VBMANIA....eu havia criado uma DLL em VB.NET pra fazer esse processo de IMPORTAR NFE para o sistema., porem como sou programador em VB6 sinto que as vezes ficamos um pouco na mão com relação a alguns erros que vemos em algumas DLL que criamos, como não sou um bom programador em .NET utilizo isso para ler as TAG[ô]s dos XML[ô]s , e confesso
... FICOU muito mais rapido o processo de importação da NFe e tb menos erros aparecem....
espero ter ajudado...
Public Function RetornaTagXML(strCaminhoXML As String, TagMae As String, SubTag As String) As String
On Error Resume Next
RetornaTagXML = [Ô][Ô]
Set XML = New DOMDocument
XML.async = False
If XML.Load(strCaminhoXML) Then
[ô] *** Tentar pegar o strCampoXML
Set objNodeList = XML.getElementsByTagName(TagMae & [Ô]//[Ô] & SubTag)
Set objNode = objNodeList.nextNode
Dim sLeitura As String
sLeitura = objNode.Text
If Len(Trim(sLeitura)) > 0 Then [ô]CONSEGUI LER O XML NODE
RetornaTagXML = sLeitura
End If
Else
MsgBox [Ô]Não foi possÃvel abrir o arquivo XML da NFe especificada para Leitura.[Ô], vbCritical, [Ô]Erro.[Ô]
End If
End Function
[ô]EXEMPLO DE USO
txtNF.Text = Val(RetornaTagXML((Trim(sCaminhoXML)), [Ô]ide[Ô], [Ô]cNF[Ô])) [ô]RETORNA O NÚMERO DA NF
OBS : este exemplo le as TAG[ô]s dos arquivos XML que estão em algum caminho em sua máquina.....
... FICOU muito mais rapido o processo de importação da NFe e tb menos erros aparecem....
espero ter ajudado...
Public Function RetornaTagXML(strCaminhoXML As String, TagMae As String, SubTag As String) As String
On Error Resume Next
RetornaTagXML = [Ô][Ô]
Set XML = New DOMDocument
XML.async = False
If XML.Load(strCaminhoXML) Then
[ô] *** Tentar pegar o strCampoXML
Set objNodeList = XML.getElementsByTagName(TagMae & [Ô]//[Ô] & SubTag)
Set objNode = objNodeList.nextNode
Dim sLeitura As String
sLeitura = objNode.Text
If Len(Trim(sLeitura)) > 0 Then [ô]CONSEGUI LER O XML NODE
RetornaTagXML = sLeitura
End If
Else
MsgBox [Ô]Não foi possÃvel abrir o arquivo XML da NFe especificada para Leitura.[Ô], vbCritical, [Ô]Erro.[Ô]
End If
End Function
[ô]EXEMPLO DE USO
txtNF.Text = Val(RetornaTagXML((Trim(sCaminhoXML)), [Ô]ide[Ô], [Ô]cNF[Ô])) [ô]RETORNA O NÚMERO DA NF
OBS : este exemplo le as TAG[ô]s dos arquivos XML que estão em algum caminho em sua máquina.....
ACORIZAL
Nessa sua rotina tenho que pedir cada tag separada?
Vou fazer uns testes;
Obrigado
Nessa sua rotina tenho que pedir cada tag separada?
Vou fazer uns testes;
Obrigado
Citação::
ACORIZAL
Nessa sua rotina tenho que pedir cada tag separada?
Vou fazer uns testes;
Obrigado
Sim,,,, mais é uma forma de se obter contreole sobre o que solicita...
eu tinha feito uma DLL em .NET.....
que no final ela fazia ao contrário disso somente um LOOP dentro do XML porem não se tinha muito controle sobre o que ocorria na função , digo isto porque se por ventura uma tag que seja não esdtivesse no lugar a DLL retornava um erro, e interrompia o sucesso da rotina...vou te passar um exemplo de como trabalhar com os loops que tera de dar dentro do XML no caso de DUPLICATAS, PRODUTOS, pois nestes lugares vc tera de rodar e rodar até chegar no fim do que deseja....
Vou colocar meia completa como uso aqui... mais faça as alterações que precisar......OK...
Dim oNode As IXMLDOMNode
Dim oChild3 As IXMLDOMNode
Dim oChild2 As IXMLDOMNode
Dim oChild As IXMLDOMElement
Dim oChild4 As IXMLDOMNode
Dim sContaParcelas As String[/left]
For Each oNode In XML.childNodes [ô] XML - nfeProc
For Each oChild1 In oNode.childNodes
If Trim(txtNFe.Text) = [Ô][Ô] Then
If UCase(oChild1.nodeName) = [Ô]INFPROT[Ô] Or UCase(oChild1.nodeName) = [Ô]PROTNFE[Ô] Then
For Each oChild3 In oChild1.childNodes
If UCase(oChild3.nodeName) = [Ô]CHNFE[Ô] Then
txtNFe.Text = oChild3.Text
End If
Next
End If
End If
If UCase(oChild1.nodeName) = [Ô]INFNFE[Ô] Then
For Each oChild2 In oChild1.childNodes
If UCase(oChild3.nodeName) = [Ô]COBR[Ô] Then
If UCase(oChild2.nodeName) = [Ô]DUP[Ô] Then
For Each oChild In oChild3.childNodes
If UCase(oChild.nodeName) = [Ô]DUP[Ô] Then
sContaParcelas = Val(sContaParcelas) + 1
For Each oChild4 In oChild.childNodes
If oChild4.nodeName = [Ô]nDup[Ô] Then
Grid1.TextMatrix(sContaParcelas, 1) = Trim(txtNF) & [Ô]-[Ô] & Format(sContaParcelas, [Ô]00[Ô])
End If
If oChild4.nodeName = [Ô]dVenc[Ô] Then
sAjeitaDT = oChild4.Text
sAjeitaDT = Right(sAjeitaDT, 2) & [Ô]/[Ô] & Mid(sAjeitaDT, 6, 2) & [Ô]/[Ô] & Left(sAjeitaDT, 4)
Grid1.TextMatrix(sContaParcelas, 3) = sAjeitaDT
Grid1.TextMatrix(sContaParcelas, 2) = DateDiff([Ô]d[Ô], mskDEmis, Grid1.TextMatrix(sContaParcelas, 3))
End If
If oChild4.nodeName = [Ô]vDup[Ô] Then
sAjeitaDT = oChild4.Text
sAjeitaDT = Format(Replace(sAjeitaDT, [Ô].[Ô], [Ô],[Ô]), [Ô]Standard[Ô])
Grid1.TextMatrix(sContaParcelas, 4) = sAjeitaDT
End If
Next
End If
Next
End If
End If
Next
Else
For Each oChild2 In oChild1.childNodes
If Trim(txtNFe.Text) = [Ô][Ô] Then
If UCase(oChild1.nodeName) = [Ô]INFPROT[Ô] Or UCase(oChild1.nodeName) = [Ô]PROTNFE[Ô] Then
For Each oChild3 In oChild2.childNodes
If UCase(oChild3.nodeName) = [Ô]CHNFE[Ô] Then
txtNFe.Text = oChild3.Text
End If
Next
End If
End If
If UCase(oChild2.nodeName) = [Ô]INFNFE[Ô] Then
For Each oChild3 In oChild2.childNodes
If UCase(oChild3.nodeName) = [Ô]COBR[Ô] Then
For Each oChild In oChild3.childNodes
If UCase(oChild.nodeName) = [Ô]DUP[Ô] Then
sContaParcelas = Val(sContaParcelas) + 1
For Each oChild4 In oChild.childNodes
If oChild4.nodeName = [Ô]nDup[Ô] Then
Grid1.TextMatrix(sContaParcelas, 1) = Trim(txtNF) & [Ô]-[Ô] & Format(sContaParcelas, [Ô]00[Ô])
End If
If oChild4.nodeName = [Ô]dVenc[Ô] Then
sAjeitaDT = oChild4.Text
sAjeitaDT = Right(sAjeitaDT, 2) & [Ô]/[Ô] & Mid(sAjeitaDT, 6, 2) & [Ô]/[Ô] & Left(sAjeitaDT, 4)
Grid1.TextMatrix(sContaParcelas, 3) = sAjeitaDT
Grid1.TextMatrix(sContaParcelas, 2) = DateDiff([Ô]d[Ô], mskDEmis, Grid1.TextMatrix(sContaParcelas, 3))
End If
If oChild4.nodeName = [Ô]vDup[Ô] Then
sAjeitaDT = oChild4.Text
sAjeitaDT = Format(Replace(sAjeitaDT, [Ô].[Ô], [Ô],[Ô]), [Ô]Standard[Ô])
Grid1.TextMatrix(sContaParcelas, 4) = sAjeitaDT
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
Tópico encerrado , respostas não são mais permitidas