MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    Dígito Verificador de Certidão de Nascimento

    Compartilhe

    Rosivaldo Melo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 30/09/2011

    Dígito Verificador de Certidão de Nascimento

    Mensagem  Rosivaldo Melo em Sex 15 Abr 2016, 03:42

    Olá a todos, estou com problemas para gerar o DV da Certidão de Nascimento, por favor, me ajudem.
    Abaixo a Rotina que deve ser feita. Obrigado.

    1  0  4  5  3  9  0  1  5  5  2  0  1  3  1  0  0  0  1  2  0  2  1  0  0  0  0  1  2  3 = 2              
    x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x
    2  3  4  5  6  7  8  9 10  0  1  2  3  4  5  6  7  8  9 10  0  1  2  3  4  5  6  7  8  9
    -----------------------------------------------------------------------------------------                  
    2+ 0+16+25+18+63+ 0+ 9+50+ 0+ 2+ 0+ 3+12+ 5+ 0+ 0+ 0+ 9+20+ 0+ 2+ 2+ 0+ 0+ 0+ 0+ 7+16+27 = 288

    288÷11=26, com resto 2 (este é o 1º dígito do DV) - Nota: se o resto for "10", o DV será "1"

    1  0  4  5  3  9  0  1  5  5  2  0  1  3  1  0  0  0  1  2  0  2  1  0  0  0  0  1  2  3  2 = 1
    x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x
    1  2  3  4  5  6  7  8  9 10  0  1  2  3  4  5  6  7  8  9 10  0  1  2  3  4  5  6  7  8  9
    --------------------------------------------------------------------------------------------
    1+ 0+12+20+15+54+ 0+ 8+45+50+ 0+ 0+ 2+ 9+ 4+ 0+ 0+ 0+ 8+18+ 0+ 0+ 1+ 0+ 0+ 0+ 0+ 6+14+24+18 = 309

    309÷11=28, com resto 1 (este é o 2º dígito do DV) - Nota: se o resto for "10", o DV será "1"

    Portanto, o Número de Matrícula+DV = 104539.01.55.2013.1.00012.021.0000123-21


    Cálculo extraído do site: ghiorzi.org/DVnew.htm

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3350
    Registrado : 04/04/2010

    Re: Dígito Verificador de Certidão de Nascimento

    Mensagem  Avelino Sampaio em Sex 15 Abr 2016, 13:53

    Olá!

    veja um exemplo de programação para validar o CNPJ / CPF. Pode lhe ajudar em adaptar a programação

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

    Bom estudo!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    Rosivaldo Melo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 30/09/2011

    Não consegui adaptar.

    Mensagem  Rosivaldo Melo em Sab 16 Abr 2016, 16:13

    Há uma função simplificada do Mestre Criquio que é a seguinte:

    Private Sub txtNumero_AfterUpdate()
    Dim N as Integer, P As Integer, S As Integer, D As Double

    ' Primeiro DV

    For N = 1 To 9
    P = (P +Mid(Me.txtNumero, N, 1) * N) Mod 11
    Next

    If P < 3 Or P > 9 then
    P = 0
    End If

    D = Me.txtNumero & P

    ' Segundo DV

    For N = 1 To 10
    S = (S+(Mid(Me.txtNumero, N, 1) * (N - 1)) Mod 11
    Next

    If S < 3 Or S > 9 Then
    S = 0
    End If
    Me.txtDigito = P & S

    '-----
    'Há possibilidade de Adaptá-la ao que preciso? Obrigado

    Rosivaldo Melo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 30/09/2011

    Código simples - Consegui

    Mensagem  Rosivaldo Melo em Sab 16 Abr 2016, 18:08

    Consegui executar da maneira mais trabalhosa, caso haja uma forma mais simples, agradeço se informarem. Obrigado

    Private Sub Comando16_Click()
    Dim DV1 As Integer, DV2 As Integer, RES As Integer, RES2 As Integer

    Me.t1.Value = Mid(Serventia, 1, 1)
    Me.t2.Value = Mid(Serventia, 2, 1)
    Me.t3.Value = Mid(Serventia, 3, 1)
    Me.t4.Value = Mid(Serventia, 4, 1)
    Me.t5.Value = Mid(Serventia, 5, 1)
    Me.t6.Value = Mid(Serventia, 6, 1)
    Me.t7.Value = Mid(Acervo, 1, 1)
    Me.t8.Value = Mid(Acervo, 2, 1)
    Me.t9.Value = Mid(Cod55PessoasNaturais, 1, 1)
    Me.t10.Value = Mid(Cod55PessoasNaturais, 2, 1)
    Me.t11.Value = Mid(Ano, 1, 1)
    Me.t12.Value = Mid(Ano, 2, 1)
    Me.t13.Value = Mid(Ano, 3, 1)
    Me.t14.Value = Mid(Ano, 4, 1)
    Me.t15.Value = Mid(TipodeLivro, 1, 1)
    Me.t16.Value = Mid(NumLivro, 1, 1)
    Me.t17.Value = Mid(NumLivro, 2, 1)
    Me.t18.Value = Mid(NumLivro, 3, 1)
    Me.t19.Value = Mid(NumLivro, 4, 1)
    Me.t20.Value = Mid(NumLivro, 5, 1)
    Me.t21.Value = Mid(Folha, 1, 1)
    Me.t22.Value = Mid(Folha, 2, 1)
    Me.t23.Value = Mid(Folha, 3, 1)
    Me.t24.Value = Mid(Termo, 1, 1)
    Me.t25.Value = Mid(Termo, 2, 1)
    Me.t26.Value = Mid(Termo, 3, 1)
    Me.t27.Value = Mid(Termo, 4, 1)
    Me.t28.Value = Mid(Termo, 5, 1)
    Me.t29.Value = Mid(Termo, 6, 1)
    Me.t30.Value = Mid(Termo, 7, 1)


    ' Primeiro DV
    DV1 = (t1 * 2) + (t2 * 3) + (t3 * 4) + (t4 * 5) + (t5 * 6) + (t6 * 7) + (t7 * 8) + (t8 * 9) + (t9 * 10) + (t10 * 0) + (t11 * 1) + (t12 * 2) + (t13 * 3) + (t14 * 4) + (t15 * 5) + (t16 * 6) + (t17 * 7) + (t18 * 8) + (t19 * 9) + (t20 * 10) + (t21 * 0) + (t22 * 1) + (t23 * 2) + (t24 * 3) + (t25 * 4) + (t26 * 5) + (t27 * 6) + (t28 * 7) + (t29 * 8) + (t30 * 9)
    RES = DV1
    RES = RES Mod 11

    If RES > 9 Then
    RES = 1
    End If

    Me.Dig1.Value = RES
    T31 = RES

    ' Segundo DV
    DV2 = (t1 * 1) + (t2 * 2) + (t3 * 3) + (t4 * 4) + (t5 * 5) + (t6 * 6) + (t7 * 7) + (t8 * 8) + (t9 * 9) + (t10 * 10) + (t11 * 0) + (t12 * 1) + (t13 * 2) + (t14 * 3) + (t15 * 4) + (t16 * 5) + (t17 * 6) + (t18 * 7) + (t19 * 8) + (t20 * 9) + (t21 * 10) + (t22 * 0) + (t23 * 1) + (t24 * 2) + (t25 * 3) + (t26 * 4) + (t27 * 5) + (t28 * 6) + (t29 * 7) + (t30 * 8) + (T31 * 9)
    RES2 = DV2
    RES2 = RES2 Mod 11
    If RES2 > 9 Then
    RES2 = 1
    End If

    Me.Dig2.Value = RES2


    End Sub
    Anexos
    Matrícula Nascimento.zip
    Envio também o Banco de Dados
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 3 vez(es)

      Data/hora atual: Sab 10 Dez 2016, 04:52