locked
COMO GENERAR UN CODIGO DE BARRAS EAN13 VB.NET RRS feed

  • Pregunta

  • Estimados una consulta como puedo generar un codigo de barras EAN13, osea con un boton al darle clic mostrarlo en un textbox.
    Espero me ayuden muchas gracias.
    miércoles, 28 de diciembre de 2016 23:06

Respuestas

  • "Oscar Perez 1234" preguntó:

    > como puedo generar un codigo de barras EAN13, osea con un boton al
    > darle clic mostrarlo en un textbox.
     
    Hola, Óscar:

    Échale un vistazo al siguiente artículo:

    Creación e Impresión de Código de Barras utilizando Fuentes Personalizadas (True Type)

    Un saludo y ¡Feliz Año Nuevo!


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, 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 recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    lunes, 2 de enero de 2017 12:32
    Moderador
  • Estimados una consulta como puedo generar un codigo de barras EAN13, osea con un boton al darle clic mostrarlo en un textbox.
    Espero me ayuden muchas gracias.

    Hola,

    No hace mucho tiempo que hice algo así.

    Lo que hice es descargarme una fuente de letra con formato de codigo de barras.

    Instalas la nueva fuente descargada en el PC y a continuacion asignas a ese text box o label esa fuente de letra.

    Al introducir en ese text box o label cuaquier valor,  automaticamente se te creara el codigo de barras.

    jueves, 29 de diciembre de 2016 17:12

Todas las respuestas

  • Estimados una consulta como puedo generar un codigo de barras EAN13, osea con un boton al darle clic mostrarlo en un textbox.
    Espero me ayuden muchas gracias.

    Hola,

    No hace mucho tiempo que hice algo así.

    Lo que hice es descargarme una fuente de letra con formato de codigo de barras.

    Instalas la nueva fuente descargada en el PC y a continuacion asignas a ese text box o label esa fuente de letra.

    Al introducir en ese text box o label cuaquier valor,  automaticamente se te creara el codigo de barras.

    jueves, 29 de diciembre de 2016 17:12
  • "Oscar Perez 1234" preguntó:

    > como puedo generar un codigo de barras EAN13, osea con un boton al
    > darle clic mostrarlo en un textbox.
     
    Hola, Óscar:

    Échale un vistazo al siguiente artículo:

    Creación e Impresión de Código de Barras utilizando Fuentes Personalizadas (True Type)

    Un saludo y ¡Feliz Año Nuevo!


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, 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 recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    lunes, 2 de enero de 2017 12:32
    Moderador
  • Hola, llevo tiempo peleándome con esto y yo no consigo imprimir correctamente un código de barras....

    EAN13 calcula el último dígito, le pasas 12 y el último lo tienes que calcular. Hasta ahí todo correcto..
    Yo luego intentaba imprimirlo con CrystalReport, pasándole la fuente EAN13... Pero esto no funciona, parece ser que no es tán sencillo como cambiar el tipo de letra y listo..

    Me estoy volviendo loco, me he descargado varios ejemplos pero no consigo descifrar algunos y otros directamente no sirven por que solo le cambian el tipo de letra. Este tema es mi desesperación.

    Si alguien supiera como imprimirlo correctamente para que un lector de código de barras lo lea...estaría ETERNAMENTE agradecido.

    lunes, 2 de enero de 2017 17:17
  • Para que tu código EAN13 sea leído por un lector primero debe ser convertido mediante una formula, esto te convierte los números a letras de acuerdo a una regla, luego colocas el resultado de aplicar la formula en tu textbox, al textbox le aplicas la fuente EAN13 y listo.

    Hay 2 métodos, que pases tu directamente los 13 dígitos (siempre 13, completando con ceros a la izquierda si es necesario) o pasando 12 y haciendo que tu sistema te calcule el ultimo dígito que es el verificador.

    La formula del dígito verificador es:

    Public Function dv(ByVal EAN As String)             'calcula digito verificador del EAN13
            '**OK**
            Dim dvc As String = ""      'digito verificador calculado
            Dim iSum As Integer = 0
            Dim iDigit As Integer = 0

            For i As Integer = EAN.Length To 1 Step -1
                iDigit = Convert.ToInt32(EAN.Substring(i - 1, 1))
                If (EAN.Length - i + 1) Mod 2 <> 0 Then
                    iSum += iDigit * 3
                Else
                    iSum += iDigit
                End If
            Next

            Dim iCheckSum As Integer = (10 - (iSum Mod 10)) Mod 10
            dvc = iCheckSum.ToString()

            Return dvc

        End Function

    para calcular la cadena EAN13:

           

        Public Function ean13(ByVal chaine As String) As String

            Dim i, checksum, first As Integer
            Dim CodeBarre As String
            Dim tableA As Boolean

            ean13 = ""
            If Len(chaine) = 12 Then
                For i = 1 To 12
                    If Asc(Mid(chaine, i, 1)) < 48 Or Asc(Mid(chaine, i, 1)) > 57 Then
                        i = 0
                        Exit For
                    End If
                Next
                If i = 13 Then
                    For i = 2 To 12 Step 2
                        checksum = checksum + Val(Mid(chaine, i, 1))
                    Next
                    checksum = checksum * 3
                    For i = 1 To 11 Step 2
                        checksum = checksum + Val(Mid(chaine, i, 1))
                    Next
                    chaine = chaine & (10 - checksum Mod 10) Mod 10
                    CodeBarre = Left(chaine, 1) & Chr(65 + Val(Mid(chaine, 2, 1)))
                    first = Val(Left(chaine, 1))
                    For i = 3 To 7
                        tableA = False
                        Select Case i
                            Case 3
                                Select Case first
                                    Case 0 To 3
                                        tableA = True
                                End Select
                            Case 4
                                Select Case first
                                    Case 0, 4, 7, 8
                                        tableA = True
                                End Select
                            Case 5
                                Select Case first
                                    Case 0, 1, 4, 5, 9
                                        tableA = True
                                End Select
                            Case 6
                                Select Case first
                                    Case 0, 2, 5, 6, 7
                                        tableA = True
                                End Select
                            Case 7
                                Select Case first
                                    Case 0, 3, 6, 8, 9
                                        tableA = True
                                End Select
                        End Select
                        If tableA Then
                            CodeBarre = CodeBarre & Chr(65 + Val(Mid(chaine, i, 1)))
                        Else
                            CodeBarre = CodeBarre & Chr(75 + Val(Mid(chaine, i, 1)))
                        End If
                    Next
                    CodeBarre = CodeBarre & "*"
                    For i = 8 To 13
                        CodeBarre = CodeBarre & Chr(97 + Val(Mid(chaine, i, 1)))
                    Next
                    CodeBarre = CodeBarre & "+"
                    ean13 = CodeBarre
                End If
            End If
        End Function

    Si te sirve la marcas como correcta

    • Propuesto como respuesta Raimundo Ferrer jueves, 28 de enero de 2021 9:06
    miércoles, 25 de enero de 2017 18:43
  • Para que tu código EAN13 sea leído por un lector primero debe ser convertido mediante una formula, esto te convierte los números a letras de acuerdo a una regla, luego colocas el resultado de aplicar la formula en tu textbox, al textbox le aplicas la fuente EAN13 y listo.

    Hay 2 métodos, que pases tu directamente los 13 dígitos (siempre 13, completando con ceros a la izquierda si es necesario) o pasando 12 y haciendo que tu sistema te calcule el ultimo dígito que es el verificador.

    La formula del dígito verificador es:

    Public Function dv(ByVal EAN As String)             'calcula digito verificador del EAN13
            '**OK**
            Dim dvc As String = ""      'digito verificador calculado
            Dim iSum As Integer = 0
            Dim iDigit As Integer = 0

            For i As Integer = EAN.Length To 1 Step -1
                iDigit = Convert.ToInt32(EAN.Substring(i - 1, 1))
                If (EAN.Length - i + 1) Mod 2 <> 0 Then
                    iSum += iDigit * 3
                Else
                    iSum += iDigit
                End If
            Next

            Dim iCheckSum As Integer = (10 - (iSum Mod 10)) Mod 10
            dvc = iCheckSum.ToString()

            Return dvc

        End Function

    para calcular la cadena EAN13:

           

        Public Function ean13(ByVal chaine As String) As String

            Dim i, checksum, first As Integer
            Dim CodeBarre As String
            Dim tableA As Boolean

            ean13 = ""
            If Len(chaine) = 12 Then
                For i = 1 To 12
                    If Asc(Mid(chaine, i, 1)) < 48 Or Asc(Mid(chaine, i, 1)) > 57 Then
                        i = 0
                        Exit For
                    End If
                Next
                If i = 13 Then
                    For i = 2 To 12 Step 2
                        checksum = checksum + Val(Mid(chaine, i, 1))
                    Next
                    checksum = checksum * 3
                    For i = 1 To 11 Step 2
                        checksum = checksum + Val(Mid(chaine, i, 1))
                    Next
                    chaine = chaine & (10 - checksum Mod 10) Mod 10
                    CodeBarre = Left(chaine, 1) & Chr(65 + Val(Mid(chaine, 2, 1)))
                    first = Val(Left(chaine, 1))
                    For i = 3 To 7
                        tableA = False
                        Select Case i
                            Case 3
                                Select Case first
                                    Case 0 To 3
                                        tableA = True
                                End Select
                            Case 4
                                Select Case first
                                    Case 0, 4, 7, 8
                                        tableA = True
                                End Select
                            Case 5
                                Select Case first
                                    Case 0, 1, 4, 5, 9
                                        tableA = True
                                End Select
                            Case 6
                                Select Case first
                                    Case 0, 2, 5, 6, 7
                                        tableA = True
                                End Select
                            Case 7
                                Select Case first
                                    Case 0, 3, 6, 8, 9
                                        tableA = True
                                End Select
                        End Select
                        If tableA Then
                            CodeBarre = CodeBarre & Chr(65 + Val(Mid(chaine, i, 1)))
                        Else
                            CodeBarre = CodeBarre & Chr(75 + Val(Mid(chaine, i, 1)))
                        End If
                    Next
                    CodeBarre = CodeBarre & "*"
                    For i = 8 To 13
                        CodeBarre = CodeBarre & Chr(97 + Val(Mid(chaine, i, 1)))
                    Next
                    CodeBarre = CodeBarre & "+"
                    ean13 = CodeBarre
                End If
            End If
        End Function

    Si te sirve la marcas como correcta

    Hola a todos. Lo he usado mucho tiempo después y va perfecto. Como podéis ver hago el comentario unos cuantos años después pero no quiero que pase por alto que para mi ha sido la solución perfecta.
    jueves, 28 de enero de 2021 9:08
  • Gracias por tu comentario Raimundo
    martes, 2 de febrero de 2021 20:11