** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Generar Codigo Barras GS1_128
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Generar Codigo Barras GS1_128

 Responder Responder
Autor
Mensaje
jebcarlos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 275
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jebcarlos Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Generar Codigo Barras GS1_128
    Enviado: 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.
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita javier.mil Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Abril/2023 a las 21:02
Arriba
jebcarlos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 275
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jebcarlos Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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?
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita javier.mil Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 09/Abril/2023 a las 10:11
Si creo que si , pruebala y nos comentas
Arriba
jebcarlos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 16/Julio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 275
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita jebcarlos Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita javier.mil Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 20/Abril/2023 a las 20:07
Buenas

Solo tienes que cambiar donde ponga
As Integer

Cámbialo por
As Long
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable