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


3 participantes

    Não permitir registos iguais em subformulário

    avatar
    Lih
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 36
    Registrado : 29/08/2014

    Não permitir registos iguais em subformulário Empty Não permitir registos iguais em subformulário

    Mensagem  Lih 25/11/2014, 21:58

    Olá a todos, preciso de ajuda por favor.

    Como posso impedir que o utilizador insira em 3 registos seguidos o mesmo conteúdo num determinado campo?

    Num formulário eu escolho o sujeito, num subformulário introduzo 3 registos (1 para cada exame) mas não posso permitir que o utilizador introduza dois exames iguais. Para isso eu queria se fosse enviada uma msg de texto caso acontecesse.

    Obrigada
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  criquio 25/11/2014, 23:07

    Olá! Adaptando o código que passei no outro tópico, você consegue o que pretendes. Nesse caso, iremos mudar o Recordset da tabela para um RecordsetClone que se refere ao Recordset carregado no formulário. Para isso, coloque no evento "Antes de atualizar" do campo:

    Código:
    Dim rs As Recordset

    Set rs = Me.RecordsetClone

    ' Procura a primeira ocorrência do termo, caso ele já existir
    rs.FindFirst "NomeDoCampo='" & Me.NomeCampoDoForm & "'"

    If rs.NoMatch Then ' Se não encontrar o termo então...
        Exit Sub  ' Cancela a procura
    Else ' Caso contrário...
        MsgBox "Esse valor já existe. Insira outro", vbCritical, "Atenção" ' avisa que já existe o termo e
        Me.NomeDoCampo.Undo ' cancela a inserção do termo, limpando o campo.
    End If

    rs.Close
    Set rs = Nothing


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Lih
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 36
    Registrado : 29/08/2014

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  Lih 25/11/2014, 23:32

    Olá,

    estou utilizando esta função: =DLookup("Exame", "OphthalmologicalExams", "Exame_ID =16")

    Mas dá erro de sintaxe, já estive a ver e parece me estar bem. Não sei qual o problema


    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  criquio 25/11/2014, 23:42

    O DLookup na origem de campos em formulários, relatórios e consultas usa ponto e vírgula no lugar da vírgula. A vírgula é no VBA.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Lih
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 36
    Registrado : 29/08/2014

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  Lih 25/11/2014, 23:53

    A sério Embarassed


    Agraadeço imenso, estou a uma hora nisto.
    avatar
    Lih
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 36
    Registrado : 29/08/2014

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  Lih 25/11/2014, 23:57

    Relativamente ao código... Preciso que verifique apenas nos 3 ultimos registos, como faço isso??
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  criquio 26/11/2014, 00:12

    O DLookup só pesquisa um registro por vez. Para isso seria necessário usar DMax para ir para o último registro e não poderia ter "buraco" nos códigos dos registros para poder fazer um DMax - 1 e um DMax - 2. Para esse caso é mais prático usar como eu coloquei na primeira dica mesmo, usando RecordsetClone e apenas fazendo uma pequena alteração:

    Código:
    Dim Existe As Boolean
    Dim rs As Recordset

    Existe = False
    Set rs = Me.RecordsetClone

    rs.MoveLast

    If NomeCampo = Me.NomeCampo Then
        Existe = True  ' Cancela a procura
    End Idf

    rs.MovePrevious

    If NomeCampo = Me.NomeCampo Then ' Se não encontrar o termo então...
        Existe = True  ' Cancela a procura
    End Idf

    rs.MovePrevious

    If NomeCampo = Me.NomeCampo Then ' Se não encontrar o termo então...
        Existe = True  ' Cancela a procura
    End Idf

    If Existe = True Then
        MsgBox "Esse valor já existe. Insira outro", vbCritical, "Atenção" ' avisa que já existe o termo e
        Me.NomeDoCampo.Undo ' cancela a inserção do termo, limpando o campo.
    End If

    rs.Close
    Set rs = Nothing

    O MoveLast vai para o último registro. Aí confere se o valor do campo é igual ao inserido no campo do formulário. Se for igual, coloca a variável Existe, que estava com False, na condição de True.

    Depois o MovePrevious move duas vezes para os registros imediatamente anteriores e faz o mesmo procecimento. No final, se Existe for True emite o aviso de repetido e cancela o valor inserido no campo.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    amgfaustino
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 19
    Registrado : 20/11/2012

    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  amgfaustino 5/2/2015, 01:07

    tenho um problema identico ao que o criquio colocou mas como faço para em vez de cancelar o registo, apenas selecionar o registo que está duplicado?

    exemplo:

    Numero de telefone, quando ja existir um registo como o numero igual recebo uma mensagem alertanto e a ctext fica com foco



    Me.NomeDoCampo.Undo ' cancela a inserção do termo, limpando o campo.
    (este comando cancela a inserção, mas eu pretendia que no lugar de cancelar a inserção ele colocasse o foco na txt do campo duplicado e que não deixasse avançar para outra txt sem que fosse alterado o campo duplocado )

    Conteúdo patrocinado


    Não permitir registos iguais em subformulário Empty Re: Não permitir registos iguais em subformulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 13:41