AJUDA COM APLICACAO DE VALIDACAO NIF

CRACKER 05/05/2012 20:30:51
#401431
Boa noite a esta grande comunidade.

Estou com um pequeno problema numa aplicação que estou a desenvolver e preciso de ajuda a ver se fica a funcar.
O problema está unicamente em chamar a mensagem de erro quando o número está errado, ou então começa por 0,3,4 ou 7.
Passo explicar melhor: estou a criar um validador de NIF(Número de Contribuinte aqui em Portugal, equivalente ao CPF no Brasil).

O meu código está assim:

  Imports System.IO
Imports System.Text

Public Class Form1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim s As String = TextBox1.Text
Dim c As Char
Dim i, checkDigit As Integer
Dim res As MsgBoxResult

If (s.Length = 9) Then
c = s.Chars(0)

If (c.Equals([Ô]1[Ô]c) Or c.Equals([Ô]2[Ô]c) Or c.Equals([Ô]5[Ô]c) Or c.Equals([Ô]6[Ô]c) Or c.Equals([Ô]8[Ô]c) Or c.Equals([Ô]9[Ô]c)) Then
checkDigit = Val(c) * 9

For i = 2 To 8
checkDigit += Val(s.Chars(i - 1)) * (10 - i)
Next
checkDigit = 11 - (checkDigit Mod 11)

If (checkDigit >= 10) Then checkDigit = 0
If (checkDigit = Val(s.Chars(8))) Then
MessageBox.Show([Ô]Número NIF válido[Ô], [Ô]test vat[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
If TextBox1.Text.Equals([Ô]0[Ô]c) Then
MessageBox.Show([Ô]Número NIF Inválido[Ô], [Ô]teste vat[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End If
End If

End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
TextBox1.MaxLength = 9
TextBox1.Focus()
End Sub


A tela do programa:


O problema está mesmo no final .... a mensagem de erro teima em não aparecer

Já tentei várias localizações para ela, enfim um pouco de tudo...

Obrigado desde já a quem me possa ilucidar sobre este problema.
LUCASVAZ 07/05/2012 09:36:17
#401472
Caro Cracker, bom dia.

E se você mudar o if TextBox1.Text.Equals([Ô]0[Ô]c) then para if c.Equals([Ô]0[Ô]c) then

Att,

Se não ajudar, tente postar um projeto semelhante em anexo para podermos executar e analisar.
Lucas
AJSO 07/05/2012 13:02:44
#401484
Resposta escolhida
Caro CRACKER

Não pode colocar um IF dentro de outro pois sua lógica está errada, para utilizar o IF dentro de outro para cada if tem que ter um else com a msg de erro



Boa sorte
CRACKER 07/05/2012 15:31:51
#401497
Muito obrigado pelo vosso rápido esclarecimento. vou então alterar o código e depois digo algo.

CRACKER 07/05/2012 18:16:42
#401507
Pois bem, após muito tentar, pesquisar infos na net e de ler alguns tópicos aqui pelo forum....

Finalmente consegui colocar a aplicação a funcionar como eu pretendi a e ainda adicionei um help nela.
Aqui fica o ficheiro com o codigo fonte completo e o executável dela.

Obrigado a todos. Mas ainda vou tentar melhora-la a fim de dar erro quando um número não permitido, letra ou outro caracter não permitido fôr escrito na textbox.


As instruções de uso da aplicação estão escritas no botão Help: basta clicar nele e depois no botão ou na caixa de texto.

Aqui fica a aplicação em anexo.

AJSO 07/05/2012 20:03:51
#401508
Caro CRACKER

Dê uma olhada nessa pequena modificação que fiz no seu projeto


Boa Sorte
CRACKER 08/05/2012 16:07:35
#401563



Caro AJSO

Acabei de testar a aua nova versão e era exactamente tudo o que eu pretendia implementar nela!!! Valeu pela ajuda.

Ficou demais. Muito obrigado pela ajuda.
AJSO 09/05/2012 11:48:45
#401633
Citação:

:



Caro AJSO

Acabei de testar a aua nova versão e era exactamente tudo o que eu pretendia implementar nela!!! Valeu pela ajuda.

Ficou demais. Muito obrigado pela ajuda.



Blz iss ai qq coisa


Só não esqueca de pontuar.................



Boa sorte
Tópico encerrado , respostas não são mais permitidas