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

    Calculo de dv de numeros de processos judiciais antigos

    Compartilhe

    bruno.souza.pw
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 09/10/2013

    Calculo de dv de numeros de processos judiciais antigos

    Mensagem  bruno.souza.pw em Qui 06 Fev 2014, 16:43

    Boa a Tarde a todos!

    Gostaria de saber se alguém conhece como se calcula o digito verificador dos números de processos com numeração antiga da justiça(AAAA.RE.OR.NNNNN-D)? Eu descobrir que se faz como o modulo 11, já tentei vários exemplos na internet mas nenhum funcionou. Desde já agradeço a todos.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Calculo de dv de numeros de processos judiciais antigos

    Mensagem  good guy em Qua 26 Fev 2014, 19:18

    Olá bruno,

    Abra este arquivo, mantendo pressionado a tecla SHIFT e estude o código e tente fazer você mesmo. Tem três aplicativos que calculam o dv usando o módulo 11.


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

    bruno.souza.pw
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 09/10/2013

    Re: Calculo de dv de numeros de processos judiciais antigos

    Mensagem  bruno.souza.pw em Sex 28 Fev 2014, 12:04

    Obrigado goody guy,

    Mas já tentei de varias formas que encontrei modifiquei e nada, não quero criar um codigo pra gerar o dv e sim para verificar se ele está correto. Como alguns exemplos abaixo que não funcionaram.

    Código:

    Dim str1, str2, str3, str4, nup2    As String
        Dim DV, dd, r1                      As Long
        Dim v_numproc                       As String
        Dim v_soma, v_cont                  As Integer
        
        
        nup = "2010.51.52.002089-6"

        v_cont = 1
        v_soma = 0
        nup = Replace(nup, ".", "")
        nup = Replace(nup, "-", "")
    'AAAA.00.TR.NNNNNN-D - 2010.51.52.002089-6
            
            
            str1 = Mid(nup, 1, 14)
            
            While v_cont < 11
                v_soma = v_soma + (v_cont * Mid(str1, v_cont, 1))
                'MsgBox Mid(str1, v_cont, 1) & "  " & str1 & "-" & v_cont
                v_cont = v_cont + 1
            Wend
            While v_cont < 15
                v_soma = v_soma + ((v_cont - 10) * Mid(str1, v_cont, 1))
                'MsgBox Mid(str1, v_cont, 1) & "  " & str1 & "-" & v_cont
                v_cont = v_cont + 1
            Wend
            
            v_soma = (v_soma Mod 11)
            If v_soma = 10 Then
                v_soma = 0
            End If
            
            nup2 = str1 & v_soma
            
            'MsgBox nup & "  " & nup2
            
            If (nup = nup2) Then
                'MsgBox "Digito Verificador válido!"
                verificarNUP = True
            Else
                'MsgBox "Digito Verificador inválido!"
                verificarNUP = False
            End If


    Código:

     Dim str,nup As String
        Dim soma As Integer
        Dim i As Integer
        Dim x As Integer
        Dim dv1 As Integer
        Dim dv2 As Integer    

    soma = 0
        
        nup = Replace(nup, ".", "")
        nup = Replace(nup, "/", "")
        nup = Replace(nup, "-", "")
        
        
        str = Mid(nup, 1, 15)

            x = 2
            
            For i = 14 To 1 Step -1
                soma = soma + Mid(str, i, 1) * x
                x = x + 1
            Next i
            
            x = 11 - (soma Mod 11)
            
            If (x = 11) Then
                dv1 = 1
            ElseIf (x = 10) Then
                dv1 = 0
            Else
                dv1 = x
            End If
                
            str = str & dv1
                    
            
            If (nup = str) Then
                DV = True
            Else
                MsgBox "Digito Verificador inválido!"
                DV = False
            End If
            

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Calculo de dv de numeros de processos judiciais antigos

    Mensagem  good guy em Sex 28 Fev 2014, 15:21

    Olá bruno,

    Qualquer um daqueles aplicativos possue um código que faz tanto uma coisa quanto outra ou ambos. Tente adaptar para sua necessidade:

    Veja como eu fiz para calcular o DV do CPF:

    Public Function VerificaCPF(sCPF As Variant) As Boolean
    Dim Dig1, Dig2, Dig3, Dig4, Dig5, Dig6, Dig7, Dig8, Dig9, Dig10, Dig11 As Long
    Dim Soma, Soma1, DigVer1 As Integer, DigVer2 As Integer
    Dim chkExibirDigitos As Boolean
    Dim strMsg As String
    Dim txtMatricula As String
    Dim Total, Total1 As Integer

    sCPF = Format(sCPF, "00000000000")


    'Cálculo do primeiro dígito verificador
    'DigVer1 = Right(sCPF, 2)
    'Multiplica-se cada dígito da cadeia pelo coeficiente decrescente

    Dig1 = Mid(sCPF, 1, 1) * 10
    Dig2 = Mid(sCPF, 2, 1) * 9
    Dig3 = Mid(sCPF, 3, 1) * 8
    Dig4 = Mid(sCPF, 4, 1) * 7
    Dig5 = Mid(sCPF, 5, 1) * 6
    Dig6 = Mid(sCPF, 6, 1) * 5
    Dig7 = Mid(sCPF, 7, 1) * 4
    Dig8 = Mid(sCPF, 8, 1) * 3
    Dig9 = Mid(sCPF, 9, 1) * 2

    Soma = Dig1 + Dig2 + Dig3 + Dig4 + Dig5 + Dig6 + Dig7 + Dig8 + Dig9
    Soma1 = Soma Mod 11

    If Soma1 < 2 Then
    DigVer1 = 0
    Else
    DigVer1 = 11 - Soma1
    End If


    'Cálculo do segundo dígito verificador
    'DigVer2 = Right(sCPF, 1)

    Dig1 = Mid(sCPF, 1, 1) * 11
    Dig2 = Mid(sCPF, 2, 1) * 10
    Dig3 = Mid(sCPF, 3, 1) * 9
    Dig4 = Mid(sCPF, 4, 1) * 8
    Dig5 = Mid(sCPF, 5, 1) * 7
    Dig6 = Mid(sCPF, 6, 1) * 6
    Dig7 = Mid(sCPF, 7, 1) * 5
    Dig8 = Mid(sCPF, 8, 1) * 4
    Dig9 = Mid(sCPF, 9, 1) * 3
    Dig10 = Mid(sCPF, 10, 1) * 2

    Total = Dig1 + Dig2 + Dig3 + Dig4 + Dig5 + Dig6 + Dig7 + Dig8 + Dig9 + Dig10
    Total1 = Total Mod 11

    If Total1 < 2 Then
    DigVer2 = 0
    Else
    DigVer2 = 11 - Total1
    End If

    If Not IsNull(Forms!VerificaCPFeCNPJ!txtCPF.Text) And DigVer1 = Mid(sCPF, 10, 1) And DigVer2 = Mid(sCPF, 11, 1) Then
    'Se o campo txtCPF(caixa de texto) não estiver nulo e o primeiro dígito verificador identificado for igual ao penúltimo dígito da cadeia e o segundo dígito verificador for igual ao último dígito da cadeia
    MsgBox "CPF válido!", vbInformation, "Validar CPF"
    Else
       MsgBox "CPF inválido!", vbCritical, "Validar CPF"
       If (Forms!VerificaCPFeCNPJ!chkExibirDigitos) Then
                   strMsg = strMsg & vbCrLf & vbCrLf
                   strMsg = strMsg & "(Para o CPF " & Forms!VerificaCPFeCNPJ!txtCPF.Text
                   strMsg = strMsg & " o primeiro dígito verificador correto é " & DigVer1 & ","
                   strMsg = strMsg & " o segundo dígito verificador correto é " & DigVer2 & ")"
                   
           End If
           MsgBox strMsg, vbQuestion, "DV de CPF?"
           
        End If
       DoCmd.CancelEvent
    End Function

    Private Sub txtCPF_BeforeUpdate(Cancel As Integer)
    On Error Resume Next
    Dim nCPF As String
    If IsNull(Me.txtCPF.Text) Or IsEmpty(Me.txtCPF.Text) Then
    MsgBox ("Campo em Branco. Digite um CPF válido"), vbInformation
    Else
    nCPF = Format(txtCPF, "00000000000")
    'Formata o CPF sem o hífen com máscara de entrada igual que limita a digitação a 11(onze) dígitos.

    Call VerificaCPF(nCPF) 'nCPF é o nosso CPF variável digitado usado como parâmetro por referência a variável nCPF da função
    'VerificaCPF(sCPF As Variant)
    End If
    End Sub

      Data/hora atual: Dom 11 Dez 2016, 00:14