用ADO对象,一般可以用GETCHUNK取出二进制数据 (不一定要用STREAM,STREAM需要ADO2.5以后,虽然XP以上基本都是2.5,但某些时候的编程原则是兼容性,就是在同一套体系下,能老则老算了......) 见我的附件,已经做了实例,请自已体会,但留下一点手尾你要自已做完
B6sjLALc.rar
(143.4 KB, 下载次数: 341)
XLS假定和数据库是同一个目录,代码中用了THISWORKBOOK.PATH,其它朋友有兴趣的,解压时注意要把两个文件都解出来测试 主体程式码和注释已经写在下面,附件里的那个窗体代码只是看效果的 '———————————————————————— Sub GetPic() Dim adoCnn Dim adoRs Dim strSql As String, strDataSource As String '<==打开数据库用的字符串变量 Dim strImgFile As String '<==图像文件名字 Dim lngImgSize As Long '<==数据库里的图像字节长度 Dim binImg() As Byte '<==用来取图像的二进制文件 Set adoCnn = CreateObject("adodb.connection") Set adoRs = CreateObject("adodb.recordset") strDataSource = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & ThisWorkbook.Path & "\取出相片.mdb" adoCnn.Open strDataSource strSql = "Select * from 数据" adoRs.Open strSql, adoCnn '以上 ADO一般操作 自已研究 strImgFile = ThisWorkbook.Path & "\temp.jpg" '临时图像文件起名为TEMP,喜欢什么随意 '应该注意的是,你这个数据,其实是JPG,应该起什么后缀,请试过以后再说 adoRs.MoveFirst '<===从第一行记录开始,要全部遍历,请做MOVENEXT到EOF的循环
'下面只演示取第一个记录的图像 lngImgSize = adoRs.Fields("pic").ActualSize ReDim binImg(lngImgSize) binImg = adoRs.Fields("pic").GetChunk(lngImgSize) '注意上面这几行的做法 '下面是古老的文件写入工作... Open strImgFile For Binary As #1 Put #1, , binImg() Close #1 '....其它的,我不写了,全部扫一遍这种工作,请自已练 End Sub
[此贴子已经被清风_ll于2006-8-28 13:04:09编辑过] |