MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

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.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2519
    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 11 Dez 2016, 00:15