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

    [Resolvido]Gerar digito controlo BI

    Compartilhe
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    [Resolvido]Gerar digito controlo BI

    Mensagem  toyebom em 9/8/2018, 01:08

    Alguém sabe o código ou tem um exemplo para gerar o digito de controlo do antigo Bilhete de Identidade Português?
    Não é para validar é mesmo para gerar.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1979
    Registrado : 13/04/2012

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  Fernando Bueno em 9/8/2018, 02:05

    Boa noite;

    Precisaria saber como é feito o calculo do digito verificador mais acredito que não

    fuja muito [Você precisa estar registrado e conectado para ver este link.] que postei que gera cnpj válido.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 488
    Registrado : 13/12/2016

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  Alexandre Fim em 9/8/2018, 05:17

    Olá toyebom

    Leia este artigo:
    mat.uc.pt/~picado/SistIdent/mistBI.html

    E tem esse fórum tmb.
    portugal-a-programar.pt/forums/topic/1869-o-famoso-numero-do-quadradinho-no-bi/

    boa sorte
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  JPaulo em 9/8/2018, 10:17

    Ola a todos;

    Já existe aqui desde 2012;

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

    Usem sempre a busca do fórum por favor.


    .................................................................................
    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.]

    Ou ainda: Aqui (Novo)

    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.]
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    Gerar digito controlo BI

    Mensagem  toyebom em 9/8/2018, 17:52

    Obrigado JPaulo já tinha visto esse exemplo mas eu quero é que gere o digito em vez de o validar.
    No teu exemplo tem-se conhecimento do digito mas eu não tenho o digito por isso tenho de o gerar.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  Alexandre Neves em 9/8/2018, 22:23

    Boa noite,
    Utilize a função
    Código:
    Function BiDv(NrBI As String) As String
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim DV As Long
       
        BiDv = format(NrBI, "00000000")
        DV = Mid(BiDv, 8, 1) * 2
        DV = DV + Mid(BiDv, 7, 1) * 3
        DV = DV + Mid(BiDv, 6, 1) * 4
        DV = DV + Mid(BiDv, 5, 1) * 5
        DV = DV + Mid(BiDv, 4, 1) * 6
        DV = DV + Mid(BiDv, 3, 1) * 7
        DV = DV + Mid(BiDv, 2, 1) * 8
        DV = DV + Mid(BiDv, 1, 1) * 9
        Select Case DV Mod 11
        Case 0 Or 1
            BiDv = NrBI & "0"
        Case Else
            BiDv = NrBI & 11 - DV Mod 11
        End Select
    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
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    Gerar digito controlo BI

    Mensagem  toyebom em 9/8/2018, 23:23

    Desculpa Alexandre, nesta parte do digito sou muito leigo. Consegues-me criar uma bd de exemplo para eu estudar como aplicar o código é que já dei algumas cabeçadas no pc e não descobri como aplicar, sei que tenho de chamar o código mas não sei como.
    Obrigado.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  ahteixeira em 9/8/2018, 23:57

    Olá a todos,

    Nuno, cole o código num módulo.
    Depois talvez seja melhor alterar de:
    Function
    Para:
    Public Function

    Assim fica disponível para os forma, consultas, etc

    Para testar, invocamos a função, tal como fazemos para calcular a idade, passamos a data de nascimento à função.

    Neste caso, invocamos a função, passando o nr. do BI sem o digito verificador.
    Por exemplo crie uma consulta com o nr. do BI
    Depois noutro campo coloque:

    DigitoVerificador: BiDV([NomeCampoComNrBI])

    E teste.

    Abraço
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    Gerar digito controlo BI

    Mensagem  toyebom em 10/8/2018, 10:57

    Alexandre neves, o teu código funciona contudo existe um erro, caso termine em 0 acrescenta um numero ou seja, em vez de ficar 293469350 fica 2934693511, alguma ideia?


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  Alexandre Neves em 10/8/2018, 13:47

    Boa tarde,
    Existe o BI 293469350? Julgo que não, que só tem até 8 algarismos e o número é que estará mal. Confirme


    .................................................................................
    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
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  ahteixeira em 10/8/2018, 15:54

    Olá a todos,

    Nuno, efetivamente é conforme o colega Alexandre disse.
    Tive oportunidade de testar e de verificar que realmente está a calcular o dígito como 11.

    Para regularizar a função, onde está:
    Código:
           BiDv = NrBI & 11 - DV Mod 11

    altere por:
    Código:
           BiDv = NrBI & (11 - DV) Mod 11

    Abraçoa todos
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    Gerar digito controlo BI

    Mensagem  toyebom em 10/8/2018, 16:22

    Efetivamente esse numero não existe mas está correto, não é numero de BI mas é um outro que utiliza o mesmo do módulo 11
    O numero 29346935 retorna o numero 11 e deveria retornar o numero 0

    o formato final é que fica com os 9 dígitos juntando o de controlo como resultado final
    Deveria ficar
    293469350
    fica
    2934693511

    Se colocar
    BiDv = NrBI & (11 - DV) Mod 11
    fica
    29346935-11
    ou seja
    Numero       --->29346935
    D. Controlo  --->0

    E fica
    Numero       --->29346935
    D. Controlo  --->11

    O exemplo que o JPaulo dá na mensagem 4 mostra como proceder ao tratamento desse erro mas não sei aplicar. Se der para aplicar ao código do Alexandre Neves será mais fácil já que funciona na perfeição só gera os dois dígitos em vez de 1 em alguns casos.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  ahteixeira em 10/8/2018, 16:46

    Olá Nuno,

    Verifique melhor como está a fazer, veja o teste com o nº 29346935

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


    Se pretende através da função apenas obter o dígito de verificação e depois pode concatenar com o nº, efetue a alteração conforme imagem:

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

    Abraço
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    Gerar digito controlo BI

    Mensagem  toyebom em 10/8/2018, 18:51

    Continua com o mesmo problema ve:

    Por exemplo o 29346935 deveria retornar 0 e não 11 e o 29346949 também 0 e não 11
    Anexos
    Gerar Digito BI - Cópia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (128 Kb) Baixado 6 vez(es)


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  ahteixeira em 11/8/2018, 12:45

    Olá Nuno,

    O exemplo que disponibilizou, não tem a alteração da mensagem nº 11, veja:

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

    Leia com atenção e proceda conforme sugestão.
    Abraço
    avatar
    toyebom
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 1058
    Registrado : 18/07/2012

    Gerar digito controlo BI

    Mensagem  toyebom em 12/8/2018, 01:54

    Obrigado, já alterei ficou resolvido.


    .................................................................................
    Gente Simples, fazendo coisas pequenas, em lugares pouco importantes, consegue mudanças extraordinárias.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Gerar digito controlo BI

    Mensagem  ahteixeira em 12/8/2018, 15:45

    Olá a todos, obrigado pela contribuição!
    Em especial ao moderador Alexandre Neves que criou o código da solução.

    Nuno, obrigado pelo retorno.

    cheers

      Data/hora atual: 21/10/2018, 22:33