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
JPaulo
Alexandre Neves
criquio
7 participantes

    [Resolvido] Como valido cpf e cnpj em vba no access?

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Como valido cpf e cnpj em vba no access?

    Mensagem  criquio 31/12/2009, 00:32

    Olá, tudo na paz? Espero que sim.
    Pessoal, é o seguinte, estou precisando de uma rotina em vba e acho que aqui eu vou conseguir.
    Eu estou desenvolvendo uma aplicação no Access e preciso validar cpf e cnpj no envento AfterUpdade de seus respectivos textbox de mode que se o número estiver errado, apareça uma mensagem dizendo isso e se estiver correto, passe para o próximo campo. Tenho visto algumas rotinas para colocar em módulo global, mas não consegui fazê-lo, por isso queria uma rotina para inserir no evento AfterUpdate das caixinhas de texto.
    Se puderem me ajudar, ficaria muito agradecido.
    Podem enviar para meu email se quiserem.
    Um abração.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  Alexandre Neves 31/12/2009, 11:07

    Bom dia,

    Nunca precisei de validar estes códigos mas seguem funções encontradas. Não se esqueça de indicar o autor.

    '******************************************
    'Rotinas para cálculo de dígito verificador
    'e validação de CNPJ e CPF
    'Autor: Luiz Cláudio C. V. Rocha
    '******************************************

    Public Function fDigCNPJ(CNPJ As String) As String
    'Calcula os dígitos verificadores do CNPJ
    Dim I As Integer
    Dim intFator As Integer
    Dim intTotal As Integer
    Dim intResto

    'Verifica se tem 12 ou 14 dígitos
    If Not (Len(CNPJ) = 12 Or Len(CNPJ) = 14) Then
    Exit Function
    Else
    'Verifica se é numérico
    If Not IsNumeric(CNPJ) Then
    Exit Function
    Else
    'Trunca o CNPJ em 12 caracteres
    CNPJ = Left$(CNPJ, 12)
    End If
    End If

    Inicio:
    'Percorre as colunas (de trás para frente),
    'multiplicando por seus respectivos fatores
    intFator = 2
    intTotal = 0
    For I = Len(CNPJ) To 1 Step -1
    If intFator > 9 Then intFator = 2
    intTotal = intTotal + ((CInt(Mid(CNPJ, I, 1)) * intFator))
    intFator = intFator + 1
    Next I

    'Obtém o resto da divisão por 11
    I = intTotal Mod 11
    'Subtrai 11 do resto
    I = 11 - I
    'O dígito verificador é i
    If I = 10 Or I = 11 Then I = 0
    'Concatena ao CNPJ
    CNPJ = CNPJ & CStr(I)

    If Len(CNPJ) = 13 Then
    'Calcula o segundo dígito
    GoTo Inicio
    End If

    'Retorna os dígitos verificadores
    fDigCNPJ = Right$(CNPJ, 2)
    End Function

    Public Function fDigCPF(CPF As String) As String
    'Calcula os dígitos verificadores do CPF
    Dim I As Integer
    Dim intFator As Integer
    Dim intTotal As Integer
    Dim intResto

    'Verifica se tem 9 ou 11 dígitos
    If Not (Len(CPF) = 9 Or Len(CPF) = 11) Then
    Exit Function
    Else
    'Verifica se é numérico
    If Not IsNumeric(CPF) Then
    Exit Function
    Else
    'Trunca o CPF em 9 caracteres
    CPF = Left$(CPF, 9)
    End If
    End If

    Inicio:
    'Percorre as colunas (de trás para frente),
    'multiplicando por seus respectivos fatores
    intFator = 2
    intTotal = 0
    For I = Len(CPF) To 1 Step -1
    intTotal = intTotal + ((CInt(Mid(CPF, I, 1)) * intFator))
    intFator = intFator + 1
    Next I

    'Obtém o resto da divisão por 11
    I = intTotal Mod 11
    'Subtrai 11 do resto
    I = 11 - I
    'O dígito verificador é i
    If I = 10 Or I = 11 Then I = 0
    'Concatena ao CPF
    CPF = CPF & CStr(I)

    If Len(CPF) = 10 Then
    'Calcula o segundo dígito
    GoTo Inicio
    End If

    'Retorna os dígitos verificadores
    fDigCPF = Right$(CPF, 2)
    End Function

    Public Function fCNPJ(CNPJ As String) As Boolean
    'Verifica se o CNPJ é válido
    Dim strChar As String

    'Verifica se tem 14 caracteres
    If Not Len(CNPJ) = 14 Then
    fCNPJ = False
    Exit Function
    End If

    'Verifica se o dígito verificador confere
    strChar = Mid$(CNPJ, 13, 2)
    If fDigCNPJ(CNPJ) = strChar Then
    fCNPJ = True
    Else
    fCNPJ = False
    End If
    End Function

    Public Function fCPF(CPF As String) As Boolean
    'Verifica se o CPF é válido
    Dim strChar As String

    'Verifica se tem 11 caracteres
    If Not Len(CPF) = 11 Then
    fCPF = False
    Exit Function
    End If

    'Verifica se o dígito verificador confere
    strChar = Mid$(CPF, 10, 2)
    If fDigCPF(CPF) = strChar Then
    fCPF = True
    Else
    fCPF = False
    End If
    End Function

    Paulo1950 gosta desta mensagem

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  JPaulo 31/12/2009, 11:09

    Ola Bom Dia e seja bem vindo ao fórum;

    Com a função do Grande Luiz Cláudio C. V. Rocha, fiz um pequeno exemplo para o ajudar.

    Arrow  Valida CPF e CNPJ

    Veja se serve e retorne.
    Feliz Ano 2010


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Instruções SQL como utilizar...

    RAST gosta desta mensagem

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  JPaulo 31/12/2009, 11:10

    Grande Alexandre enquanto preparava o exemplo você respondeu, desculpe que não vi e Feliz Ano 2010.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Instruções SQL como utilizar...
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  criquio 30/1/2010, 02:44

    Obrigado pelas respostas e desculpem ter demorado a retornar. Acho que isso resolve a questão. Tem uma coisas que não preciso mas creio que consigo arrumar aqui, como por exemplo: não preciso da mensagem de que é válido, só quando for inválido. Sendo válido, pode passar direto para o próximo campo. Tambem não preciso, para esse projeto, das imagens de positivo e negativo. No caso de CNPJ:

    Else
    MsgBox "CNPJ válido."
    Me.txtcnpj.InputMask = "00\.000\.000\/0000\-00"
    Me.img1.Visible = True
    Me.img2.Visible = False
    End If


    Creio que basta retirar as linhas:

    MsgBox "CNPJ válido."
    Me.img1.Visible = True
    Me.img2.Visible = False


    Deixando o código assim:

    Else
    Me.txtcnpj.InputMask = "00\.000\.000\/0000\-00"
    End If


    Estou certo no meu raciocínio?

    Outra questão, vamos ver se tem uma solução melhor.
    Eu tenho um relatório com cinco subrelatórios. Só que pode ser que tenha dados só em um deles. Da maneira normal, nesse caso, se o terceiro relatório contiver dados e os outros não, ficam os espaços dos relatórios sem dados, vazios no relatório principal, no modo de impressão. Eu percebi que os subrelatórios se auto ajustam à altura necessária para mostrar todos os dados, então defini a altura dos cinco subelatórios para zero e deixei eles praticamente juntos, logo abaixo dos dados do relatório principal. Isso resolveu a questão, mostrando só os subrelarórios que contem dados e em uma ordem correta e sem espaços entre eles.
    Alguem teria uma solução melhor que essa? Ou isso está bom desse jeito? Pelo menos, resolveu o problema como eu precisava.
    Abraços e mais uma vez, obrigado.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8496
    Registrado : 05/11/2009

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  Alexandre Neves 30/1/2010, 09:23

    Bom dia, criquio

    Relativamente à primeira dúvida, não sei a utilidade das imagens mas se pretende que não apareçam, deve forçar a que não apareçam:
    Else
    Me.txtcnpj.InputMask = "00\.000\.000\/0000\-00"
    Me.img1.Visible = False
    Me.img2.Visible = False
    End If

    Sobre a segunda questão (não costumo trabalhar com sub-formulários nem sub-relatórios) parece-me que encontrou a melhor solução.

    Bom trabalho,
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Alexandre

    Mensagem  criquio 31/1/2010, 01:35

    Obrigado.
    Na verdade, as imagens são ícones de positivo quando o número é válido e negativo quando é inválido. Eu fiz do jeito que falei, retirei as linhas e excluí as imagens e funcinou direitinho. Achei melhor assim, para ficar o código mais enxuto, já que não necessitaria delas. Mas o esquema original vai ficar arquivado aqui no meu banco de scripts e de exemplos. Com certeza, ainda o utilizarei em outros projetos.
    Eu já tinha pegado alguns exemplos de como fazer essa validação, mas esse foi o que mais contribuiu para o meu entendimento sobre o seu funcionamento. Foi o único que consegui adaptar às minhas necessidades e a partir dele poderei entender melhor o funcionamento dos outros esquemas.
    Abração a todos.
    avatar
    douglas
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 17/10/2010

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  douglas 24/10/2010, 23:16

    Alguém pode postar o exemplo novamente? Estou precisando e o link não funciona mais.
    Obrigado.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  JPaulo 25/10/2010, 17:43

    O Exemplo encontra-se na sala de Repositorio de Exemplos;

    Download


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Instruções SQL como utilizar...
    avatar
    douglas
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 17/10/2010

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  douglas 25/10/2010, 19:29

    Obrigado Very Happy
    Educav
    Educav
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 20/07/2012

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty CPF - dúvida

    Mensagem  Educav 21/8/2013, 00:18

    Boa noite camaradas de Access....

    Eu fiz umas adaptações num BD que checa o CPF....

    No evento antes de atualizar o campo CPF, coloquei o seguinte código....

    -------------------------------------------------------------------------------------

    Private Sub CPF_BeforeUpdate(Cancel As Integer)
     
    If DCount("CPF", "Pessoas", "CPF='" & Me!CPF & "'") >= 1 Then
    MsgBox "Este número de CPF já foi cadastrado !", vbInformation, "Informação"
    Cancel = True
    Exit Sub
    End If

    End Sub

    --------------------------------------------------------------------------------------------


    No evento após atualizar coloquei uma chamada =DVCPF([CPF]) que roda o módulo chamado VERCPF que tem o código abaixo, que adaptei tbm...

    --------------------------------------------------------------------------------------------

    Function DVCPF(CPF As String) As String

    'Rotina alterada por Edu Cav - 2013
    'Data: 24/06/2013
    'Site: http://educavnews.tk

    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
      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
    DVCPF = strConf
    If DVCPF <> strDigVer Then
    ' If DVCPF = strDigVer Then
    ' MsgBox "CPF correto!", vbInformation
    ' Else
    MsgBox "O CPF é INVÁLIDO! Informe-o novamente !", vbCritical
    DoCmd.CancelEvent
    End If
    End Function

    ---------------------------------------------------------------------------------

    E no evento ao sair do campo CPF, coloquei o código abaixo.....

    Private Sub CPF_Exit(Cancel As Integer)

    'Este if verifica o controle que está o foco, se estiver nulo ou em branco então
    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
    Cancel = True
    End If
    End Sub

    -------------------------------------------------------------------------------------------------

    Bem, o que ainda me falta é um jeito de deixar vazio o campo CPF caso ele seja digitado errado.
    Os códigos acima apenas me dão uma noção do que está ocorrendo com o CPF, ou seja, se deixo vazio, ele acusa, mas passa ao campo seguinte. Se digito um CPF que já existe ele me avisa que já há um CPF igual.
    Mas preciso que ele seja zerado no caso de ser um CPF inválido e que eu consiga ir para o campo seguinte.

    Alguma luz aí pessoal ?

    Grato,

    Edu Cav
    avatar
    Qualhada
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 22/11/2016

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  Qualhada 9/12/2016, 14:41

    ola, bom dia a todos
    estou começando a aprender o access vba, e gostaria que vocês me ajudasse.
    como fazer para validar o CNPJ em uma classe, só que chamando essa função valida CNPJ pelo método let da classe.
    é possível?
    KALEF
    KALEF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 07/08/2017

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  KALEF 6/9/2017, 15:57

    Link com erro
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  JPaulo 6/9/2017, 17:13

    Links ON.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido] Como valido cpf e cnpj em vba no access? Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido] Como valido cpf e cnpj em vba no access? Empty Re: [Resolvido] Como valido cpf e cnpj em vba no access?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 01:09