26/08/2008, 10:28
|
| | | Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 21 años Puntos: 19 | |
EAN13: Verificar y generar codigo de control Bueno, aca les traigo dos funciones... una verifica si el ean13 (de 13 digitos) es correcto el codigo de control (el ultimo caracter) y la otra funcion GENERA el correspondiente codigo de control de un EAN13 pasandole solamente los 12 digitos...
Espero que les sirva...
Código:
'========== Codigo realizado por CULD ==========
'============= [email protected] ===============
'La funcion "EAN13_Valido" devuelve si el codigo
'control del EAN13 es VALIDO...
'El algoritmo utilizado es el descrito en la
'siguiente pagina web
'http://latecladeescape.com/w0/recetas-algoritmicas/validar-codigos-ean.html
'La function "EAN13_Control" devuelve el numero de
'control correspondiente para un codigo EAN13 de
'12 digitos (asi devuelve el control que seria el 13)
'===============================================
Public Function EAN13_Valido(Codigo As String) As Boolean
'Variables a utilizar
Dim X As Integer
Dim SumaPar As Integer
Dim SumaImpar As Integer
Dim Resto As Integer
Dim Control As Integer
'Comprobar que el código tiene 13 dígitos. De no ser así, no es correcto.
If Len(Codigo) <> 13 Then
EAN13_Valido = False
Exit Function
End If
'Sumar los dígitos de lugares pares por un lado y los de los impares por otro, pero sin incuir el último dígito.
For X = 1 To 12
If X Mod 2 = 0 Then
SumaPar = SumaPar + CInt(Mid(Codigo, X, 1))
Else
SumaImpar = SumaImpar + CInt(Mid(Codigo, X, 1))
End If
Next X
'multiplicar la suma de los pares por 3.
SumaPar = SumaPar * 3
'Sumar el resultado de los pares y el de los impares y hallar el resto de la división por 10.
Resto = (SumaPar + SumaImpar) Mod 10
'Realizar la operación 10 menos ese resto y ese es el dígito de control
Control = 10 - Resto
'Si como resultado sale 10, entenderemos que el dígito de control es 0.
If Control = 10 Then
If CInt(Right(Codigo, 1)) = 0 Then
EAN13_Valido = True
Exit Function
Else
EAN13_Valido = False
Exit Function
End If
End If
'Comprobar que el dígito de control que hemos calculado y el último dígito del código EAN coinciden
If CInt(Right(Codigo, 1)) = Control Then
EAN13_Valido = True
Exit Function
Else
EAN13_Valido = False
Exit Function
End If
End Function
Public Function EAN13_Control(Codigo As String) As Integer
'Variables a utilizar
Dim X As Integer
Dim SumaPar As Integer
Dim SumaImpar As Integer
Dim Resto As Integer
Dim Control As Integer
'Comprobar que el código tiene 12 dígitos. De no ser así, no es correcto.
'devuelvo un numero mayor a 9
If Len(Codigo) <> 12 Then
EAN13_Control = 10
Exit Function
End If
'Sumar los dígitos de lugares pares por un lado y los de los impares por otro, pero sin incuir el último dígito.
For X = 1 To 12
If X Mod 2 = 0 Then
SumaPar = SumaPar + CInt(Mid(Codigo, X, 1))
Else
SumaImpar = SumaImpar + CInt(Mid(Codigo, X, 1))
End If
Next X
'multiplicar la suma de los pares por 3.
SumaPar = SumaPar * 3
'Sumar el resultado de los pares y el de los impares y hallar el resto de la división por 10.
Resto = (SumaPar + SumaImpar) Mod 10
'Realizar la operación 10 menos ese resto y ese es el dígito de control
Control = 10 - Resto
'Si como resultado sale 10, entenderemos que el dígito de control es 0.
'de lo contrario, el control es el numero que salio
If Control = 10 Then
EAN13_Control = 0
Else
EAN13_Control = Control
End If
End Function
|