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

    evitar duplicações numa 3ª tabela ( De dados do formulário)

    Compartilhe

    JoaoFelix
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    Registrado : 16/11/2016

    evitar duplicações numa 3ª tabela ( De dados do formulário)

    Mensagem  JoaoFelix em Qui 17 Nov 2016, 13:47

    Boa tarde a todos novamente.
    Tenho um formulário de cadastro de produtos que alimenta a tabela produtos, e ao mesmo tempo cada tabela.
    Para cada campo da tabela produtos tenho uma tabela correspondente com o mesmo nome.

    Private Sub SAVE_RECORD_Click()

    CurrentDb.Execute "INSERT INTO API(API) VALUES('" & Me.API & "')"

    CurrentDb.Execute "INSERT INTO STRENGTH(STRENGTH) VALUES('" & Me.STRENGTH & "')"

    CurrentDb.Execute "INSERT INTO ORIGIN(ORIGIN) VALUES('" & Me.ORIGIN & "')"

    CurrentDb.Execute "INSERT INTO PACKSIZE(PACKSIZE) VALUES(" & Me.PACKSIZE & ")"

    CurrentDb.Execute "INSERT INTO MARKETER(MARKETER) VALUES('" & Me.MARKETER & "')"


    CurrentDb.Execute "UPDATE PRODUCTS SET PRODUCTNAME=[API ] & "" "" & [MARKETER]"


    Me.Refresh

    End Sub


    Desta forma, os registos são enviados para cada uma das tabelas gerando registos repetidos.
    Como é que posso fazer para que apenas haja inserção nas tabelas correspondentes se o registo for diferente e com isto evitar dados repetidos?

    Obrigado a todos.
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    Registrado : 29/06/2012

    Re: evitar duplicações numa 3ª tabela ( De dados do formulário)

    Mensagem  Noobezinho em Sab 26 Nov 2016, 12:26

    Olá João

    Se ainda não conseguiu solucionar tua questão, aqui vai uma sugestão.

    Utilize a função DCount() antes de executar a consulta SQL para cada tabela.

    Dica: coloque um prefixo em cada nome de controle para facilitar o teu e principalmente

    de outros que irão ler o teu código(tbl_API,tbl_Clientes,qry_Clientes,etc)

    Exemplo:

    If Dcount("*","API","[API]=" & Me.API ) = 0 then   '--> se o campo for numérico
    If Dcount("*","API","[API]= '" &  Me.API  & "'") = 0 ' caso seja texto .
    '
     CurrentDb.Execute "INSERT INTO API(API) VALUES('" & Me.API & "')"

    Endif

    Escolha uma das duas frases que começa com If, dependendo o tipo de dados do campo.

    Antes de atualizar, a função irá verifica se já existe o mesmo valor, contando quantos registros tem para esse valor.

    Se for = 0, não tem registro então insere.

    Repita o processo para as outras atualizações.

    [ ]'s


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

      Data/hora atual: Dom 19 Nov 2017, 21:25