访问表单中的外部图像

时间:2018-03-19 14:07:55

标签: ms-access ms-access-2016

我有一个带有图片网址的数据集,该网址链接到每条记录中项目的图片。我想创建一个表单,以便查看与该项目相关的数据并查看其中的图片。我是一个相当新的Access,似乎无法弄清楚如何让外部图像显示出来。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以将图片透明地下载到浏览器缓存,然后从缓存中加载它们以显示:

' 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

帮助函数和完整的解释和演示可以在这里找到:

Show pictures directly from URLs in Access forms and reports

代码也位于 GitHub VBA.PictureUrl

相关问题