LER XML DE NOTA FISCAL DE ENTRADA ?

PASCOAL 25/07/2011 13:46:11
#379917
ALGUEM JÁ TEVE ESTE PROBLEMA?

Se alguem pude me ajudar agradeço;

Obrigado
MSMJUDAS 25/07/2011 14:29:05
#379918
Qual é o [Ô]problema[Ô] que vc está encontrando em fazer a leitura do xml?
PASCOAL 25/07/2011 14:41:03
#379920
Como fazer pegando os dados de uma nota fiscal eletronica.

MSMJUDAS 25/07/2011 15:34:15
#379927
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.
ELYM 27/07/2011 08:51:07
#380084
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.....
PASCOAL 27/07/2011 15:11:56
#380125
ACORIZAL
Nessa sua rotina tenho que pedir cada tag separada?

Vou fazer uns testes;

Obrigado
ELYM 28/07/2011 08:38:36
#380169
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