Imprimir página | Cerrar ventana

Generar Codigo Barras GS1_128

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86655
Fecha de impresión: 27/Marzo/2026 a las 06:53


Tema: Generar Codigo Barras GS1_128
Publicado por: jebcarlos
Asunto: Generar Codigo Barras GS1_128
Fecha de publicación: 06/Abril/2023 a las 04:35
Buenas noches hace algún tiempo estoy buscando un código que me permita crear el código de barras GS1_128, y no lo he encontrado, o tal vez no lo he sabido buscar, así que como la IA GPTCHAT anda de moda le pregunte como hacerlo y me dio dos respuestas y al aplicarlo no me genera nada, será que estoy haciendo algo mal? o LE gfalta código.  Acá dejó la respuesta dada, por que ando buscando ayuda. Gracias

Para crear una función en VBA que genere un código de barras GS1-128 de manera nativa en un informe de Access, puedes seguir los siguientes pasos:

    Crea un informe de Access con los campos que deseas mostrar, incluyendo el campo que contiene los datos que se utilizarán para generar el código de barras.

    Agrega un control "Imagen" al informe en la sección donde deseas que aparezca el código de barras.

    Haz clic derecho en el control de imagen y selecciona "Propiedades" en el menú contextual.

    En la sección "Origen del control", selecciona "Expr." en el cuadro desplegable "Origen de la imagen".

    En la ventana "Constructor de expresiones", crea la siguiente función VBA que genera el código de barras GS1-128:

    vb

Public Function GenerarCodigoBarrasGS1_128(ByVal datos As String) As String
   ' Definir las reglas de concatenación
   Dim patron As String
   patron = "211412" ' Inicio de Código B, AI (01), separador, datos
   
   ' Aplicar las reglas de concatenación para los datos de entrada
   Dim digitoVerificador As Integer
   For i = 1 To Len(datos)
      If i Mod 2 = 1 Then ' Dígito par
         patron = patron & "212" ' Separador, datos
      End If
      patron = patron & Mid(datos, i, 1)
      digitoVerificador = digitoVerificador + (i Mod 2) * (Asc(Mid(datos, i, 1)) - 32)
   Next i
   
   ' Calcular el dígito verificador
   digitoVerificador = (digitoVerificador Mod 103) + 32
   patron = patron & Chr(digitoVerificador)
   
   ' Agregar el fin de código
   patron = patron & "233"
   
   ' Devolver el código de barras completo
   GenerarCodigoBarrasGS1_128 = patron
End Function

ACA EMPIEZA LA SEGUNDA RESPUESTA

Esta función es similar a la que se mencionó en la respuesta anterior, pero en este caso es una función pública que se puede utilizar en el informe.

En la ventana "Constructor de expresiones", utiliza la siguiente expresión para el origen de la imagen del control de imagen:

arduino

    ="Barcode128:" & GenerarCodigoBarrasGS1_128([NombreDelCampo])

    Donde "NombreDelCampo" es el nombre del campo que contiene los datos que se utilizarán para generar el código de barras.

    Esta expresión concatena la cadena "Barcode128:" con el resultado de la función "GenerarCodigoBarrasGS1_128" para crear una cadena que se puede interpretar como un código de barras.

    Cierra la ventana "Constructor de expresiones" y guarda los cambios en el informe.

Con estos pasos, has creado una función en VBA que genera un código de barras GS1-128 y lo muestra en un control de imagen en un informe de Access. Ahora, cuando se ejecute el informe, el código de barras se generará automáticamente para cada registro que contenga datos en el campo especificado.




Para generar un código de barras GS1-128 en un informe de Access utilizando una función VBA, puedes seguir los siguientes pasos:

    Abre el informe en el que deseas insertar el código de barras y asegúrate de que la fuente de datos del informe incluya un campo que contenga el número que deseas codificar en el código de barras.

    Abre el editor de código de Access haciendo clic en el botón "Visual Basic" en la pestaña "Programador" de la cinta de opciones.

    En el editor de código, haz clic en el menú "Insertar" y selecciona "Módulo" para crear un nuevo módulo.

    En el nuevo módulo, copia y pega la siguiente función VBA para generar el código de barras GS1-128:

vb

Function GenerarCodigoBarrasGS1_128(ByVal datos As String) As String
    ' Definir las reglas de concatenación
    Dim patron As String
    patron = "211412" ' Inicio de Código B, AI (01), separador, datos
    
    ' Aplicar las reglas de concatenación para los datos de entrada
    Dim digitoVerificador As Integer
    For i = 1 To Len(datos)
        If i Mod 2 = 1 Then ' Dígito par
            patron = patron & "212" ' Separador, datos
        End If
        patron = patron & Mid(datos, i, 1)
        digitoVerificador = digitoVerificador + (i Mod 2) * (Asc(Mid(datos, i, 1)) - 32)
    Next i
    
    ' Calcular el dígito verificador
    digitoVerificador = (digitoVerificador Mod 103) + 32
    patron = patron & Chr(digitoVerificador)
    
    ' Agregar el fin de código
    patron = patron & "233"
    
    ' Devolver el código de barras completo
    GenerarCodigoBarrasGS1_128 = patron
End Function

    En el informe, coloca un control "Cuadro de texto" en el lugar donde deseas insertar el código de barras.

    Haz clic con el botón derecho del ratón en el control "Cuadro de texto" y selecciona "Propiedades" en el menú contextual.

    En la sección "Datos" de las propiedades del control "Cuadro de texto", haz clic en el botón "Control de origen" y selecciona el campo que contiene el número que deseas codificar en el código de barras.

    En la sección "Formato" de las propiedades del control "Cuadro de texto", selecciona "Código de barras" en el menú desplegable "Formato".

    En la sección "Código de barras" de las propiedades del control "Cuadro de texto", haz clic en el botón "Propiedades" y selecciona "Personalizado" en el menú desplegable "Tipo".

    En la sección "Código de barras personalizado", ingresa la siguiente expresión en la propiedad "Código":

scss

=GenerarCodigoBarrasGS1_128([NombreDelCampo])

Donde "NombreDelCampo" es el nombre del campo que contiene el número que deseas codificar en el código de barras.

    Guarda los cambios en el informe y cierra el editor de código.



Respuestas:
Publicado por: javier.mil
Fecha de publicación: 06/Abril/2023 a las 21:02
Prueba con estos codigos

  1. https://azaleabarcodes.com/excel/GS1-128-A.txt" rel="nofollow - https://azaleabarcodes.com/excel/GS1-128-A.txt
  2. https://azaleabarcodes.com/excel/GS1-128-B.txt" rel="nofollow - https://azaleabarcodes.com/excel/GS1-128-B.txt
  3. https://azaleabarcodes.com/excel/GS1-128-C.txt" rel="nofollow - https://azaleabarcodes.com/excel/GS1-128-C.txt


 



-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: jebcarlos
Fecha de publicación: 06/Abril/2023 a las 23:48
Hola Javier gracias por la ayuda los probare, aunque tengo una duda debo usar un fuente en especial como la code128.ttf?


Publicado por: javier.mil
Fecha de publicación: 09/Abril/2023 a las 10:11
Si creo que si , pruebala y nos comentas


-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: jebcarlos
Fecha de publicación: 19/Abril/2023 a las 05:41
Buenas noches que pena la demora, estoy haciendo pruebas con la información aportada por javier.mil así. Copie los 3 módulos en un modulo, luego cree un informe con un solo campo denominado code128 que contiene el siguiente valor "(415)7709998359161(8020)00000005678411(3900)0000055150(96)20230420" sin las comillas
Luego cree 3 campos así Texto1=Azalea_GS1_128_A([codigo128]); Texto3=Azalea_GS1_128_B([codigo128]) y Texto5=Azalea_GS1_128_C([codigo128]).
Pero cuando abro el informe me sale este error "ERROR DE DESBORDAMIENTO" en los tres campos de textos y no debería ser así al menos en uno de los 3.


Publicado por: javier.mil
Fecha de publicación: 20/Abril/2023 a las 20:07
Buenas

Solo tienes que cambiar donde ponga
As Integer

Cámbialo por
As Long


-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info






Imprimir página | Cerrar ventana