Cómo validar un número de código de barras en formato EAN13 |
Por Enrique Martínez Montejo |
Última revisión: 07/05/2006 |
La función genérica que presento, sirve para validar el número de un código de barras completo en el formato básico EAN 13, por lo que la longitud de la cadena que pase en el argumento de la función, deberá de ser de 13 caracteres; cualquier otra longitud, o la inclusión de caracteres alfabéticos, hace que la función devuelva una excepción del tipo System.ArgumentException, por lo que le aconsejo que incluya la llamada en un bloque Try ... End Try, o verifique primeramente la longitud de la cadena numérica.
Para validar el dígito de control del número, la función hace una llamada a la función GetDCBarCodEAN13, la cual podrá obtenerla en el siguiente enlace: Cómo obtener el Dígito de Control de un código de barras EAN13.
Public
Function
ValidateBarCodEAN13(ByVal
number As
String) As
Boolean
'*******************************************************************
' Nombre:
ValidateBarCodEAN13
'
por Enrique Martínez Montejo - 07/05/2006
'
' Versión: 1.0
'
' Finalidad: Validar el dígito de
control de un código de
'
barras en formato EAN13.
'
' Entradas:
' number: String.
El número que se desea validar.
'
' Resultados:
' Boolean: True/False
'*******************************************************************
' Si el número no cumple con el formato EAN13,
' la función devolverá una excepción de argumentos
' no válidos.
'
If
(number.Length <> 13) Then
Throw
New
System.ArgumentException
Else
Dim
ch As
Char
For
Each
ch In
number
If (Not
Char.IsNumber(ch)) Then
Throw
New
System.ArgumentException
End
If
Next
End
If
Dim
digito, lastDigit As
Integer
' Último dígito del número.
'
lastDigit = CInt(number.Substring(number.Length
- 1, 1))
' Calculo el dígito de control del
número pasado
'
digito = GetDCBarCodEAN13(number.Substring(0, 12))
' Compruebo si los dos dígitos son
iguales
'
If
(digito = lastDigit) Then
Return
True
End
Function
Cómo validar un número de código de barras en formato EAN13
Enrique Martínez Montejo - 2006
NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.
NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.