LER XML NF-E NO VB6
Estou querendo importar os itens lançando no arquivo do XML da NF-e para dentro do meus listiview do VB6
Preciso escolher apenas o Nod desejado pra importar os itens.
Desde já agradeço
Private Sub Monta_cab_prod()
Dim Soma As Integer, Item As String, tag As String, tag2 As String, fArquivo As String
fArquivo : C: este
docNFe.Load fArquivo
MsGrid1.Clear
MsGrid1.FormatString = [Ô]Auto numerador|Codigo do Produto |Descrição do Produto |CFOP |UM |Qtd |CST |Valor Unitario |Valor Total |%ICMS |%IPI [Ô]
MsGrid1.Rows = 2
Soma = 1
Item = VerificaItem([Ô]<det nItem=[Ô][Ô]1[Ô][Ô]>[Ô], [Ô]</det>[Ô], docNFe.xml)
Do While Item <> [Ô][Ô]
tag = [Ô]<det nItem=[Ô][Ô][Ô] & Soma & [Ô][Ô][Ô]>[Ô]
tag2 = [Ô]<det nItem=[Ô][Ô][Ô] & Soma + 1 & [Ô][Ô][Ô]>[Ô]
Item = VerificaItem(tag, tag2, docNFe.xml)
If Soma > 1 And Trim(Item) = [Ô][Ô] Then
Exit Do
End If
MsGrid1.TextMatrix(Soma, 0) = Soma
MsGrid1.TextMatrix(Soma, 1) = VerificaConteudo([Ô]<cProd>[Ô], [Ô]</cProd>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 2) = VerificaConteudo([Ô]<xProd>[Ô], [Ô]</xProd>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 3) = VerificaConteudo([Ô]<CFOP>[Ô], [Ô]</CFOP>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 4) = VerificaConteudo([Ô]<uCom>[Ô], [Ô]</uCom>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 5) = VerificaConteudo([Ô]<qCom>[Ô], [Ô]</qCom>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 6) = VerificaConteudo([Ô]<CST>[Ô], [Ô]</CST>[Ô], Item, [Ô]<ICMS>[Ô], [Ô]</ICMS>[Ô])
MsGrid1.TextMatrix(Soma, 7) = VerificaConteudo([Ô]<vUnCom>[Ô], [Ô]</vUnCom>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 8) = VerificaConteudo([Ô]<vProd>[Ô], [Ô]</vProd>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 9) = VerificaConteudo([Ô]<pICMS>[Ô], [Ô]</pICMS>[Ô], Item, [Ô]<ICMS>[Ô], [Ô]</ICMS>[Ô], True)
MsGrid1.TextMatrix(Soma, 10) = VerificaConteudo([Ô]<pIPI>[Ô], [Ô]</pIPI>[Ô], Item, [Ô]<IPI>[Ô], [Ô]</IPI>[Ô], True)
Soma = Soma + 1
MsGrid1.AddItem (Soma)
Loop
End Sub
Private Function VerificaItem(ByVal sTagPaiIni As String, ByVal sTagPaiFim As String, ByVal strResp As String) As String
On Error Resume Next
Dim lPos1 As Long, lPos2 As Long, lPos3 As Long, lPos4 As Long
VerificaItem = [Ô][Ô]
[ô]verificando valor do cStat resultante do web service a partir do final do código XML
lPos1 = InStrRev(strResp, sTagPaiIni) + Len(sTagPaiIni)
lPos2 = InStrRev(strResp, sTagPaiFim)
If lPos1 > Len(sTagPaiIni) And lPos2 > lPos1 Then
strResp = Mid(strResp, lPos1, lPos2 - lPos1)
VerificaItem = strResp
Exit Function
End If
lPos1 = InStrRev(strResp, sTagPaiIni) + Len(sTagPaiIni)
lPos2 = InStrRev(strResp, [Ô]</det>[Ô])
If lPos1 > Len(sTagPaiIni) And lPos2 > lPos1 Then
strResp = Mid(strResp, lPos1, lPos2 - lPos1)
VerificaItem = strResp
Exit Function
End If
End Function
Tenho uma tabela com os mesmos nomes do arquivo xml da NFe
Citação::
olha como eu fiz:
Private Sub Monta_cab_prod()
Dim Soma As Integer, Item As String, tag As String, tag2 As String, fArquivo As String
fArquivo : C: este
docNFe.Load fArquivo
MsGrid1.Clear
MsGrid1.FormatString = [Ô]Auto numerador|Codigo do Produto |Descrição do Produto |CFOP |UM |Qtd |CST |Valor Unitario |Valor Total |%ICMS |%IPI [Ô]
MsGrid1.Rows = 2
Soma = 1
Item = VerificaItem([Ô]<det nItem=[Ô][Ô]1[Ô][Ô]>[Ô], [Ô]</det>[Ô], docNFe.xml)
Do While Item <> [Ô][Ô]
tag = [Ô]<det nItem=[Ô][Ô][Ô] & Soma & [Ô][Ô][Ô]>[Ô]
tag2 = [Ô]<det nItem=[Ô][Ô][Ô] & Soma + 1 & [Ô][Ô][Ô]>[Ô]
Item = VerificaItem(tag, tag2, docNFe.xml)
If Soma > 1 And Trim(Item) = [Ô][Ô] Then
Exit Do
End If
MsGrid1.TextMatrix(Soma, 0) = Soma
MsGrid1.TextMatrix(Soma, 1) = VerificaConteudo([Ô]<cProd>[Ô], [Ô]</cProd>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 2) = VerificaConteudo([Ô]<xProd>[Ô], [Ô]</xProd>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 3) = VerificaConteudo([Ô]<CFOP>[Ô], [Ô]</CFOP>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 4) = VerificaConteudo([Ô]<uCom>[Ô], [Ô]</uCom>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 5) = VerificaConteudo([Ô]<qCom>[Ô], [Ô]</qCom>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 6) = VerificaConteudo([Ô]<CST>[Ô], [Ô]</CST>[Ô], Item, [Ô]<ICMS>[Ô], [Ô]</ICMS>[Ô])
MsGrid1.TextMatrix(Soma, 7) = VerificaConteudo([Ô]<vUnCom>[Ô], [Ô]</vUnCom>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 8) = VerificaConteudo([Ô]<vProd>[Ô], [Ô]</vProd>[Ô], Item, [Ô]<prod>[Ô], [Ô]</prod>[Ô])
MsGrid1.TextMatrix(Soma, 9) = VerificaConteudo([Ô]<pICMS>[Ô], [Ô]</pICMS>[Ô], Item, [Ô]<ICMS>[Ô], [Ô]</ICMS>[Ô], True)
MsGrid1.TextMatrix(Soma, 10) = VerificaConteudo([Ô]<pIPI>[Ô], [Ô]</pIPI>[Ô], Item, [Ô]<IPI>[Ô], [Ô]</IPI>[Ô], True)
Soma = Soma + 1
MsGrid1.AddItem (Soma)
Loop
End Sub
Private Function VerificaItem(ByVal sTagPaiIni As String, ByVal sTagPaiFim As String, ByVal strResp As String) As String
On Error Resume Next
Dim lPos1 As Long, lPos2 As Long, lPos3 As Long, lPos4 As Long
VerificaItem = [Ô][Ô]
[ô]verificando valor do cStat resultante do web service a partir do final do código XML
lPos1 = InStrRev(strResp, sTagPaiIni) + Len(sTagPaiIni)
lPos2 = InStrRev(strResp, sTagPaiFim)
If lPos1 > Len(sTagPaiIni) And lPos2 > lPos1 Then
strResp = Mid(strResp, lPos1, lPos2 - lPos1)
VerificaItem = strResp
Exit Function
End If
lPos1 = InStrRev(strResp, sTagPaiIni) + Len(sTagPaiIni)
lPos2 = InStrRev(strResp, [Ô]</det>[Ô])
If lPos1 > Len(sTagPaiIni) And lPos2 > lPos1 Then
strResp = Mid(strResp, lPos1, lPos2 - lPos1)
VerificaItem = strResp
Exit Function
End If
End Function
*****************************************************************************
Rapaz, teria como postar a função [txt-color=#e80000]VerificaConteudo[/txt-color] pois não consegui finalizar o codigo
sem esta parte....
dá uma maozinha ai fera....
Valeu.
Tenho o esquema montado e funcionando ele importa para um BD Access, se alguem quizer entre em contato pelo email mito@erbs.com.br
Sds,
Mito