domingo, 11 de maio de 2014

13. VALIDANDO DADOS


13. VALIDANDO DADOS

            Este assunto é extremamente amplo, as necessidades são muitas e você pode usar a criatividade para validar praticamente qualquer coisa.

            No nosso caso, vamos aproveitar o formulário que estamos criando e incrementá-lo para fazer a validação do CPF. Insira este novo campo.



Já fizemos este código no item 10.3 do nosso curso,  agora vamos apenas adapta-lo ao nosso formulário. Very Easy!!!



Private Sub Cb_Salvar_Click()

    Success = CPF(Replace(Replace(Txt_CPF, ".", ""), "-", ""))  'uso Sucess porque a função precisa retornar algum valor

    'o Replace é usado é usado para tirar o ponto e o hífem

    If Success = "Invalido" Then: Exit Sub          'se não for um CPF válido, sai da rotina

Salva_Reg

    Limpa_Reg

End Sub


Observe que em vermelho, fizemos uma chamada para a função CPF, que está abaixo:

            Agora, veja a função. Observe que tá tudo explicadinho nos mínimos detalhas. Mas se houver alguma dúvida, você pode consultar o item 10.3.

Function CPF(NUMEROCPF As String) As String 'EXCELECIA.BLOGSPOT.COM

    'Declaramos as variáveis S1 e S2 para receberem a soma. A variável QD, ficará com o número de digitos do CPF. A variável I será o contador.

    'A variável D, receberá o DV calculado. As variáveis R1 e R2, receberão o resto das divisões. Finalmente, DV1 e DV2, receberão os dígitos calculados.

    Dim S1, S2, QD, I, D As Integer

    Dim R1, R2 As Integer

    Dim DV1, DV2 As Integer '

    SOMA1 = 0 'Inicializamos as somas como zero.

    SOMA2 = 0

    QD = 11 'A quantidade de digitos de um CPF é 11.

    'Criamos um LOOP que será executado 11 vezes

    For I = 1 To 11 Step 1

        'D absorverá cada digito do CPF. A cada giro do loop, ele será um número diferente, sendo um de cada vez

        D = Val(Mid$(NUMEROCPF, I, 1))

        'Para calcularmos o 1º DV, precisamos vazer o calculo como explicado no capítulo. Repare que as duas somas são realizadas de uma só vez.

        If I <= 9 Then

            S1 = S1 + D * (QD - 1)

        End If

        If I <= 10 Then

            S2 = S2 + D * QD

        End If

        'Precisamos decrementar esta variável para que os números possam decrescer.

        QD = QD - 1

    Next

    'Agora é só descobrir o resto da divisão para usarmos a regra e encontrar os DVs.

    R1 = S1 Mod 11

    If (R1 <= 1) Then

        DV1 = 0

    Else

        DV1 = 11 - R1

    End If

        R2 = S2 Mod 11

    If (R2 <= 1) Then

        DV2 = 0

    Else

        DV2 = 11 - R2

    End If

    'Se tanto o DV1, com o DV2 forem diferentes do digito 10 e 11 respectivamente do CPF analisado,o mesmo será invalido, do contrário, válido! Pronto,está feito.

    If (DV1 <> Val(Mid$(NUMEROCPF, 10, 1))) Or (DV2 <> Val(Mid$(NUMEROCPF, 11, 1))) Then

        CPF = "Invalido"

    Else

        CPF = "Valido"

    End If

   

    If CPF = "Invalido" Then

        MsgBox "Este não é um CPF válido", vbOKOnly + vbCritical, "CPF INVÁLIDO"

        'Txt_CPF = ""

        Txt_CPF.SetFocus

       

    End If

End Function

Após o usuário digitar o número do CPF e clicar em salvar, a função verificará se trata-se de um CPF válido. Caso positivo, a informação será salva, do contrário, uma mensagem será exibida, exigindo a digitação de um número válido. Fácil demais.

Até o próximo capítulo.

Para acessar o curso completo Clique aqui

Nenhum comentário: