如何显示MS Access表附件或存储在表单上SharePoint位置的图像?

问题描述

我正在使用Office 365的Microsoft Access为一个工作项目制作一个小型游戏。我有一个表格,其中包含所有答案以及作为附件存储的相关图片用户将通过SQL查询滚动浏览通过“记录源”提供的记录。

我想在用户导航时显示与每个记录相关的图像。

我希望将图像存储在其他位置,但是并非所有目标用户都可以访问公用网络文件夹。我确实可以访问常见的SharePoint位置,可以在其中将其结果上传链接的SharePoint列表中,但是当我尝试从SharePoint位置插入图像时,MS Access不允许使用“网址”。

在测试中,我使用VBA通过子窗体上的“图片属性”将图像(托管在网络文件夹中)显示为背景,但由于并非所有用户都可以访问公用网络文件夹,因此我可以在生产中做到这一点。 (创建此文件夹后,发现没有公用文件夹。)

如何在附件中显示图片

OR

如何使用SharePoint托管图像?

“开箱即用”的MS Access是否有可能实现这些目的?

编辑:使用.accdr格式来防止用户查看表格中的答案

解决方法

由于您将拥有图片的URL,因此可以使用我喜欢的功能 UrlContent

' 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

完整的代码,文档和演示可以在我的项目VBA.PictureUrl中找到。