DIGITO CODIGO DE BARRAS

DINHORSO 24/09/2009 15:21:24
#323589
Boa tarde estou utilizando a seguinte função baixado na internet para calcular o digito verificador de um boleto bancario no modulo 10:

Function Calculo_DV10(strNumero As String) As String
[ô]declara As variáveis
Dim intContador As Integer
Dim intNumero As Integer

Dim intTotalNumero As Integer

Dim intMultiplicador As Integer

Dim intResto As Integer

[ô] se nao for um valor numerico sai da função
If Not IsNumeric(strNumero) Then
Calculo_DV10 = [Ô][Ô]
Exit Function
End If

[ô]inicia o multiplicador
intMultiplicador = 2

[ô]pega cada caracter do numero a partir da direita
For intContador = Len(strNumero) To 1 Step -1

[ô]extrai o caracter e multiplica pelo multiplicador
intNumero = Val(Mid(strNumero, intContador, 1)) * intMultiplicador

[ô] se o resultado for maior que nove soma os algarismos do resultado
If intNumero > 9 Then
intNumero = Val(Left(intNumero, 1)) + Val(Right(intNumero, 1))
End If

[ô]soma o resultado para totalização
intTotalNumero = intTotalNumero + intNumero

[ô]se o multiplicador for igual a 2 atribuir valor 1 se for 1 atribui 2
intMultiplicador = IIf(intMultiplicador = 2, 1, 2)

Next

Dim DezenaSuperior As Integer
If intTotalNumero < 10 Then
DezenaSuperior = 10
Else
DezenaSuperior = 10 * (Val(Left(CStr(intTotalNumero), 1)) + 1)
End If
intResto = DezenaSuperior - intTotalNumero

[ô]verifica as exceções ( 0 -> DV=0 )
Select Case intResto
Case 0
Calculo_DV10 = [Ô]0[Ô]
Case 10
Calculo_DV10 = [Ô]X[Ô]
Case Else
Calculo_DV10 = Str(intResto)
End Select
End Function

O problema que ela ta gerando o numero -82

linha digitaval boleto bancario usado para teste: 81680000000-1 723232872009-9092400115-4 000003707000-0
na posicao 3-3 a funçao gera -82.

PS: Boleto não passou no banco erro Digito Geral.
LEANDRO 24/09/2009 16:57:39
#323596
Resposta escolhida
Qual o Banco,
tem aqui no VBM que eu peguei e funcionou legal
DINHORSO 24/09/2009 17:22:14
#323597
Banco do Brasil. Passe ai o Link ou o código
DINHORSO 24/09/2009 18:41:36
#323606
Amigo LEANDRO, testei o codigo com Módulo 10 na minha aplicação e continua dando o mesmo erro, o digito geral ele calcula como -82

TENTE AI: 8160000000723232872009092400115000003707000
Tópico encerrado , respostas não são mais permitidas