Desenvolvimento - Visual Basic .NET

Validando números de CPF utilizando WEBApplication e VB.NET

Na maioria das aplicações desenvolvidas para internet onde existem cadastros de clientes ou usuários, sempre é necessário verificarmos se o C.P.F. digitado pelo usuário é ou não válido...

por Israel Aéce



Na maioria das aplicações desenvolvidas para internet onde existem cadastros de clientes ou usuários, sempre é necessário verificarmos se o C.P.F. digitado pelo usuário é ou não válido.

Para isso criamos a seguir uma função para que possamos utiliza-la em todo nosso projeto.

Abra o Visual Studio .NET e abra um novo projeto do tipo ASP.NET WebApplication.
Nesse mesmo projeto crie os seguintes controles (WebControls) no seu WebForm:

TextBox
ID: txtCPF
Custom Validator
	ID: cvCPF
	Error Message: "C.P.F. Inválido."
	ControltoValidate: txtCPF
Button
	ID: cmdValidar
	Text: Validar		
Label
	ID: lblMensagem
	Text: "C.P.F.: Válido."
	ForeColor: Red
	Visible: False
Sua página (WebForm) ficará como:

Depois de criado o WebForm adicione um módulo ao seu projeto. Para isso vá no Menu Project - Add New Item, selecione um "Module" e salve como Validacao.vb.

Criaremos a função de verificação em um módulo para que possamos utiliza-la em qualquer parte do projeto.

Primeiramente deveremos declarar todas as variáveis que utilizaremos:

A função "VerificaCPF" recebe como parâmetro o número do CPF do cliente. Ela retornará um valor booleano. Se retornar True o CPF é válido, caso contrário ele retornará False.

A variável "strCPFOriginal" recebe o parâmetro e retiramos os pontos "." e o hífen "-".

Armazenamos na variável "strCPF" o número do CPF sem os dois últimos dígitos. Isso porque devemos verificar se os dois últimos dígitos informados pelo usuário são válidos para o CPF. Devemos levar em consideração que o formato do C.P.F. é XXX.XXX.XXX-XX.

Depois disso, multiplicamos cada número da variável "strCPF" por contador que é iniciado com o valor 10 ("intMultiplicador") e decrementando este contador de 1 em 1 e somamos à variável "intSoma".

Resgatamos o resto da divisão da variável "intSoma". Se for menor que 2 assumiremos 0. Caso contrário subtraímos da constante "constIntMultiplicador" o resto da divisão da variável "intSoma" pela constante "constIntMultiplicador".

Armazenamos na variável "strDigito" o primeiro dígito que descobrimos. Zeramos a variável "intSoma" para agora acharmos o segundo dígito.

Na variável "strCPFTemp" armazenamos o CPF original sem os dígitos (o valor está armazenado na variável "strCPF") junto com o primeiro dígito que descobrimos (o valor está armazenado na variável "strDigito").

Agora a variável "intMultiplicador" recebe o valor 11 porque adicionamos um novo número no CPF.

Depois disso, multiplicamos cada número da variável "strCPFTemp" por contador que é iniciado com o valor 11 ("intMultiplicador") e decrementando este contador de 1 em 1 e somamos à variável "intSoma".

Resgatamos o resto da divisão da variável "intSoma". Se for menor que 2 assumiremos 0. Caso contrário subtraímos da constante "constIntMultiplicador" o resto da divisão da variável "intSoma" pela constante "constIntMultiplicador".

Logo conseguimos o valor do segundo dígito. Atribuímos esse valor à variável "strDigito" qual está sendo responsável para armazenar os dígitos.

Finalmente verificamos se os dois dígitos que conseguimos coincidem com os dois últimos dígitos informados pelo usuário.

Se forem iguais a função retornará True, caso contrário False.

Depois de criada a função basta utilizarmos no evento "ServerValidate" do Custom Validator, passando como parâmetro o conteúdo da caixa de texto (txtCPF).

E no evento "Click" do Botão "Validar" verificamos se não ocorreu nenhum erro na página. Se retorna True visualizamos o "label" com a de que o C.P.F. está válido. Caso contrário o Custom Validator mostrará a mensagem "C.P.F. Inválido" e com isso ocultamos o "label".

O código ficará assim:

O Código na integra da função "VerificaCPF" está logo abaixo:

Module Validacao

    Public Function VerificaCPF(ByVal strCPFCliente As String) As Boolean

        "--Declaração das Variáveis
        Dim strCPFOriginal As String = strCPFCliente.Replace(".", "").Replace("-", "")
        Dim strCPF As String = Mid(strCPFOriginal, 1, 9)
        Dim strCPFTemp As String
        Dim intSoma As Integer
        Dim intResto As Integer
        Dim strDigito As String
        Dim intMultiplicador As Integer = 10
        Const constIntMultiplicador As Integer = 11
        Dim i As Integer
        "--------------------------

        For i = 0 To strCPF.ToString.Length - 1
            intSoma += CInt(strCPF.ToString.Chars(i).ToString) * intMultiplicador
            intMultiplicador -= 1
        Next

        If (intSoma Mod constIntMultiplicador) < 2 Then
            intResto = 0
        Else
            intResto = constIntMultiplicador - (intSoma Mod constIntMultiplicador)
        End If

        strDigito = intResto
        intSoma = 0

        strCPFTemp = strCPF & strDigito
        intMultiplicador = 11

        For i = 0 To strCPFTemp.Length - 1
            intSoma += CInt(strCPFTemp.Chars(i).ToString) * intMultiplicador
            intMultiplicador -= 1
        Next

        If (intSoma Mod constIntMultiplicador) < 2 Then
            intResto = 0
        Else
            intResto = constIntMultiplicador - (intSoma Mod constIntMultiplicador)
        End If

        strDigito &= intResto

        If strDigito = Mid(strCPFOriginal, 10, strCPFOriginal.Length) Then
            Return True
        Else
            Return False
        End If

    End Function

End Module

Faça o download do código: Validacao.zip.

Israel Aéce

Israel Aéce - Especialista em tecnologias de desenvolvimento Microsoft, atua como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. Como instrutor Microsoft, leciona sobre o desenvolvimento de aplicações .NET. É palestrante em diversos eventos Microsoft no Brasil e autor de diversos artigos que podem ser lidos a partir de seu site http://www.israelaece.com/. Possui as seguintes credenciais: MVP (Connected System Developer), MCP, MCAD, MCTS (Web, Windows, Distributed, ASP.NET 3.5, ADO.NET 3.5, Windows Forms 3.5 e WCF), MCPD (Web, Windows, Enterprise, ASP.NET 3.5 e Windows 3.5) e MCT.