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

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

    avatar
    Ferracine
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Ferracine Qui Fev 09, 2017 11:09 am

    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á.
    cleverson_manaus
    cleverson_manaus
    VIP
    VIP

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  cleverson_manaus Qui Fev 09, 2017 11:39 am


    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,


    .................................................................................
    afro

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

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Ferracine Qui Fev 09, 2017 12:04 pm

    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!

    cleverson_manaus
    cleverson_manaus
    VIP
    VIP

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  cleverson_manaus Qui Fev 09, 2017 1:11 pm


    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,



    .................................................................................
    afro

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

    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Ferracine Ter Fev 14, 2017 9:26 pm

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

    Obrigado!


      Data/hora atual: Qua Jun 16, 2021 2:07 pm