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

    [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Compartilhe

    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 470
    Registrado : 22/12/2009

    [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  wsenna em Sex 14 Fev 2014, 00:14

    Salve Mestre JPaulo, boa noite.

    [Você precisa estar registrado e conectado para ver este link.]

    No exemplo postado pelo amigo existe um problema que cito a seguir:
    Caso digitemos o mesmo algarismo até o final o CPF é retornado como válido.

    Abraços, WSenna


    Última edição por wsenna em Sex 14 Fev 2014, 11:43, editado 2 vez(es)

    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 470
    Registrado : 22/12/2009

    Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  wsenna em Sex 14 Fev 2014, 01:42

    continuando...

    Pesquisando na Net me deparei com o seguinte código:

    No evento Após Atualizar do campo CPF:

    Private Sub CPF_AfterUpdate()
    Dim N As Integer, P As Integer, S As Integer, D As Double
    D = Left(Me.CPF, 9)

    For N = 1 To 9
    P = (P + Mid(D, N, 1) * N) Mod 11
    Next

    If P < 3 Or P > 9 Then
    P = 0
    End If

    D = D & P
    For N = 1 To 10
    S = (S + Mid(D, N, 1) * (N - 1)) Mod 11
    Next

    If S < 3 Or S > 9 Then
    S = 0
    End If

    If Right(Me.CPF, 2) <> P & S Then
    DoCmd.CancelEvent
    MsgBox "CPF Inválido.   ", vbCritical, " Tentte novamente"
    Me.CPF = Null

    Else

    MsgBox "CPF Válido.   ", vbInformation, "  Infoasic Smart System"
    End If

    End Sub

    O problema é que mesmo informando um CPF válido recebo uma mensagem de CPF Inválido.

    Onde estaria o erro?

    Vide Link: [Você precisa estar registrado e conectado para ver este link.]

    Abraços, WSenna

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  JPaulo em Sex 14 Fev 2014, 10:02

    Na altura em que postei o exemplo, optei pelos modulos do Professor Luiz Claudio, por me parecer os mais fiáveis.

    No entanto para o CNPJ funciona lindo, mas para o CPF ele aceita numeros iguais menos se forem zeros.

    Pelas pesquisas que fiz em 2010, todos os modulos disponibilizados fazem isso, até o do macoratti.

    [Você precisa estar registrado e conectado para ver este link.]





    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 470
    Registrado : 22/12/2009

    Re: [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  wsenna em Sex 14 Fev 2014, 10:50

    Grande JPaulo, bom dia.

    Tenho uma outra função que executa bem a validação do CPF.

    Function v_CPF(CPF As String) As String

    If CPF = "11111111111" Or CPF = "22222222222" Or CPF = "33333333333" _
     Or CPF = "44444444444" Or CPF = "55555555555" Or CPF = "66666666666" _
     Or CPF = "77777777777" Or CPF = "88888888888" Or CPF = "99999999999" Or CPF = "00000000000" Then
     MsgBox "O CPF é INVÁLIDO! Digite-o novamente.", vbCritical, "  InfoBasic Smart System"
     Exit Function
    End If

    Dim lngSoma, lngInteiro As Long
    Dim intNumero, intMais, I, intResto As Integer
    Dim intDig1, intDig2 As Integer
    Dim strDigVer, strcampo, strCaracter, StrConf As String
    Dim dblDivisao As Double

    lngSoma = 0
    intNumero = 0
    intMais = 0
    strcampo = Left(CPF, 9)
    strDigVer = Right(CPF, 2)
    For I = 2 To 10
    strCaracter = Right(strcampo, I - 1)
    intNumero = Left(strCaracter, 1)
    intMais = intNumero * I
    lngSoma = lngSoma + intMais
    Next I
    dblDivisao = lngSoma / 11
    lngInteiro = Int(dblDivisao) * 11
    intResto = lngSoma - lngInteiro
    If intResto = 0 Or intResto = 1 Then
    intDig1 = 0
    Else
    intDig1 = 11 - intResto
    End If
    strcampo = strcampo & intDig1
    lngSoma = 0
    intNumero = 0
    intMais = 0
    For I = 2 To 11
    strCaracter = Right(strcampo, I - 1)
    intNumero = Left(strCaracter, 1)
    intMais = intNumero * I
    lngSoma = lngSoma + intMais
    Next I
    dblDivisao = lngSoma / 11
    lngInteiro = Int(dblDivisao) * 11
    intResto = lngSoma - lngInteiro
    If intResto = 0 Or intResto = 1 Then
    intDig2 = 0
    Else
    intDig2 = 11 - intResto
    End If
    StrConf = intDig1 & intDig2
    v_CPF = StrConf

    'If dvcpf = strDigVer Then
    Rem 999.999.999-99
    'CPF = Mid(CPF, 1, 3) & "." & Mid(CPF, 4, 6) & "." & Mid(CPF, 7, 9) & "-" & Right(CGC, 2)
    'dvcpf = CPF
    If v_CPF <> strDigVer Then
    'Else
    MsgBox "Atenção: O número do CPF informado é inválido.   " & Chr(13) & "Por favor, digite novamente.   ", vbCritical, "  InfoBasic Smart System"

    DoCmd.CancelEvent

    'MsgBox "CPF válido!", vbInformation
    'Else
    End If

    End Function


    No evento Ao sair do campo CPF:

    Private Sub CPF_Exit(Cancel As Integer)
    If Not IsNull(Me.CPF) Then
    v_CPF (Me.CPF)
    End If

    If IsNull([CPF]) Or IsEmpty([CPF]) Then

    'Dispara uma mensagem ao usuário do computador para que ele tome uma decisão. Se ele escolher Ok, então passa a frente
    If MsgBox("É recomendado o preenchimento do CPF." & Chr(13) & _
    "Deseja não preencher agora e preenchê-lo em outro momento?", vbExclamation + vbOKCancel, " Atenção !!!") = vbOK Then Exit Sub

    'Se escolher e apertar Cancelar, então o foco direciona para caixa de texto (Texto2)
    Me.CPF.SetFocus
    Me.CPF = ""
    Cancel = True
    End If
    End Sub


    Funciona de forma quase perfeita, apenas com um detalhe, caso o CPF inicie com o algarismo 0 (zero) acusa como CPF Inválido e nós sabemos que alguns CPFs podem realmente iniciar com 0 (zero)

    Daí...

    O Mago do VBA teria alguma sugestão?

    Por outro lado, tomando o seu exemplo como base e acrescentando parte da função acima o problema dos algarismos idênticos foi resolvido veja abaixo:

    Abraços, WSenna
    Anexos
    Valida CPF_CNPJ.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 21 vez(es)


    Última edição por wsenna em Sex 14 Fev 2014, 11:28, editado 1 vez(es)

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  JPaulo em Sex 14 Fev 2014, 10:59

    Neste caso o amigão pode utilizar o meu exemplo, que aceita CPF de numeros iguais menos zeros e na validação utilizar então;

    If Me.CPF = "11111111111" Or Me.CPF = "22222222222" Or Me.CPF = "33333333333" _
    Or Me.CPF = "44444444444" Or Me.CPF = "55555555555" Or Me.CPF = "66666666666" _
    Or Me.CPF = "77777777777" Or Me.CPF = "88888888888" Or Me.CPF = "99999999999" Then
    MsgBox "O CPF é INVÁLIDO! Digite-o novamente.", vbCritical, " InfoBasic Smart System"
    Exit Sub
    End If

    Gero aqui para testes;

    [Você precisa estar registrado e conectado para ver este link.]

    Utilizei este CPF valido para teste e funciona;

    089.613.243-90
    Anexos
    ValidaCPF_CNPJ.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (34 Kb) Baixado 16 vez(es)


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  JPaulo em Sex 14 Fev 2014, 11:17

    Este feito em 2010, valida o CPF e o CNPJ no mesmo campo;
    Anexos
    ValidaCPF_CNPJ_mesmoCampo.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (27 Kb) Baixado 24 vez(es)


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 470
    Registrado : 22/12/2009

    Re: [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  wsenna em Sex 14 Fev 2014, 11:42

    Grande Mestre, mais uma vez, bom dia.

    Enquanto eu reparava o seu exemplo acrescido do fragmento do código acima e editava minha última resposta verifiquei que o Amigão já tinha postado a mesma solução logo abaixo.

    Contudo, quero exprimir minha satisfação ao perceber que do modo sugerido os CPFs iniciados com 0 (zero) também podem ser validados neste novo modelo.

    Mais uma vez o Mago do VBA acertou em cheio, parabéns.

    Abraços, WSenna
    Anexos
    Valida CPF_CNPJ.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 30 vez(es)

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Referente ao exemplo Valida CPF ou CNPJ

    Mensagem  JPaulo em Sex 14 Fev 2014, 12:09

    Obrigado pelo retorno amigo, o forum agradece.


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

      Data/hora atual: Qui 08 Dez 2016, 00:09