标题:求助~~~~~~~~~~~~~
只看楼主
火凤凰一辉
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-3-18
 问题点数:0 回复次数:1 
求助~~~~~~~~~~~~~
如何在VB里 做到打印  数据库里的图片?

搜索更多相关主题的帖子: 数据库 打印 
2005-03-18 13:50
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
先得把图片从数据库里读出来才能打印 从数据库读取图片的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)这句话可以去掉。
2005-03-18 16:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-13544-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213312 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved