ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: luyan2006

[求助]access数据中取出相片

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-26 18:01 | 显示全部楼层
本帖已被收录到知识树中,索引项:Access协同
做得很好,可惜只能生成选定学生的一张相片,哪位高手帮改一改代码,把全部相片生成在“学生相片”的文件夹中?谢谢!

TA的精华主题

TA的得分主题

发表于 2006-6-26 18:08 | 显示全部楼层
*_* 老兄你这个...要手把手教到底吗   我无语了  ORZ  

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-26 19:16 | 显示全部楼层

对不起我真的不会呀!帮人帮到底吧!有空请你吃饭

[此贴子已经被作者于2006-6-26 19:17:35编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-26 19:31 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-26 19:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

循环记录集

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-26 19:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-6-27 09:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
能用,但毛病不小!

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-27 10:50 | 显示全部楼层
我试过后也觉得是,

循环记录找不到我健立的文件夹,或提示找不到路径

这句出错

Open strImgFile For Binary As #1
Put #1, , binImg()
Close #1

我用的是XP系统

丸究阵引能不能另外想个办法做一人呢?谢谢

TA的精华主题

TA的得分主题

发表于 2006-6-27 11:23 | 显示全部楼层

略作修改

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 & "\PictureA.mdb"
    adoCnn.Open strDataSource
   
    strSql = "Select * from dataA"
    adoRs.Open strSql, adoCnn
    '以上 ADO一般操作 自已研究
    Do While Not adoRs.EOF  '从头至尾循环
        strImgFile = ThisWorkbook.Path & "\" & adoRs.fields("Name") & ".jpg" '临时图像文件起名为TEMP,喜欢什么随意
        '应该注意的是,你这个数据,其实是JPG,应该起什么后缀,请试过以后再说
       
       
        '下面只演示取第一个记录的图像
        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
        adoRs.movenext  '继续下一条记录
    Loop
       
        '....其它的,我不写了,全部扫一遍这种工作,请自已练
    adoRs.Close
    adoCnn.Close

End Sub

TA的精华主题

TA的得分主题

发表于 2006-6-27 13:24 | 显示全部楼层

  授人以鱼(不是渔)X-D

(本来我个人的意思,不是十万火急的情况,自已动手做出来比较好,这种工作真的是手尾啊)

下面是运行的结果:一堆相片(不是代码)

ylMdKDVq.rar (133.25 KB, 下载次数: 276)

在程序中,相关改动过的代码部分

'_____________________________________________________

。。。。。。

。。。。

adoRs.MoveFirst   '<===从第一行记录开始,准备全部遍历

intCount = 1    '序号,拿来做文件编号

Do While Not adoRs.EOF     '循环,直到文件尾
strname = adoRs.Fields("Name")    '连名字都取出来
strImgFile = ThisWorkbook.Path & "\" & Format(CStr(intcount), "00") & strname & ".jpg" '注意FORMAT是规范两位数的编号

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

'....往下一条记录,序号加1
adoRs.MoveNext
intcount = intcount + 1
Loop
'————————————————————————


[此贴子已经被作者于2006-6-27 13:30:00编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-2 15:17 , Processed in 0.037406 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表