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écePara 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: FalseSua 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
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET