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

    [Resolvido]Anti duplicação de dados com critério

    Compartilhe

    Ferracine
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 09/02/2017

    [Resolvido]Anti duplicação de dados com critério

    Mensagem  Ferracine em Qui 09 Fev 2017, 11:09

    Bom dia!

    Satisfação em participar do Maximo Access!

    Tenho uma tabela [VENDA] onde a mesma é relacionada a tabela [ITENS], basicamente uma VENDA pode conter vários ITENS.

    Meu problema, gostaria que meu BD não autorizasse a inserir PRODUTOS repetidos nos ITENS por cada VENDA. Abaixo segue um exemplo do código com evento "antes de atualizar" do campo PRODUTO (O campo PRODUTO é uma combobox que mostra os produtos cadastrados).

    If (Not IsNull(DLookup("[PRODUTO]", "ITENS", _
    "[PRODUTO] ='" & Me!PRODUTO & "'"))) Then
    MsgBox "Produto já informado nesta venda" & PRODUTO.Text, _
    vbInformation
    Cancel = True
    Me!PRODUTO.Undo
    End If


    Esse código funciona, porém, ele faz a leitura de toda a tabela ITENS, teria como apenas verificar os PRODUTOS da minha VENDA atual?

    Agradeço desde já.
    avatar
    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 880
    Registrado : 23/09/2011

    Re: [Resolvido]Anti duplicação de dados com critério

    Mensagem  cleverson_manaus em Qui 09 Fev 2017, 11:39


    bom dia Ferracine,


    vc pode utilizar a integridade referencial da tabela, vc consegue isso criando uma chave primaria composta, com os campos idVenda+IdProduto, acredito que vc tenha esses campos na sua tabela item da venda.

    Assim, uma mensagem do sistema avisará que vc está entrando com dados repetidos e bloqueia a inclusão.


    Abraços,


    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.]

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Marcar o tópico como resolvido!!!

    Ferracine
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 09/02/2017

    Re: [Resolvido]Anti duplicação de dados com critério

    Mensagem  Ferracine em Qui 09 Fev 2017, 12:04

    Obrigado pela atenção Cleverson!

    Na verdade teria alguma outra forma?

    A integridade referencial do relacionamento entre as tabelas é bacana, mas meu objetivo é deixar o BD mais personalizado, não dependendo de funções prontas do próprio Access.

    Não encontrei nada relacionado via VBA, mas se tiver alguma outra sugestão agradeço!

    avatar
    cleverson_manaus
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 880
    Registrado : 23/09/2011

    Re: [Resolvido]Anti duplicação de dados com critério

    Mensagem  cleverson_manaus em Qui 09 Fev 2017, 13:11


    Bem, crie a chave composta na tabela item venda, com isso vc garante que a verificação no item da sua venda atual.

    Altere seu código para que o mesmo faça a verificação nos dois campos da chave composta através do função DLookUp, aproveitei uma dica do Noob, faça as alterações conforme abaixo:


    Procure usar um prefixo nos nomes dos teus controles para que se possa identifica numa simples olhadela.

    Me.msg = DLookup("Msg", "Obs", "Data = #" & Me.Dia & "# And Pis = & Me.PIS & ")

    Data e Dia são palavras reservadas do Access:

    Renomeie esses campos: dData;dDia ou como preferir.

    Experimente assim:

    Me.msg = DLookup("Msg", "tbl_Obs", "dData = " & Me.dDia & " And Pis = " & Me.PIS & ")

    Veja que está faltando uma aspa entre Pis = & e Me.PIS

    Isso que for campo numérico, senão colocar também as aspas simples:

    Me.msg = DLookup("Msg", "tbl_Obs", "dData = " & Me.dDia & " And Pis = '" & Me.PIS & "'")


    Abraços,



    .................................................................................
    [Você precisa estar registrado e conectado para ver esta imagem.]

    "É fazendo que se aprende a fazer aquilo que se deve aprender a fazer."(Aristóteles)
    - Dúvida resolvida!!! Marcar o tópico como resolvido!!!

    Ferracine
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 09/02/2017

    Re: [Resolvido]Anti duplicação de dados com critério

    Mensagem  Ferracine em Ter 14 Fev 2017, 21:26

    Muito bom, funcionou legal, fiz apenas algumas modificações para incrementar.

    Obrigado!


      Data/hora atual: Dom 27 Maio 2018, 08:59