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


2 participantes

    Regra de validação campo data de nascimento

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 13:23

    Prezados, bom dia

    estou tentando criar uma regra de validação para um campo "DataDeNascimento" da seguinte forma:

    a data a ser digitada no referido campo ter que estar entre 01/01/1912 e a data atual menos 18 anos. Ou seja, na data de hoje, 07/03/2012, o campo não deveria aceitar a data maior que 07/03/1994 e nem menor que 01/01/1912, pois a pessoa teria menos de 18, no primeiro caso, e mais de 100 anos no segundo.

    A condição "data atual menos 18 anos" é porque não pode haver menores de 18 anos no cadastro e para não ser necessário mudar a regra todos os dias ou meses ou anos.
    Agradecendo a todos que ajudar, fico no aguardo.
    Obrigado
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 14:31

    Tente adaptar:

    If Not IsNull(Me.txtNascimento) Then

    If Month(txtNascimento) > Month(Date) Then
    intIdade = DateDiff("yyyy", txtNascimento, Date) - 1
    ElseIf Month(txtNascimento) < Month(Date) Then
    intIdade = DateDiff("yyyy", txtNascimento, Date)
    ElseIf Month(txtNascimento) = Month(Date) Then
    If Day(txtNascimento) <= Day(Date) Then
    intIdade = DateDiff("yyyy", txtNascimento, Date)
    ElseIf Day(txtNascimento) > Day(Date) Then
    intIdade = DateDiff("yyyy", txtNascimento, Date) - 1
    End If
    End If

    If intIdade < 18 Then
    MsgBox "Idade menor que a permitida", vbCritical, "Atenção"
    ElseIf intIdade > 100 Then
    MsgBox "Idade maior que a permitida", vbCritical, "Atenção"
    Else
    Me.txtIdade = intIdade
    End If

    End If


    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 15:06

    Colega Criquio,

    infelizmente não funcionou. Coloquei o código no evento "apos atualizar" do campo "DataDeNascimento" da seguinte forma:

    If Not IsNull(Me.DataDeNascimento) Then

    If Month(DataDeNascimento) > Month(Date) Then
    intIdade = DateDiff("yyyy", DataDeNascimento, Date) - 1
    ElseIf Month(DataDeNascimento) < Month(Date) Then
    intIdade = DateDiff("yyyy", DataDeNascimento, Date)
    ElseIf Month(DataDeNascimento) = Month(Date) Then
    If Day(DataDeNascimento) <= Day(Date) Then
    intIdade = DateDiff("yyyy", DataDeNascimento, Date)
    ElseIf Day(DataDeNascimento) > Day(Date) Then
    intIdade = DateDiff("yyyy", DataDeNascimento, Date) - 1
    End If
    End If

    If intIdade < 18 Then
    MsgBox "Idade menor que a permitida", vbCritical, "Atenção"
    ElseIf intIdade > 100 Then
    MsgBox "Idade maior que a permitida", vbCritical, "Atenção"
    Else
    Me.txtIdade = intIdade
    End If

    End If

    O campo "txtIdade" que tem no código não existe no formulário/tabela. Necessariamente ele tem que existir? Caso afirmativo, pode ser oculto?
    O código é implementado onde eu coloquei mesmo?
    Me parece que no código proposto por vc referencia a idade. Mas não é para referenciar idade, somente a data de nascimento. A idade não importa. O importante é que ao preencher o registro, não seja digitado uma data de nascimento na qual o individuo possa ter menos de 18 ou mais de 100 anos no momento do cadastro.
    Agradeço
    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 15:36

    Colega Críquio,

    retificando o post anterior, criei o campo "txtIdade" oculto e funcionou. Só que, mesmo digitando a data fora dos parâmetros, é permitido mantê-la e sair do campo sem alterá-la. Há como fazer para que não seja permitido o usuário sair do campo sem que o preenchimento esteja dentro da regra?
    Adindo, está sendo permitido digitar uma data na qual o individuo tenha mais de 100 anos. Por exemplo, se digitar 01/01/1911, não passa, mas se digitar 01/01/1912, passa. Com esta última data, a idade passa de 100 anos, exatamente 100, 2 meses e 6 dias. Há como mudar?

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 15:59

    Coloque no evento "Ao sair" do campo e mande limpar o campo depois da mensagem ou mesmo antes:

    Me.NomeDoCampo = Null

    Tambem declare a variável intIdade no escopo do módulo:

    Option Compare Database
    Option Explicit

    Dim intIdade As Integer




    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 16:44

    Prezado Críquio,

    o código Me.NomeDoCampo = Null, não impede que o foco saia do campo. Somente apaga os dados.
    Há algum código que obriga o usuário a preencher o campo corretamente. Se não for preenchido corretamente, ele não prosseguirá no preenchimento do registro. Ou ele preenche correto ou desiste de continuar.

    Desculpe-me pelo desconhecimento, mas no escopo de qual módulo eu declaro a variavel

    Option Compare Database
    Option Explicit
    Dim intIdade As Integer

    Como não tenho nenhum módulo referente ao tópico, criei o módulo. É o que deveria ter feito?
    Quanto a isto:
    está sendo permitido digitar uma data na qual o individuo tenha mais de 100 anos. Por exemplo, se digitar 01/01/1911, não passa, mas se digitar 01/01/1912, passa. Com esta última data, a idade passa de 100 anos, exatamente 100, 2 meses e 6 dias. Há como mudar?
    Contando com colaboração, aguardo
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 16:58

    Módulo é qualquer tela aonde você digita as linhas de vba. Pode ser um módulo global, um módulo de classe, o módulo do formulário ou do relatório. Nesse caso, seria o mesmo módulo do formulário. Escopo do módulo é a área fora dos eventos do formulário ou relatório ou dos controles. Por exemplo, você cria funções ou subs no escopo do módulo. Quanto a não permitir sair do campo, pode tentar algo assim:

    If IsNull(Me.CampoAtual) Then
    MsgBox "Mensagem"
    Me.UmSegundoCampo.SetFocus
    Me.CampoAtual.SetFocus
    Else
    End If


    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 17:35

    Ok, Criquio.
    Obrigado pela explicação e ajuda.

    Penso que vc não entendeu a minha pretensão. O código que vc sugeriu

    If IsNull(Me.CampoAtual) Then
    MsgBox "Mensagem"
    Me.UmSegundoCampo.SetFocus
    Me.CampoAtual.SetFocus
    Else
    End If

    eu já utilizo em outra situação. Mas não atende a minha situação porque ele não impede a saida do campo se os dados estiverem inválidos. Ele mantém o foco no campo atual ou encaminha para outro campo o foco caso o campo esteja vazio. Se digitar qualquer dado ou simplesmente der espaço (caso não haja máscara), o foco passa para outro campo. A minha pretensão é evitar erro. Portanto, o ideal seria que o foco saisse do campo somente quando for atendida a regra de validação e não quando se digitasse qualquer dado.

    No formulário tem o campo "CPF" onde o que eu estou pretendendo funciona. Ou seja, se digitar um número de CPF inválido (e não errado), não se consegue continuar a preencher o registro. Mas existe uma função para isto.
    O código é

    If DVCPF(Me.Cpf) = False Then
    Cancel = True
    End If

    no evento "antes de atualizar" e

    If Not IsNull(Cpf) Then
    DVCPF Cpf.Value
    End If

    no evento após atualizar.
    Como esses códigos dependem de uma função, não estou sabendo como adequá-los para utilizar no campo "Data DeNascimento", que é o que eu preciso no momento.


    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 17:40

    Eu passei dessa forma apenas como exemplo para que fosse adaptado. Algo como:

    If IsNull(Me.NomeDoCampo) Or Me.NomeDoCampo.Value = "" Or Me.txtIdade < 18 Or Me.txtIdade > 100 Then
    ...


    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 17:58

    Eh! Colega Criquio,

    não funcionou.
    Como já escrevi, se digitar os dados inválidos, ao sair do campo, retorna a msg de "dado errado" mas permite que continue a preencher o formulário. Isto é que não pode acontecer. Se os dados forem inválidos o cursor não pode sair do campo em que estiver, até que seja digitado dados corretos.
    Penso que não vai ter como implementar um código para isto e nem para que impeça digitar data que extrapolem a regra de validação.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 17:59

    Mude para o evento "Ao perder o foco" e tente novamente.


    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 18:49

    Não funcionou.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 19:25

    No lugar do SegundoCampo está colocando o nome correto de um campo existente?


    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 19:42

    Corretissímo.
    Não funcionou.

    Se coseguirmos resolver a falha que citei: "está sendo permitido digitar uma data na qual o individuo tenha mais de 100 anos. Por exemplo, se digitar 01/01/1911, não passa, mas se digitar 01/01/1912, passa. Com esta última data, a idade passa de 100 anos, exatamente 100, 2 meses e 6 dias", já está bom.


    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 20:03

    Mas antes de se completar 101 anos, conta como tendo 100 anos. Então não seria o caso de colocar a idade máxima de 99 anos?


    .................................................................................
    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.

    OLDRIVG
    OLDRIVG
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 374
    Registrado : 20/07/2010

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  OLDRIVG 7/3/2012, 20:20

    Ok. Também serve.
    Já troquei o parâmetro para 99 no código.
    Vou continuar tentando fazer o que estamos tentando com relaçao aos dados inválidos. Caso vc ache alguma solução lhe agradeço e vou tentar alguma forma por cá. Qualquer coisa posto aqui.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  criquio 7/3/2012, 20:23

    Eu tenho usado da forma que passei e tem funcionado.


    .................................................................................
    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.


    Conteúdo patrocinado


    Regra de validação campo data de nascimento Empty Re: Regra de validação campo data de nascimento

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 05:42