MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Não importar XML Duplicado

    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 262
    Registrado : 08/09/2012

    Não importar XML Duplicado Empty Não importar XML Duplicado

    Mensagem  Maicon 19/9/2022, 03:13

    Boa noite a todos

    Tenho exemplo excelente para importação de arquivos XML do Fabio Paes
    https://www.maximoaccess.com/t29286-importar-todas-as-nfe-nota-fiscal-eletronica-xml-de-uma-pasta-versao-xml-1-10-2-00-e-3-10

    Estou tentando incluir uma rotina dentro deste código que verifique na tabela : tbCompras se o arquivo XML , já foi importado se sim passar para o próximo.
    Sei que deveria criar a rotina no início do código como está logo abaixo, porém não estou conseguindo proceder esta alteração sem que trave o código.
    .Preciso que fazer o teste para  variável ch se for = 0 siga em frente se não pular para o próximo.
    Se alguém puder me ajudar agradeço

    Código:
    Do While NomeArq <> ""
    doc.Load (LocalXml & NomeArq) 'Pega a Pasta e o Nome do primeiro arquivo....'Verifica se o Arquivo foi aberto corretamente e se possui chave. Se possuir importa, se nao Pula pra o Proximo!
    If doc.validate.errorCode = -1072897500 And (doc.getElementsByTagName("chNFe").length) Then
    Set xDet = doc.getElementsByTagName("det")

    Código:
    Set rsFor = DB.OpenRecordset("tbCompras")
    ch = Nz(DLookup("ChaveNF", "tbCompras", "ChaveNF = '" & doc.getElementsByTagName("chNFe")(0).Text & "'"), 0)
    rsFor.Close
    Set rsFor = Nothing
    MsgBox (ch)


    .................................................................................
    "O talento vence jogos, mas só o trabalho em equipe ganha campeonatos."
    Michael Jordan

    Bons Estudos.
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 262
    Registrado : 08/09/2012

    Não importar XML Duplicado Empty Solução

    Mensagem  Maicon 21/9/2022, 01:07

    Fiz esta alteração e já não importa mais duplicado.
    Desta forma se acessar a mesma pasta mais de uma vez o não gerará duplicidade no banco.
    Mais uma vez agradeço o excelente exemplo do nosso colega Fabio Paes.

    Quero implementar uma rotina para mover o arquivo da pasta ou renomear após a importação.
    Talvez também seja interessante que fazer esta varredura antes da importação do XML.
    Creio que seja mais rápido varrer uma pasta e verificar todos os arquivos que já foram importados do que no meio da importação realizar a verificação.
     
    Código:
    'Buscará todos os arquivos com extensao .xml da pasta selecionada
    Do While NomeArq <> ""
    doc.Load (LocalXml & NomeArq) 'Pega a Pasta e o Nome do primeiro arquivo....
    'Verifica na tabela compras se o XML ja foi importado se nao foi atribui o valor de 0 para y 'Incluido Maicon
    Set rsFor = DB.OpenRecordset("tbCompras")
    y = Nz(DLookup("ChaveNF", "tbCompras", "ChaveNF = '" & doc.getElementsByTagName("chNFe")(0).Text & "'"), 0)
    rsFor.Close
    Set rsFor = Nothing
    'Verifica se o Arquivo foi aberto corretamente e se possui chave Se possuir importa, se nao Pula pra o Proximo!
    'Alteracao agora verifica se a chave existe no banco se existir pula para o proximo arquivo
    If doc.validate.errorCode = -1072897500 And (doc.getElementsByTagName("chNFe").length) And y <= 0 Then
    Set xDet = doc.getElementsByTagName("det")


    .................................................................................
    "O talento vence jogos, mas só o trabalho em equipe ganha campeonatos."
    Michael Jordan

    Bons Estudos.

      Data/hora atual: 6/10/2022, 07:51