TRATAR CPF

DUPIVETTA 24/08/2013 14:44:27
#428054
Olá, estou tentando tratar o cpf no projeto do meu TCC, mas estou com um probleminha na hora de rodar a classe, abaixo segue o meu código

Public Class Form1

Private Sub formatacpf(ByVal txtCPF As Object)
txtCPF.MaxLength = 14
If Len(txtCPF.Text) = 3 Then
txtCPF.Text = txtCPF.Text & [Ô].[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
ElseIf Len(txtCPF.Text) = 7 Then
txtCPF.Text = txtCPF.Text & [Ô].[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
ElseIf Len(txtCPF.Text) = 11 Then
txtCPF.Text = txtCPF.Text & [Ô]-[Ô]
txtCPF.SelectionStart = Len(txtCPF.Text) + 1
End If
End Sub

Private Sub txtCPF_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCPF.KeyPress

If IsNumeric(e.KeyChar) AndAlso txtCPF.TextLength < txtCPF.MaxLength Then
txtCPF.Text &= e.KeyChar
txtCPF.SelectionStart = txtCPF.TextLength
Call formatacpf(txtCPF)
End If
e.Handled = True
End Sub

Private Sub btnValidarCPF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValidarCPF.Click
Dim confcpf As New Valida_CNPJ_CPF

If txtCPF.Text = [Ô][Ô] Then
MsgBox([Ô]CPF Inválido[Ô])
txtCPF.Focus()
End If

[ô]CPF = CPF.ToString.Trim

If confcpf.isCpfValido() Then
MsgBox([Ô]CPF valido[Ô])
Else
MsgBox([Ô]CPF Inválido[Ô])
txtCPF.Clear()
End If
End Sub


End Class


Public Class Valida_CNPJ_CPF

Private dadosArray() As String = {[Ô]000.000.000-00[Ô], [Ô]111.111.111-11[Ô], [Ô]222.222.222-22[Ô], [Ô]333.333.333-33[Ô], [Ô]444.444.444-44[Ô], [Ô]555.555.555-55[Ô], [Ô]666.666.666-66[Ô], [Ô]777.777.777-77[Ô], [Ô]888.888.888-88[Ô], [Ô]999.999.999-99[Ô]}

Private Const msgErro As String = [Ô]Dados Inválidos[Ô]
Private bValida As Boolean
Private sCPF As String
Private sCNPJ As String

Public Property cpf() As String
Get
Return sCPF
End Get
Set(ByVal Valor As String)
bValida = ValidaCPF(Valor)
If bValida Then
sCPF = Valor
Else
Throw (New System.ArgumentException(msgErro, [Ô]Numero do CPF[Ô]))
Form1.txtCPF.Clear()
Form1.txtCPF.Focus()
End If
End Set
End Property

Public ReadOnly Property isCpfValido() As Boolean
Get
bValida = ValidaCPF(cpf)
If bValida Then
Return True
Else
Return False
End If
End Get
End Property

Private Function ValidaCPF(ByVal CPF As String) As Boolean

Dim i, x, n1, n2 As Integer

If CPF <> [Ô][Ô] Then
CPF = CPF.Trim()
Else
MsgBox([Ô]CPF Inválido[Ô])
Form1.txtCPF.Clear()
Form1.txtCPF.Focus()
End If



For i = 0 To dadosArray.Length - 1
If dadosArray(i).Equals(CPF) Then
Return False
End If
Next

[ô]Aqui está dando erro, a mensagem pede para usar a palavra “new” para criar uma instância do objeto

CPF = CPF.Substring(0, 3) + CPF.Substring(4, 3) + CPF.Substring(8, 3) + CPF.Substring(12)



For x = 0 To 1
n1 = 0

For i = 0 To 8 + x
n1 = n1 + Val(CPF.Substring(i, 1)) * (10 + x - i)
Next

n2 = 11 - (n1 - (Int(n1 / 11) * 11))

If n2 = 10 Or n2 = 11 Then n2 = 0

If n2 <> Val(CPF.Substring(9 + x, 1)) Then
Return False
End If

Next

Return True

End Function

End Class
NILSONTRES 24/08/2013 16:02:34
#428056
Resposta escolhida
Public Function isCPF(ByVal CPF As String) As Boolean
Dim conta As Integer, soma As Integer, resto As Integer, Passo As Integer
isCPF = False
CPF = Trim(CPF)
CPF = Replace(CPF, [Ô].[Ô], [Ô][Ô])
CPF = Replace(CPF, [Ô]-[Ô], [Ô][Ô])
If Len(CPF) <> 11 Then
Exit Function
End If
For Passo = 11 To 12
soma = 0
For conta = 1 To Passo - 2
soma = soma + Val(Mid(CPF, conta, 1)) * (Passo - conta)
Next
resto = 11 - (soma - (Int(soma / 11) * 11))
If resto = 10 Or resto = 11 Then resto = 0
If resto <> Val(Mid(CPF, Passo - 1, 1)) Then
Exit Function
End If
Next
isCPF = True
End Function

Acima função bem simples para validar cpf, e para formatar utilize um maskeditbox.
Para chamar a função:
If isCPF(TXT_CPF.Text.Trim) = False Then
MsgBox([Ô][Ô][Ô]CPF[Ô][Ô] Inválido[Ô], vbCritical, [Ô]Aviso[Ô])
Exit Sub
End If
DUPIVETTA 26/08/2013 01:35:59
#428102
caro NILSONTRES

desculpa meu amigo, mas eu não entendi onde eu coloco esse código?
FELLIPEASSIS 26/08/2013 12:09:56
#428117
Citação:

:
caro NILSONTRES

desculpa meu amigo, mas eu não entendi onde eu coloco esse código?


crie um metodo ou coloque em um modulo, ai coloque essa parte
If isCPF(TXT_CPF.Text.Trim) = False Then
MsgBox([Ô][Ô][Ô]CPF[Ô][Ô] Inválido[Ô], vbCritical, [Ô]Aviso[Ô])
Exit Sub
no evento validading do maskedtextbox, fica melhor doque colocar um botão
NILSONTRES 26/08/2013 13:31:24
#428128
Citação:

desculpa meu amigo, mas eu não entendi onde eu coloco esse código?



A Função ou a chamada dela ?
Na verdade não tem diferença do que vc já esta fazendo, só altere a função e a chamada.
DUPIVETTA 26/08/2013 16:30:50
#428133
NILSONTRES

vlw meu amigo, muito obrigado mesmo
Tópico encerrado , respostas não são mais permitidas