'如果我没有记错 ACCESS2007 版本的Img控件应该可以显示。
'
'还看一看朱亦文写过代码吧。
----------------------------------
'获取图像数据并将其显示在pic中,返回True表示成功
'参数说明:
' - pic 用来显示读出来的图像的图片框控件
' - id 存放在数据库中的图像ID(自动编号)
' - m 为0时将取出的图像显示在pic中,为1时出现导出图像对话框
' - filename 当m设为1时这个参数提供一个默认文件名,m为0时可以不设置
Public Function ReadPictureData(ByRef pic As PictureBox, ByVal id As Long, Optional ByVal m As Byte, Optional ByVal FileName As String) As Boolean
On Error GoTo err
Dim Data() As Byte, i As Integer
Dim Conn1 As New ADODB.Connection '以ADO方式打开的数据库
Dim Rs1 As New ADODB.Recordset '数据集合
Dim nLow As Long, cbMem As Long, hMem As Long, lpMem As Long
Dim istm As stdole.IUnknown
Dim IID_IPicture As Guid
Dim ipic As IPicture
Dim mPic As IPictureDisp
'读取出数据
If Rs1.State <> 0 Then Rs1.Close
If Conn1.State <> 0 Then Conn1.Close
Conn1.Open LinkStr
SQL = "select Picture from tab_App where ID = " & id
Rs1.Open SQL, Conn1, 1, 1
If Rs1.RecordCount < 1 Then GoTo err
Data() = Rs1("Picture").GetChunk(7500000)
If Rs1.State <> 0 Then Rs1.Close
If Conn1.State <> 0 Then Conn1.Close
If m = 1 Then
'导出图像
i = FreeFile
Open FileName For Output As #i
Close #i
i = FreeFile
Open FileName For Binary Access Write As #i
Put #i, 1, Data
Close #i
ReadPictureData = True
Exit Function
End If
'将内存数据data()变成可显示的IPictureDisp图像后显示
pic.AutoSize = True
nLow = LBound(Data)
On Error GoTo 0
cbMem = (UBound(Data) - nLow) + 1
hMem = GlobalAlloc(GMEM_MOVEABLE, cbMem)
If hMem Then
lpMem = GlobalLock(hMem)
If lpMem Then
MoveMemory ByVal lpMem, Data(nLow), cbMem
Call GlobalUnlock(hMem)
If (CreateStreamOnHGlobal(hMem, CTrue, istm) = S_OK) Then _
If (CLSIDFromString(StrPtr(sIID_IPicture), IID_IPicture) = S_OK) Then _
Call OleLoadPicture(ByVal ObjPtr(istm), cbMem, CFalse, IID_IPicture, mPic)
End If
End If
If mPic Is Nothing Then GoTo err
Set pic.Picture = mPic
pic.AutoSize = False
Set mPic = Nothing
'返回成功
ReadPictureData = True
Exit Function
err:
If Rs1.State <> 0 Then Rs1.Close
If Conn1.State <> 0 Then Conn1.Close
ReadPictureData = False
If err.Number <> 0 Then MsgBox err.Description, 48, "显示图像"
End Function
--------------------------------------------
'以上代码你可以稍做修改直接用在你的程序中.