使用路径从外部源将图像添加到表单中

时间:2014-09-15 20:42:59

标签: image vba ms-access access-vba ms-access-2010

我一直在Google上搜索,以便找到一种更好的方式在Access中显示图像,而无需将图像实际插入数据库。

我通过这个帖子“http://support.microsoft.com/kb/285820”发现了这篇文章“Is there a way to get ms-access to display images from external files”,其中详细介绍了如何通过文件夹/文件设置图片路径,并且它非常适用于“套装” '图片。但是,当我切换到不同的记录时,我希望显示不同的图片。

以下是文章中的代码:

Option Compare Database
Option Explicit

Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String
On Error GoTo Err_DisplayImage

Dim strResult As String
Dim strDatabasePath As String
Dim intSlashLocation As Integer

With ctlImageControl
    If IsNull(strImagePath) Then
        .Visible = False
        strResult = "No image name specified."
    Else
        If InStr(1, strImagePath, "\") = 0 Then
            ' Path is relative
            strDatabasePath = CurrentProject.FullName
            intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))
            strDatabasePath = Left(strDatabasePath, intSlashLocation)
            strImagePath = strDatabasePath & strImagePath
        End If
    .Visible = True
    .Picture = strImagePath
    strResult = "Image found and displayed."
    End If
End With

Exit_DisplayImage:
    DisplayImage = strResult
    Exit Function

Err_DisplayImage:
    Select Case Err.Number
        Case 2220       ' Can't find the picture.
            ctlImageControl.Visible = False
            strResult = "Can't find image in the specified name."
            Resume Exit_DisplayImage:
        Case Else       ' Some other error.
            MsgBox Err.Number & " " & Err.Description
            strResult = "An error occurred displaying image."
            Resume Exit_DisplayImage:
    End Select
End Function

我有一种感觉,我需要放置一行代码,表示像Image.ID =“ID”这样的显示图像,但我无法弄清楚放在哪里而不会出错。我可能会过分看待某些东西,或者我是以错误的方式接近这个?我只是不想在内存方面使用.bmp图像混乱我的数据库,但我觉得我将不得不这样做。

解决:更容易的解决方案是正如Gord Thompson在评论中所述。根据我自己的经验,对.bmp图像使用这种方法会使图像失真并且不对比。我测试了图像的.jpg,它工作得很好!我希望这有助于其他遇到类似问题的人发现这篇文章有用。

1 个答案:

答案 0 :(得分:4)

您引用的Microsoft支持文章适用于Access 2003.在Access 2010(及更高版本)中,有一种更多更简单的方法。您需要做的就是在表单上放置一个Image控件,并将其绑定到表中包含图像文件路径的字段。

例如,使用像这样的[Employees]表

EmployeeID  FirstName  LastName  PhotoPath                        
----------  ---------  --------  ---------------------------------
         1  Gord       Thompson  C:\Users\Public\Pictures\Gord.jpg
         2  Hank       Kingsley  C:\Users\Public\Pictures\Hank.png

您可以使用Control Source是[PhotoPath]字段...

的图像控件

DesignView.png

...将自动从指定的文件中检索图像

FormView.png

无需VBA。

另请注意,图像文件不必是.bmp文件。