MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Controlo do numero de Contribuinte (NIF) - Português

    Compartilhe

    Luis F
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 18/10/2013

    Controlo do numero de Contribuinte (NIF) - Português

    Mensagem  Luis F em Dom 20 Out 2013, 17:25

    Boa tarde,

    gostaria de saber se alguém sabe qual a função de verificar se o nº de contribuinte (Português - NIF) é valido?

    Ou seja:

    No formulário "F_GERAL" no campo [NIF] ao introduzir o NIF do cliente caso esteja mal ele avisar que "o NIF introduzido não é correto!".

    O mesmo gostaria para o NIB (nº da conta bancária).

    Eu já vi programas que controlam isso ...

    Obrigado
    LF
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6441
    Registrado : 05/11/2009

    Re: Controlo do numero de Contribuinte (NIF) - Português

    Mensagem  Alexandre Neves em Dom 20 Out 2013, 17:51

    Boa tarde,
    Não onde fui buscar (ou criei?)
    Public Function ValidoContribuinte(ByVal contrib As String) As Boolean
    'validação do NIF

    Dim s As Long
    Dim I, checkDigit As Integer
    Dim dblDivisao As Double

    ValidoContribuinte = False
    checkDigit = 0

    If contrib < 10000000 Or contrib > 999999999 Then

    Exit Function
    End If

    If (Mid(contrib, 1, (1)) = 1 Or Mid(contrib, 1, (1)) = 2 Or Mid(contrib, 1, (1)) = 5 Or Mid(contrib, 1, (1)) = 6 Or Mid(contrib, 1, (1)) = 8 Or Mid(contrib, 1, (1)) = 9) Then
    Else
    Exit Function
    End If

    For I = 1 To 8
    checkDigit = checkDigit + (Mid(contrib, I, (1)) * (10 - I))
    Next

    dblDivisao = checkDigit / 11
    s = Int(dblDivisao) * 11
    checkDigit = checkDigit - s

    If (checkDigit = 0 Or checkDigit = 1) Then

    checkDigit = 0
    Else
    checkDigit = 11 - checkDigit
    End If

    If (checkDigit = Mid(contrib, 9, (1))) Then
    ValidoContribuinte = True
    End If


    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Luis F
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 18/10/2013

    Re: Controlo do numero de Contribuinte (NIF) - Português

    Mensagem  Luis F em Dom 20 Out 2013, 19:01

    Alexandre Neves,

    Obrigado pela ajuda.

    Agora só preciso mesmo é para o NIB (Conta Bancária)

    Smile
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6441
    Registrado : 05/11/2009

    Re: Controlo do numero de Contribuinte (NIF) - Português

    Mensagem  Alexandre Neves em Dom 20 Out 2013, 19:05

    A mesma dúvida da origem
    Public Function ValidoNIB(ByVal NIB As String) As Integer

    Dim s As Long
    Dim I, I2, checkDigit As Integer
    Dim nib_auxiliar As String
    Dim Tabela_pesos(31) As Byte
    Dim Tabela_bancos(40) As Integer
    Dim dblDivisao As Double

    '1 = NIB INVÁLIDO" 'check digit inválido
    '2 = comprimento do NIB INVÁLIDO"
    '3 = banco do NIB INVÁLIDO"

    ValidoNIB = 1

    Tabela_pesos(1) = 85
    Tabela_pesos(2) = 57
    Tabela_pesos(3) = 93
    Tabela_pesos(4) = 19
    Tabela_pesos(5) = 31
    Tabela_pesos(6) = 71
    Tabela_pesos(7) = 75
    Tabela_pesos(Cool = 56
    Tabela_pesos(9) = 25
    Tabela_pesos(10) = 51
    Tabela_pesos(11) = 73
    Tabela_pesos(12) = 17
    Tabela_pesos(13) = 89
    Tabela_pesos(14) = 38
    Tabela_pesos(15) = 62
    Tabela_pesos(16) = 45
    Tabela_pesos(17) = 53
    Tabela_pesos(18) = 15
    Tabela_pesos(19) = 50
    Tabela_pesos(20) = 5
    Tabela_pesos(21) = 49
    Tabela_pesos(22) = 34
    Tabela_pesos(23) = 81
    Tabela_pesos(24) = 76
    Tabela_pesos(25) = 27
    Tabela_pesos(26) = 90
    Tabela_pesos(27) = 9
    Tabela_pesos(28) = 30
    Tabela_pesos(29) = 3
    Tabela_pesos(30) = 10
    Tabela_pesos(31) = 1

    Tabela_bancos(1) = 7 ' deve acrescentar os códigos de banco que conheça para validar o banco.
    Tabela_bancos(2) = 10
    Tabela_bancos(3) = 12
    Tabela_bancos(4) = 18
    Tabela_bancos(5) = 32
    Tabela_bancos(6) = 33
    Tabela_bancos(7) = 35
    Tabela_bancos(Cool = 36
    Tabela_bancos(9) = 43

    nib_auxiliar = 0
    nib_auxiliar = NIB
    I = 1
    checkDigit = 0

    If nib_auxiliar < 1E+17 Or nib_auxiliar > 1E+21 Then

    ValidoNIB = 2
    Exit Function
    End If

    s = 0

    For I2 = 1 To 9
    If Mid(nib_auxiliar, 1, (4)) = Tabela_bancos(I2) Then
    s = 1
    End If
    Next

    If s = 0 Then
    ValidoNIB = 3
    Exit Function
    End If

    For I = I To 19
    checkDigit = checkDigit + (Mid(nib_auxiliar, I, (1)) * Tabela_pesos(I + 10))
    Next

    dblDivisao = checkDigit / 97
    s = Int(dblDivisao) * 97
    checkDigit = checkDigit - s
    checkDigit = 98 - checkDigit

    If (checkDigit = Mid(nib_auxiliar, 20, (2))) Then
    ValidoNIB = 0
    End If


    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9676
    Registrado : 04/11/2009

    Re: Controlo do numero de Contribuinte (NIF) - Português

    Mensagem  JPaulo em Dom 20 Out 2013, 22:26

    Ja existe quase de tudo por aqui, era só usar a busca do forum,

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Sab 21 Out 2017, 20:37