quinta-feira, 29 de junho de 2017
assinantes
   Assinatura Ativo Access


Não Assinantes
ConteÚdo
DOWNLOADS
Interação
dicas aleatórias
Dica #71
Controlando a Barra de Status no MS Access
Publicado: 25/08/2008

Dicas

Função que valida a Inscrição Estadual
Autor:  Marcelo Santos do Nascimento (marcelosn@ig.com.br)
Publicado:  29/05/2005
Visitas: 4868
 
De: 'Marcelosn - IG - SP' Enviado: Thu May 5 9:23
Para: Prioridade: Normal
Assunto: Função que valida a Inscrição Estadual Tipo: Embeded HTML/Text

Mais uma para vocês:

Função que valida a Inscrição Estadual do Brasil

como cada estado faz uma conta para sua IE segue o modulo usado por eles na sua montagem do digito verificador

Espero que ajude o pessoal que esta fazendo a montagem ou usando a DLL para validar a inscrição

Public Function ValidaIE(CAD As Variant, UF As String) As Boolean
Dim CAD1, Mult As String
Dim soma, Result, Digito, j, i, Controle As Integer
On Error GoTo Erro
If UF = "PR" Then
'Separa CAD em 2 partes
If Len(CAD) <> 10 Then
ValidaIE = False
MsgBox "A Inscrição Estadual do Paraná deve possuir 10 Dígitos", vbInformation, "Marcelosn"
Exit Function
End If
CAD = Format(CAD, "0000000000")
CAD1 = Left$(CAD, 8)
Digito = Right$(CAD, 2)
Mult = "32765432"
For j = 1 To 2
soma = 0
For i = 1 To 8
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
Next i
If j = 2 Then soma = soma + (2 * Controle)
Controle = 11 - (soma Mod 11)
If (Controle = 10 Or Controle = 11) Then Controle = 0
Result = Result + Trim$(str$(Controle))
'Sequencia de multiplicadores para calculo do segundo digito
Mult = "43276543"
Next j
ElseIf UF = "RJ" Then
If Len(CAD) <> 8 Then
ValidaIE = False
MsgBox "A Inscrição Estadual do Rio de Janeiro deve possuir 8 Dígitos", vbInformation, "Marcelosn"
Exit Function
End If

CAD = Format(CAD, "00000000")
CAD1 = Left$(CAD, 7)
Digito = Right$(CAD, 1)
Mult = "2765432"
soma = 0
For i = 1 To 7
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
Next i
Controle = (soma Mod 11)
If (Controle = 0 Or Controle = 1) Then
Controle = 0
Else
Result = 11 - Controle
End If

ElseIf UF = "RS" Then
If Len(CAD) <> 10 Then
ValidaIE = False
MsgBox "A Inscrição Estadual do Rio Grande do Sul deve possuir 10 Dígitos", vbInformation, "Marcelosn"
Exit Function
End If
If Left(CAD, 3) >= 1 And Left(CAD, 3) >= 467 Then
ValidaIE = False
Exit Function
End If

CAD = Format(CAD, "0000000000")
CAD1 = Left$(CAD, 9)
Digito = Right$(CAD, 1)
Mult = "298765432"
soma = 0
For i = 1 To 9
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
Next i
Controle = 11 - (soma Mod 11)
If (Controle = 10 Or Controle = 11) Then Controle = 0

Result = Controle
ElseIf UF = "SC" Then
If Len(CAD) <> 9 Then
ValidaIE = False
MsgBox "A Inscrição Estadual de Santa Catarina deve possuir 9 Dígitos", vbInformation, "Marcelosn"
Exit Function
End If
CAD = Format(CAD, "00000000")
CAD1 = Left$(CAD, 8)
Digito = Right$(CAD, 1)
Mult = "98765432"
soma = 0
For i = 1 To 8
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
Next i
Controle = 11 - (soma Mod 11)
If (Controle = 0 Or Controle = 1) Then Controle = 0

Result = Controle

ElseIf UF = "SP" Then
If Left(CAD, 1) = "P" Then
If Len(CAD) <> 13 Then
ValidaIE = False
MsgBox "A Inscrição Estadual de São Paulo deve possuir 13 Dígitos", vbInformation, "Marcelosn"
Exit Function
End If

CAD1 = Mid$(CAD, 2, 8)
Digito = Mid(CAD, 10, 1)
Mult = "13456780"
soma = 0
For i = 1 To 8
'CALCULA O 8º DIGITO INDIVIDUAL, POR POSSUIR PESO 10.
If i <> 8 Then
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
End If
Next i
soma = soma + (10 * (Val(Mid$(CAD1, 8, 1))))
Controle = (soma Mod 11)
If (Controle = 10 Or Controle = 11) Then Controle = 0
Result = Trim$(str$(Controle))
Else
If Len(CAD) <> 12 Then
ValidaIE = False
MsgBox "A Inscrição Estadual de São Paulo deve possuir 12 Dígitos", vbInformation, "Marcelosn"
Exit Function
End If

'CALCULO DO 1º DIGITO VERIFICADOR. 9º DIGITO
CAD = Format(CAD, "000000000000")
CAD1 = Left$(CAD, 8)
Digito = Mid(CAD, 9, 1) & Right$(CAD, 1)
Mult = "13456780"
soma = 0
For i = 1 To 8
'CALCULA O 8º DIGITO INDIVIDUAL, POR POSSUIR PESO 10.
If i <> 8 Then
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
End If
Next i
soma = soma + (10 * (Val(Mid$(CAD1, 8, 1))))
Controle = (soma Mod 11)
If (Controle = 10 Or Controle = 11) Then Controle = 0
Result = Trim$(str$(Controle))
'CALCULO DO 2º DIGITO VERIFICADOR. 12º DIGITO
CAD1 = Left$(CAD, 11)
Mult = "32098765432"
soma = 0
For i = 1 To 11
'CALCULA O 3º DIGITO INDIVIDUAL, POR POSSUIR PESO 10.
If i <> 3 Then
soma = soma + (Val(Mid$(CAD1, i, 1)) * Val(Mid$(Mult, i, 1)))
End If
Next i
soma = soma + (10 * (Val(Mid$(CAD1, 3, 1))))
Controle = (soma Mod 11)
If (Controle = 10 Or Controle = 11) Then Controle = 0
Result = Result + Trim$(str$(Controle))
End If
End If
'Compara dígitos calculados com os digitos da inscricao
If Val(Result) <> Val(Digito) Then
ValidaIE = False
Else
ValidaIE = True
End If
Exit Function
Erro:
MsgBox Err.Description
End Function


  « Voltar

 

Assine AtivoAccess
     CD Ativo Access = R$ 44,70

 

   Copyright © Ativo Access 2003 - 2017- Todos os direitos reservados   Política de Privacidade | Fale conosco