MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Realizar comparação com tabelas antes de inserir os dados.

    Compartilhe
    avatar
    Novato_access
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 23/03/2018

    Realizar comparação com tabelas antes de inserir os dados.

    Mensagem  Novato_access em 28/6/2018, 12:45

    Pessoal, gostaria de resolver o seguinte problema:

    1 - Tenho 2 tabelas:

    Tabela - TB_Dados

    Produto | CodNP | Criado | Situacao | TB_Verifica
    Teste1 | 1.1-2 | 28/06/2018 | Analise | Teste1,28/06/2018,10:00
    Teste2 | 1.5-3 | 28/06/2018 | Analise | Teste2,28/06/2018,11:00
    Teste3 | 2.8-2 | 28/06/2018 | Analise | Teste3,28/06/2018,10:00

    Tabela - Base_D

    CodNP | Situacao |
    1.1-2 | Analise |
    1.5-3 | Analise |
    2.8-2 | Analise |


    2 - Busco as informações do servidor da empresa que esses são inseridos na tabela "TB_Dados" porém tem alguns CodNP que não era para ser inseridos na tabela e estou tentando fazer com que antes de adicionar os dados na tabela o CodNP que está vindo do servidor verificar na tabela "Base_D", caso esse CodNP tenha vai adicionar na tabela "TB_Dados" e se não tiver não adicionar.

    Observações:

    O CodNP é a junção do db_Cd-do-CP e db_NP-CP que vem do servidor.
    Ex: db_Cd-do-CP = "1.5" e db_NP-CP = "3" juntando os dois fica "1.5-3" na tabela.

    Esse SQL: ("SELECT * FROM [TB_Dados] WHERE NOT Situacao = 'EncN2' AND TB_Verifica = '" & rsADO!Produto & "," & Format(rsADO("Realizado-em_date"), "dd/mm/yyyy,hh:mm") & "'"
    Serve para não repetir o mesmo Produto com a mesma data e hora pois quero que repita apenas os que a hora for diferente.

    Esse SQL: ("SELECT * FROM [Base_D] WHERE CodNP = '" & rsADO("db_Cd-do-CP") & "--" & rsADO("db_NP-CP") & "'")
    Seria para fazer a verificação dos CodNP que possui na Tabela Base_D e adicionar na tabela TB_Dados.

    Os 2 SQL estão corretos pois se deixar apenas 1 consegui realizar a verificação e inserir os dados, o problema é que não sei organizar para fazer essas duas verificação antes de inserir os dados.
    Segue abaixo o SQL que desejo alterar:


    Do While Not rsADO.EOF

    Set db = CurrentDb()

    LocalSQL = "SELECT * FROM [Base_D] WHERE CodNP = '" & rsADO("db_Cd-do-CP") & "--" & rsADO("db_NP-CP") & "'"
    Set sr = db.OpenRecordset(LocalSQL)

    LocalSQL = "SELECT * FROM [TB_Dados] WHERE NOT Situacao = 'EncN2' AND TB_Verifica = '" & rsADO!Produto & "," & Format(rsADO("Realizado-em_date"), "dd/mm/yyyy,hh:mm") & "'"
    Set sr = db.OpenRecordset(LocalSQL)

    If sr.EOF Then
    sr.AddNew
    Else
    sr.Edit
    End If

    sr!Produto = "" & rsADO!Produto
    sr!Criado = "" & Format(rsADO("Realizado-em_date"), "dd/mm/yyyy")
    sr!Situacao = "EncN2"
    sr!CodNP = "" & rsADO("db_Cd-do-CP") & "--" & rsADO("db_NP-CP")
    sr!TB_Verifica = "" & rsADO!Produto & "," & Format(rsADO("Realizado-em_date"), "dd/mm/yyyy,hh:mm")

    sr.Update

    delsonk
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 102
    Registrado : 26/11/2013

    Re: Realizar comparação com tabelas antes de inserir os dados.

    Mensagem  delsonk em 2/7/2018, 19:29

    Prezado colega,

    Caso eu tenha entendido bem o seu problema, sugiro que você tente o seguinte:
    1. Crie uma tabela (ex: TB_Teste) com os mesmos campos que você tem na tabela Base_D.
    2. Baseado no código SQL que você já possui, insira os dados na TB_Teste e depois faça a comparação para verificar se esse CodNP existe na tabela Base_D. Caso existir, insere na TB_Dados; caso não existir não insere os dados na tabela TB_Dados.
    2. Sempre antes de iniciar o procedimento do item 1., via código SQL, exclua todos os dados da TB_Teste para que não haja duplicação de dados vindos do servidor.

    Bons estudos, Delson

      Data/hora atual: 16/12/2018, 17:55