VALIDAR CODIGO DE BARRAS

FUTURA 11/11/2011 09:34:54
#388939
pessoal, alguem conhece uma função que valide código de barras ean13,ean8, etc ????...com a mudança nesse campo a partir de 01/11 na validação da NFe, ta osso.....
CASSIOJFF 11/11/2011 10:35:07
#388945
Acho q vc pode usar uma funcao de calculo de base 10 como a abaixo pra mim normalmente ela esta funcionando pra ean 13

public function base_10(numero as string) as string
dim I, produto, multiplicador,digito as integer,valor as integer
produto = 0
multiplicador = 3
for i=len(numero) to 1 step -1
valor=val(mid(numero,i,1))*multiplicador
produto = produto + valor
multiplicador = iif(multiplicador=3,1,3)
next
digito = 10 - int(produto mod 10)
digito = iif(digito=10 or digito=11,0,digito)
base_10 = trim(str(digito))
end function

Ve se serve isso ai pra vc
FUTURA 11/11/2011 10:47:49
#388950
mas essa função acha o digito ou checa o código pra ver se esta certo ?
CASSIOJFF 11/11/2011 11:16:58
#388957
ela acha o codigo, pois vc tem que colocar tipo se for ean13,somente os 12 numeros sem o ultimo pra ele calcular e a partir dai te trazer o digito que pelo calculo seria o correto e ai é so vc fazer uma verificacao entre o que vc esta lendo e o q esta sendo calculado
FUTURA 11/11/2011 12:37:58
#388968
achei essa, parece q valida ean 8, ean 13, 12 e 14.......

Public Function CalcBarras(cdBar)
Dim SP As Long [ô]Soma de Produtos
Dim R As Integer [ô]Resto
Dim CV As Integer [ô]Caracter Verificacao

If cdBar = [Ô][Ô] Then Exit Function
a% = 1
For i% = Len(cdBar) To 2 Step -1
If i% Mod 2 = 0 Then [ô]par
SP = SP + (Mid(cdBar, a%, 1) * 3)
Else
SP = SP + (Mid(cdBar, a%, 1) * 1)
End If
a% = a% + 1
Next i%
R = SP Mod 10
CV = IIf(R > 0, 10 - R, 0)

If CV <> Mid(cdBar, Len(cdBar), 1) Then
MsgBox [Ô]Digito verificador inválido![Ô] & Chr(13) & [Ô]([Ô] & CV & [Ô])[Ô], 48, [Ô]Atenção!![Ô]
End If
End Function
Tópico encerrado , respostas não são mais permitidas