USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  VBA - Leitura de um arquivo XML e gravação no BD
WRUSSO
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 07/01/2008 13:58 hs         
Olá, caros colegas,
 
Estou trabalhando em um projeto em Access utilizando VBA, que utiliza DOM para ler todas as informações de um arquixo XML e gravá-las em um Banco de Dados.
Preciso ler todos os nós filhos de cada elemento, e armazená-lo no BD na tabela correspondente. 
 
Bem, a questão é: estou utilizando a estrutura For Each ... Next para navegar pelo arquivo e obter os dados... mas estou utilizando vários For Each aninhados, e no final do For principal, as variáveis lidas nos Fors "internos" estão vazias... Estou tentando organizar este laço de repetição para inserir os dados na tabela, e gostaria de criar uma classe de dados (c/ recordset DAO) para organizar isto... qualquer sugestão será muito bem vinda... 
 
Abraços a todos, e muito obrigado!
William
 
Segue abaixo uma pequena parte do código:
 
Dim arquivoCaminho As String
Dim oXmlDoc As MSXML2.DOMDocument
Dim omensagemTISS As MSXML2.IXMLDOMElement
 
' Declaração de variáveis da Guia SP_SADT
Dim oidentificacaoGuiaSADTSP As MSXML2.IXMLDOMElement
    Dim oregistroANS, odataEmissaoGuia, onumeroGuiaPrestador, onumeroGuiaOperadora As MSXML2.IXMLDOMElement
Dim odadosAutorizacao As MSXML2.IXMLDOMElement
    Dim odataAutorizacao, osenhaAutorizacao, ovalidadeSenha As MSXML2.IXMLDOMElement
Dim odadosBeneficiario As MSXML2.IXMLDOMElement
    Dim onumeroCarteira, onomeBeneficiario, onomePlano, ovalidadeCarteira, onumeroCNS, oidentificadorBeneficiario As MSXML2.IXMLDOMElement
Dim onumeroGuiaPrincipal, odadosSolicitante, oprestadorExecutante, oindicacaoClinica, ocaraterAtendimento, odataHoraAtendimento, odiagnosticoGuia, otipoSaida, otipoAtendimento, oProcedimentosRealizados, ooutrasDespesas, oOPMUtilizada, ovalorTotal, oobservacao As MSXML2.IXMLDOMElement
   'Complex Type: ct_beneficiario
        For Each odadosBeneficiario In oguiaSP_SADT.childNodes
            If odadosBeneficiario.nodeName = "dadosBeneficiario" Then
                For Each onumeroCarteira In odadosBeneficiario.childNodes
                    If (onumeroCarteira.nodeName = "numeroCarteira") Or (onumeroCarteira.nodeName = "ans:numeroCarteira") Then
                    'Gravação no BD...
                    End if
                Next
                               
                For Each onomeBeneficiario In odadosBeneficiario.childNodes
                    If (onomeBeneficiario.nodeName = "nomeBeneficiario") Or (onomeBeneficiario.nodeName = "ans:nomeBeneficiario") Then
                    'Gravação no BD...
                    End If
                Next
               
                For Each onomePlano In odadosBeneficiario.childNodes
                    If (onomePlano.nodeName = "nomePlano") Or (onomePlano.nodeName = "ans:nomePlano") Then
                    'Gravação no BD...
                    End If
                Next
               
                For Each ovalidadeCarteira In odadosBeneficiario.childNodes
                    If (ovalidadeCarteira.nodeName = "validadeCarteira") Or (ovalidadeCarteira.nodeName = "ans:validadeCarteira") Then
                    'Gravação no BD...
                    End If
                Next
               
                For Each onumeroCNS In odadosBeneficiario.childNodes
                    If (onumeroCNS.nodeName = "numeroCNS") Or (onumeroCNS.nodeName = "ans:numeroCNS") Then
                    'Gravação no BD...
                    End If
                Next
                For Each oidentificadorBeneficiario In odadosBeneficiario.childNodes
                    If (oidentificadorBeneficiario.nodeName = "identificadorBeneficiario") Or (oidentificadorBeneficiario.nodeName = "ans:identificadorBeneficiario") Then
                    'Gravação no BD...
                    End If
                Next
           
            End If
                          
              'Aqui será inserida a rotina de gravação na tabela CT_BENEFICIARIO para os dados lidos acima, mas eu gostaria de organizar o loop para efetuar a inserção na tabela da forma correta...
              'DoCmd.RunSQL "insert into ct_beneficiario (numeroCarteira, nomeBeneficiario, nomePlano...) values ('" & onumeroCarteira.nodeTypedValue & "',...)" 
             'As variáveis na msgbox abaixo estão vazias...
              MsgBox (onumeroCarteira & onomeBeneficiario)
        Next
   
Ivo
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 07/01/2008 15:51 hs         
Olá vRusso tudo bom cara
 
brother tenta isso
 
dim rs as adodb.recordset
 
set rs = new adodb.recordset
 
rs.open "nomedoArquivoxml.xml",con
 
do while not rs.eof
 
 
    rs.movenext
loop
 
brother isso funciona vai por mim rsrs
abraços
 
   
WRUSSO
RIO DE JANEIRO
RJ - BRASIL
ENUNCIADA !
Postada em 08/01/2008 08:55 hs         
Olá, Ivo!
Muito obrigado pela ajuda, este método é muito mais simples! rsrs
Assim só me preocupo com a associação dos dados lidos aos campos correspondentes nas tabelas, certo?
 
Abraço!
   
WRUSSO
não registrado
ENUNCIADA !
Postada em 10/01/2008 12:06 hs   
Olá, Ivo!
 
Tentei utilizar de várias formas o código que vcê postou, mas não consegui...
Será que está faltando alguma coisa?
 
Desde já, muito obrigado!!
Abraços!
   
Ivo
não registrado
ENUNCIADA !
Postada em 02/09/2008 17:17 hs   
Vai te cata, do 1 código de graça e os cara ñ conseguem nem usa! Q porra!
   
Alexandre Patos
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
ENUNCIADA !
Postada em 02/09/2008 17:28 hs            
que isso gente, o pessoal ta estressado mesmo, credo
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página