你完全可以把OLE字段绑定到POCTUREBOX中 只是你在把图片保存到OLE字段中处理一下,把他转成二进制后在放到OLE字段中,代码如下: Dim sFile As String '''''''先选择图片 With CommonDialog1 .DialogTitle = "打开" .CancelError = False 'ToDo: 设置 common dialog 控件的标志和属性 .Filter = "图形文件 *.BMP;*.JPG;*.GIF;*.PIC;*.TIF|*.BMP;*.JPG;*.GIF;*.PIC;*.TIF|" .ShowOpen If Len(.FileName) = 0 Then Exit Sub End If sFile = .FileName End With Dim LNGLOGOSIZE As Long '图形文件长度
LNGLOGOSIZE = FileLen(sFile) If LNGLOGOSIZE > 999999 Then MsgBox "图形文件太大,请将图形文件压缩或缩小到1M以内", vbInformation, Msg_Title4 Exit Sub End If
LNGLOGOSIZE = FileLen(sFile) Dim TEMPBUF() As Byte ReDim TEMPBUF(LNGLOGOSIZE) '100) Open sFile For Binary As #1 Get #1, , TEMPBUF Rs1!GOOD_IMAGE.AppendChunk (TEMPBUF) ''''把图片放到字段中 Close #1 Image1.Picture = LoadPicture(sFile) Rs1.UpdateBatch Rs1.MovePrevious Rs1.MoveNext
Sub show_picture() Dim rst As Recordset Dim sSql As String Dim I As Integer Dim bit1() As Byte Dim sa As String Set rst = adoconnect3("db2.mdb", "表1", "*", "") If rst.EOF Or rst.BOF Then Exit Sub Else Picture1.Picture = Nothing If rst("Picture").ActualSize > 0 Then bit1 = rst.Fields("Picture").GetChunk(rst("Picture").ActualSize) '然后将字节数组的内容拼装成文件即可 Open "c:\1.bmp" For Binary As #1
Put 1, 1, bit1 Close 1 Picture1.Picture = LoadPicture("c:\1.bmp") Kill ("c:\1.bmp") End If End If rst.Close Set rst = Nothing Exit Sub Err: MsgBox "读取Picture出错!", OKOnly, "系统提示" End Sub
只是你在把图片保存到OLE字段中处理一下,把他转成二进制后在放到OLE字段中,代码如下:
Dim sFile As String
'''''''先选择图片
With CommonDialog1
.DialogTitle = "打开"
.CancelError = False
'ToDo: 设置 common dialog 控件的标志和属性
.Filter = "图形文件 *.BMP;*.JPG;*.GIF;*.PIC;*.TIF|*.BMP;*.JPG;*.GIF;*.PIC;*.TIF|"
.ShowOpen
If Len(.FileName) = 0 Then
Exit Sub
End If
sFile = .FileName
End With
Dim LNGLOGOSIZE As Long '图形文件长度
LNGLOGOSIZE = FileLen(sFile)
If LNGLOGOSIZE > 999999 Then
MsgBox "图形文件太大,请将图形文件压缩或缩小到1M以内", vbInformation, Msg_Title4
Exit Sub
End If
LNGLOGOSIZE = FileLen(sFile)
Dim TEMPBUF() As Byte
ReDim TEMPBUF(LNGLOGOSIZE) '100)
Open sFile For Binary As #1
Get #1, , TEMPBUF
Rs1!GOOD_IMAGE.AppendChunk (TEMPBUF) ''''把图片放到字段中
Close #1
Image1.Picture = LoadPicture(sFile)
Rs1.UpdateBatch
Rs1.MovePrevious
Rs1.MoveNext
首先感谢你提供的代码,但“Image1.Picture = LoadPicture(sFile)”这不算“绑定”吧
Dim rst As Recordset
Dim sSql As String
Dim I As Integer
Dim bit1() As Byte
Dim sa As String
Set rst = adoconnect3("db2.mdb", "表1", "*", "")
If rst.EOF Or rst.BOF Then
Exit Sub
Else
Picture1.Picture = Nothing
If rst("Picture").ActualSize > 0 Then
bit1 = rst.Fields("Picture").GetChunk(rst("Picture").ActualSize)
'然后将字节数组的内容拼装成文件即可
Open "c:\1.bmp" For Binary As #1
Put 1, 1, bit1
Close 1
Picture1.Picture = LoadPicture("c:\1.bmp")
Kill ("c:\1.bmp") End If
End If
rst.Close
Set rst = Nothing
Exit Sub
Err:
MsgBox "读取Picture出错!", OKOnly, "系统提示"
End Sub
我以前用的是ADO绑定,就是在POCTUREBOX的datasource用ADODC
datafield就是你的OLE对象,
你可以试试,你用查询,POCTUREBOX就可以显示图片了
我是试过把POCTUREBOX的datasource用ADODC,datafield设对应的字段,但不能显示,希望你可再试一试可否行。footballboy(郑创斌):
可以详细说明做法吗?或者有什么要注意的地方希望各位支持,问题解开立即送上分
添加Data控件,设定Connect、DatabaseName、Recordsource、设定PictureBox控件的Datasource为Data1,DataField属性为OLE对象类型的字段名