Creación de 2D (matriz de datos o códigos QR) en informes/formularios de MS Access

Estamos en el proceso de implementar un código para leer/crear códigos de barras 2D que están comenzando a aparecer en las piezas de nuestros proveedores.

Tenemos la necesidad de crear los códigos de barras 2D en los informes y formularios de MS Access. ¿Alguien ha tenido éxito con las soluciones de fuentes (IDAutomation) o Active X (dlSoft) que existen?

Para C#, la biblioteca de código abierto "http://barcoderender.codeplex.com/" fue sugerido. Cualquier idea sobre qué tan exitoso fue esto o si alguien tiene otras opciones de código abierto y/o de pago.

Gracias,

Anton

preguntado el 08 de marzo de 13 a las 21:03

2 Respuestas

Según el volumen de códigos que necesite generar, puede usar la API de Google Charts para generar códigos QR.

Simplemente agregue un componente ActiveX "Microsoft Web Browser" y el siguiente código a su formulario:

Dim Size As Integer
Dim Text As String
Dim URL As String
Size = 200
Text = "This is my test"
' Better to actually use a URL encoding function like those described here:
' http://stackoverflow.com/questions/218181/how-can-i-url-encode-a-string-in-excel-vba
Text = Replace(Text, " ", "%20")
URL = "http://chart.apis.google.com/chart?chs=" & Size & "x" & Size & "&cht=qr&chld=H|0&chl=" & Text
WebBrowser.Navigate (URL)

Por supuesto, puede cambiar el tamaño y el texto según sus necesidades. El Texto también puede ser un valor directamente de su Formulario, por lo tanto, sus datos.

Le aconsejo que consulte los Términos y servicios de Google antes de usarlo.

respondido 12 mar '13, 17:03

Escapé por completo del control del navegador web y la API de Google, ya que esa funcionalidad ahora está obsoleta por lo que puedo decir. Opté por una API gratuita diferente, pero en su lugar se podría usar la API de Google o cualquier otra API.

En mi ejemplo, estoy creando una imagen .png en el mismo directorio que la aplicación. Tengo un cuadro de texto en mi formulario llamado txtToCode en el que escribo el texto que quiero codificar. También tengo un control de imagen para que la imagen se pueda ver desde el formulario, pero puedes modificarla como quieras:

Private Sub btnCode2_Click()
     Call GetQRCode(Me.txtToCode, 150, 150)
End Sub

Sub GetQRCode(Content As String, Width As Integer, Height As Integer)
    Dim ByteData() As Byte
    Dim XmlHttp As Object
    Dim HttpReq As String
    Dim ReturnContent As String
    Dim EncContent As String
    Dim QRImage As String
    EncContent = EncodeURL(Content)

    HttpReq = "https://api.qrserver.com/v1/create-qr-code/?data=" & EncContent & "&size=" & Width & "x" & Height & ""

    Set XmlHttp = CreateObject("MSXML2.XmlHttp")
    XmlHttp.Open "GET", HttpReq, False
    XmlHttp.Send
    ByteData = XmlHttp.responseBody
    Set XmlHttp = Nothing

    ReturnContent = StrConv(ByteData, vbUnicode)
    Call ExportImage(ReturnContent)
End Sub

Private Sub ExportImage(image As String)
    Dim FilePath As String

    On Error GoTo NoSave

    ' Build Export Path
    FilePath = Application.CurrentProject.Path & "\qr.png"


    Open FilePath For Binary As #1
       Put #1, 1, image
    Close #1
    Me.Image3.Picture = FilePath
    ' Save File Path
    Exit Sub
NoSave:
MsgBox "Could not save the QR Code Image! Reason: " & Err.Description, vbCritical, "File Save Error"
End Sub

Private Function EncodeURL(str As String)
    Dim ScriptEngine As Object
    Dim encoded As String
    Dim Temp As String

    Temp = Replace(str, " ", "%20")
    Temp = Replace(Temp, "#", "%23")
    EncodeURL = Temp
End Function

Respondido 17 Oct 18, 17:10

Hola, ¿puedes ayudar a generar varias líneas? QR Code. Significa una línea y luego una nueva línea debajo de la primera línea. - Harun24hr

@Harun24HR Hemos hecho algo similar usando un informe con un control de imagen usado en la impresión de etiquetas. Desarrollé una función basada en el código anterior y la usé dentro del origen de registros del informe para generar el código QR para cada elemento de línea. - antonio griggs

Hola, @AnthonyGriggs, ¿es posible generar imágenes en el informe en lugar de guardar cada una de ellas? - AlbertoSan

@AlbertSan Ninguno que yo sepa. ¿Quizás en lugar de una ubicación de archivo convertirlo en una cadena Base64? Tal vez podría experimentar con eso si realmente no está en la ubicación del archivo... pero no estoy seguro de si eso funcionará en este escenario ya que no estoy al tanto de un control de imagen en Access que acepte cadenas Base64... podrían existir. .. pero nunca lo he intentado. - antonio griggs

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.