XML NFE - NOTAS ENTRADA

SARAGIOTTO 06/10/2011 21:04:47
#386151
AMIGOS, ESTOU DESENVOLVENDO UMA FUNCAO PARA IMPORTAR XML PARA MEU SISTEMA
SO NAO ESTOU CONSEGUINDO CAPTURAR DUAS INFORMACOES:

1) A CHAVE DA NFE ( ID DA CHAVE)

2) NAO SEI COMO CRIAR O (FOR EACH) DOS PRODUTOS CONTIDOS NO XML, OU SEJA LER AS INFORMACOES DE CADA UM

SE PUDEREM ME AJUDAR AGRADECO
RODRIGOFERRO 07/10/2011 08:38:14
#386164
Amigão bom dia ! por que estas a gritar conosco ?
nos precisamos saber porque nao esta conseguindo e o que ja tens pronto, para entao podermos te ajudar melhor !

Abraços
RONEBRITO 07/10/2011 14:48:00
#386242
Private m_objDOMNFe As DOMDocument
Dim objNFeRoot As IXMLDOMElement
Dim objNFe2 As IXMLDOMElement

Set m_objDOMNFe = New DOMDocument

m_objDOMNFe.resolveExternals = True

m_objDOMNFe.validateOnParse = True

[ô]carrega o XML no documento DOM
m_objDOMNFe.async = False
Call m_objDOMNFe.Load(NOME_DO_XML)

[ô]verifica se a carga do XML foi feita com sucesso
If m_objDOMNFe.parseError.reason <> [Ô][Ô] Then
MsgBox m_objDOMNFe.parseError.reason
Exit Sub
End If

Set objNFeRoot = m_objDOMNFe.documentElement

If objNFeRoot.childNodes.length = 1 Then
MsgBox [Ô]Arquivo: [Ô] & NOME_DO_XML& [Ô] Sem Protocolo![Ô], vbCritical, [Ô]Atenção![Ô]
GoTo Finaliza
Else
If objNFeRoot.childNodes.Item(1).nodeName = [Ô]protNFe[Ô] Then

ElseIf objNFeRoot.childNodes.Item(1).nodeName = [Ô]retCancNFe[Ô] Then
MsgBox [Ô]Arquivo: [Ô] & pNomeArquivo & [Ô] de Cancelamento![Ô], vbCritical, [Ô]Atenção![Ô]
GoTo Finaliza
Else
MsgBox objNFeRoot.childNodes.Item(1).nodeName
End If
End If


NOME_DO_XML = caminho do seu xml

E por ai vai...
NIKYTS 07/10/2011 15:06:18
#386248
Resposta escolhida
Vê se te ajuda, este é um exemplo que utilizei para carregar o idioma de um formulário através de um ficheiro xml...

      Dim File As Integer: File = FreeFile
Dim content As String
Open App.Path & [Ô]OTeuFicheiro.XML[Ô] For Input As #File
content = input(LOF(File), #File)

Dim xml As MSXML2.DOMDocument: Set xml = New MSXML2.DOMDocument

If xml.loadXML(content) Then
Dim Sobre_nodeList As IXMLDOMNode: Set Sobre_nodeList = xml.selectSingleNode([Ô]/Linguas/Form_Sobre[Ô])

Module_Lingua.Sobre_Label_Ok = Sobre_nodeList.selectSingleNode([Ô]Label_Ok[Ô]).Text
Module_Lingua.Sobre_Label_Versao = Sobre_nodeList.selectSingleNode([Ô]Label_Versao[Ô]).Text
Module_Lingua.Sobre_Label_Desenvolvido = Sobre_nodeList.selectSingleNode([Ô]Label_Desenvolvido[Ô]).Text
Module_Lingua.Sobre_Label_Contacto = Sobre_nodeList.selectSingleNode([Ô]Label_Contacto[Ô]).Text
Module_Lingua.Sobre_Label_Titulo = Sobre_nodeList.selectSingleNode([Ô]Label_Titulo[Ô]).Text
Module_Lingua.Sobre_Botao_Fechar = Sobre_nodeList.selectSingleNode([Ô]Botao_Fechar[Ô]).Text

Label_Ok.Caption = Module_Lingua.Sobre_Label_Ok
Label_Titulo.Caption = Module_Lingua.Sobre_Label_Titulo
Botao_Fechar.ToolTipText = Module_Lingua.Sobre_Botao_Fechar
End If



Num modulo:
  Global Sobre_Label_Titulo As String
Global Sobre_Botao_Fechar As String
Global Sobre_Label_Ok As String
Global Sobre_Label_Versao As String
Global Sobre_Label_Desenvolvido As String
Global Sobre_Label_Contacto As String
SARAGIOTTO 07/10/2011 17:52:32
#386270
otimas dicas, agora so preciso saber como capturas os campos DET dos produtos
tentei usar assim:
If objNFeRoot.childNodes.Item(1).nodeName = [Ô]det[Ô] Then
MsgBox objNFeRoot.childNodes.Item(1).text
End If

mas nao deu certo

como que eu faço para saber qtos produtos tem no xml e ler os campos descriçao, quantidade e valor?
SARAGIOTTO 07/10/2011 21:38:04
#386287
HELP MEEEEEEEE
Tópico encerrado , respostas não são mais permitidas