我一直在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,它工作得很好!我希望这有助于其他遇到类似问题的人发现这篇文章有用。
答案 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]字段...
...将自动从指定的文件中检索图像
无需VBA。
另请注意,图像文件不必是.bmp文件。