Search code examples
ms-accessgoogle-apiqr-code

Problem printing a web Browser in MS Access Form, displaying a QR code


I use a WebBrowser within a MS Access Form. The WepBrowser is displaying a QR code using chart.googleapis. The “Display when” property is set to “Always”. When I try to Print the form, or via the print preview, the QR Code is not visible. One solution would be to display somehow the URL image to an “Image” element, but this would require to download the picture from the URL. The same Access runs in multiple PC so I would have to customize paths, etc. Any suggestion?


Solution

  • You can use my function UrlContent in a query as found in my project VBA.PictureUrl:

    ' Download (picture) file from a URL of a hyperlink field to a
    ' (temporary) folder, and return the full path to the downloaded file.
    '
    ' This can be used as the control source for a bound picture control.
    ' If no Folder is specified, the user's IE cache folder is used.
    '
    ' Typical usage in the RecordSource for a form or report where Id is
    ' the unique ID and Url is the hyperlink field holding the URL to
    ' the picture file to be displayed:
    '
    '   - to a cached file where parameter Id is not used:
    '
    '   Select *, UrlContent(0, [Url]) As Path From SomeTable;
    '
    '   - or, where Id is used to create the local file name:
    '
    '   Select *, UrlContent([Id], [Url], "d:\somefolder") As Path From SomeTable;
    '
    ' Then, set ControlSource of the bound picture control to: Path
    '
    ' 2017-05-28. Gustav Brock, Cactus Data ApS, CPH.
    '
    Public Function UrlContent( _
        ByVal Id As Long, _
        ByVal Url As String, _
        Optional ByVal Folder As String) _
        As Variant
    
        Const NoError   As Long = 0
        Const Dot       As String = "."
        Const BackSlash As String = "\"
        
        Dim Address     As String
        Dim Ext         As String
        Dim Path        As String
        Dim Result      As String
        
        ' Strip leading and trailing octothorpes from URL string.
        Address = HyperlinkPart(Url, acAddress)
        ' If Address is a zero-length string, Url was not wrapped in octothorpes.
        If Address = "" Then
            ' Use Url as is.
            Address = Url
        End If
        
        If Folder = "" Then
            ' Import to IE cache.
            Result = DownloadCacheFile(Address)
        Else
            If Right(Folder, 1) <> BackSlash Then
                ' Append a backslash.
                Folder = Folder & BackSlash
            End If
        
            ' Retrieve extension of file name.
            Ext = StrReverse(Split(StrReverse(Address), Dot)(0))
            ' Build full path for downloaded file.
            Path = Folder & CStr(Id) & Dot & Ext
            
            If DownloadFile(Address, Path) = NoError Then
                Result = Path
            End If
        End If
        
        UrlContent = Result
        
    End Function
    

    Example:

    enter image description here