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


3 participantes

    Impedir importação de XML duplicado.

    avatar
    WEBE
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 30
    Registrado : 31/01/2011

    Impedir importação de XML duplicado. Empty Impedir importação de XML duplicado.

    Mensagem  WEBE 11/2/2021, 18:08

    Opa,
    Estou usando o maravilhoso modelo do Fabio Paes, que importa XML para tabelas do access.

    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#203955

    Neste exemplo alguém poderia ensinar como impedir que o mesmo xml, fosse inserido duas vezes na tabela?

    Precisaria verificar a chave (chNFe). Caso ela já tivesse sido importada, o sistema informaria e não deixaria continuar.

    Todas os topicos aqui pesquisados sobre registro duplicado, ensina, além de alterar o campo da tabela para (INDEXADO, Duplicação não autorizada), ensina usar o nslookup e dcount, porém isso compara dados do input em um formulário. E não é esse o caso no exemplo, onde a importação é feita direta no vba sem uso de forms.

    Ainda não sei como fazer isso. Poderiam me dar um auxilio?

    Grato.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  Alvaro Teixeira 11/2/2021, 23:54

    Olá webe,
    Será faze uma verificação antes da instrução da importação.
    Veja se ajuda
    https://www.maximoaccess.com/t3999-resolvidovalores-duplicados

    Abraço

    WEBE gosta desta mensagem

    avatar
    WEBE
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 30
    Registrado : 31/01/2011

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  WEBE 12/2/2021, 11:38

    Olá,
    Obrigado desde já...

    Então, como eu disse, o exemplo que me mostrou também usa um formulário para fazer a validação (DLookup), e a minha dúvida é no caso da importação do XML NFE que não passa por digitação nenhuma. O arquivo é importado diretamente para tabela...

    Valeu..
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  Alvaro Teixeira 12/2/2021, 13:28

    Ola,

    Nao estive a ver o projeto, mas se esta a imporar a (chNFe) , em algum lado deve estar a (chNFe)
    Talvez seja no proprio nome do ficheiro ou na estrutura do mesmo.

    Se comprendi bem a questão, antes do código da importação tem que ler a (chNFe) e verificar se ja existe.
    Com um ID e DLookup deve resolver.

    Abraço
    avatar
    WEBE
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 30
    Registrado : 31/01/2011

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  WEBE 12/2/2021, 14:51

    Isto mesmo. Dentro do arquivo XML, tem um campo(chNFe) que é a chave, a única que não se repete nas Notas Fiscais. Este mesmo campo, eu tenho na tabela do access também, e ele receberá este dado, no entanto, queria que o sistema não deixasse importar a mesma NF (identificada pela chave-chNFe) duas vezes. Não sei como implementar neste caso, sem uso de formulário. Com forms eu sempre uso o DLookup e Dcount, que ele compara os dados do campo e da tabela, mas neste caso, sem formulário, não sei fazer.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  Alvaro Teixeira 12/2/2021, 15:09

    Ola,

    Ja percebi que vem no ficheiro que importa da pasta.

    Pergunto a (chNFe) está no nome do ficheiro ou dentro num "elemento"?

    Abraço
    avatar
    WEBE
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 30
    Registrado : 31/01/2011

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  WEBE 12/2/2021, 15:55

    Segue no anexo um FICHEIRO .xml de exemplo.  
    Está contido dentro do arquivo.

    O sistema irá varrer o arquivo, encontrar o nó (chNFe), verificar se o mesmo já foi importado,  caso não, irá inseri todo o conteúdo na tabela.
    avatar
    WEBE
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 30
    Registrado : 31/01/2011

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  WEBE 13/2/2021, 22:17

    Preciso muito desta ajuda.
    avatar
    WEBE
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 30
    Registrado : 31/01/2011

    Impedir importação de XML duplicado. Empty Impedir importação de XML duplicado.

    Mensagem  WEBE 13/4/2021, 18:07

    Acreditem, ainda não consegui resolver.

    Segue modelo do xml.

    Alguém dê uma moral aí.
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  Maicon 11/2/2023, 20:51

    Boa tarde
    Também tive problemas com duplicação de registros no exemplo do colega Fabio Paes
    Não havia encontrado este tópico, criei o meu e achei a solução conforme postado no outro tópico.
    'https://www.maximoaccess.com/t41317-nao-importar-xml-duplicado.
    Contudo como os tópicos tratam do mesmo assunto mas com títulos diferentes :

    "Não importar XML Duplicado" e "Impedir importação de XML duplicado"
    Deixo abaixo o trecho do código alterado para não haver importação duplicada.

    Código:

    'Testar se XML ja foi importado (tbCompras)
    Set rsFor = db.OpenRecordset("tbCompras")
    Chave = Nz(DLookup("ChaveNF", "tbCompras", "ChaveNF = '" & doc.getElementsByTagName("chNFe")(0).Text & "'"), 0)
    rsFor.Close
    Set rsFor = Nothing
    If DCount("ChaveNF", "tbCompras", "ChaveNF = '" & doc.getElementsByTagName("chNFe")(0).Text & "'") > 0 Then Kill (LocalXml & NomeArq)
    If DCount("ChaveNF", "tbCompras", "ChaveNF = '" & doc.getElementsByTagName("chNFe")(0).Text & "'") > 0 Then GoTo Recomeco
    '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")

    Note que criei um rótulo para caso haja a chave do xml a ser importado na tabela a função vai para proximo do Loop você tem que criar um rótulo lá para que a função pegue o proximo arquivo.
    Também inseri uma instrução para excluir o arquivo após importar. visto que no meu caso eu não uso a pasta principal dos xml para fazer importação de arquivos mas pode mover se preferir.

    Recomeco:
    'Loop dos arquivos, pega o proximo arquivo
    NomeArq = Dir()
    Loop


    Última edição por Maicon em 11/2/2023, 20:58, editado 1 vez(es) (Motivo da edição : Corrigir texto)


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

    Bons Estudos.

    gibegarcia gosta desta mensagem

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  Alvaro Teixeira 15/2/2023, 10:15

    Olá Maicon Fernandes,

    Obrigado pelo testemunho, ficamos aguardar o feedback do colega que abriu o tópico.
    Wemerson, caso esteja esclarecido, não se esqueça de dar o tópico como resolvido.

    Abraço

    Conteúdo patrocinado


    Impedir importação de XML duplicado. Empty Re: Impedir importação de XML duplicado.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 13/4/2024, 11:02