先得把图片从数据库里读出来才能打印
从数据库读取图片的vb代码
Dim PicFile As String '声明图片路径变量
Dim byt() As Byte '声明二进制数组接收数据库信息
Dim lngch As Long'得到文件号
PicFile = App.Path & "\BokPic\" & rs.Fields(0).Value & ".jpg"
'给该变量符值用图书书号作文件名创建一个图片文件
ReDim byt(rs.Fields(7).ActualSize)
'ActualSize指示字段的值的实际长度
byt = rs.Fields(7).Value
'得到数据库图片信息
lngch = FreeFile '取得空闲的文件号
'将二进制数组byt符值给PicFile的文件
Open PicFile For Binary As #lngch
Put #lngch, , byt
Close #lngch
Image1.Picture = LoadPicture(PicFile)
这个程序的原理就是先写一个路径出来
PicFile = App.Path & "\BokPic\" & rs.Fields(0).Value & ".jpg"
这句话就是先写出一个文件的路径和名称,这个文件现在并不真实存在。而众所周知图片是二进制数据,这个文件会的作用就是存储二进制数据。
Dim byt() As Byte '声明二进制数组接收数据库信息
这里声明就是因为图片在数据库中是以二进制数组存在的,读取出来存储的变量也得是二进制数组。
ReDim byt(rs.Fields(7).ActualSize)
这个语句2个意思一个就是用rs是记录集对象Fields(7)是对应数据库的第7个字段(第7列)例子里数据库的第7个字段是存放图片的字段。用ActualSize属性可以得到当前行这个字段的长度(也就是能得到二进制数组的维数)Redim作用就不用说了吧。
byt = rs.Fields(7).Value
'得到数据库图片信息
解释的很清楚把数据库信息符给声明的二进制数组。
lngch = FreeFile '取得空闲的文件号
'将二进制数组byt符值给PicFile的文件
Open
PicFile For Binary As
#lngch
Put #lngch, , byt
Close
#lngch
Image1.Picture = LoadPicture(PicFile)
取得空闲文件号惯用做法不解释了
几个带颜色的要点就是PicFile为刚才造出来的那个并不存在的文件路径,#lngch为文件号必须不解释了。
Put #lngch, , byt
这句话的意思就是把二进制数组写进造出来的那个文件里。
最后别忘了关闭#lngch文件号,不解释了照着写就可以。
关闭后这时刚才造出来的那个文件就已经存储了数据库里图片的二进制信息,这样那个造出来的文件这时已经真实存在了(也就是可以在硬盘里找到它了)。然后 Image1.Picture = LoadPicture(PicFile)这句话中image1为image控件用此方法,
数据库中的图片就显示在image控建里了。如果把这个做成函数参数就需要rs的数据库记录集对象一个(之前已经打开的),PicFile图片路径一个(最好Byref PicFile传引用)。Image1.Picture = LoadPicture(PicFile)这句话可以去掉。