当前位置: 首页 > news >正文

ACCESS 导出附件

需求: 

  把登陆窗体中的图片,替换为数据表中的图片.

思路: 

  1.把图片保存到本地

  2.修改图片控件的图片路径

难点:

  1.对附件的操作方法不熟练

  2.不同的数据库操作方法有差异

主要用到的方法:

Field2.SaveToFile 方法 (DAO)

 

效果(左侧图片的变化):

原窗体:

image

 

载入表中图片后的效果:

image

 

实现代码:

版本一.如果图片在本地数据库(不属于外链表)

' 设置登录界面图片的子程序
Sub SetLoginPic()' 定义变量:' rst - 用于操作tblsystemsetting表的记录集' rsA - 用于操作附件字段的记录集' fld - 用于表示附件字段' strFullPath - 存储临时文件完整路径的字符串Dim rst As DAO.Recordset2Dim rsA As DAO.Recordset2Dim fld As DAO.Field2Dim strFullPath As String' 打开系统设置表,注意CurrentDB是本地数据.Set rst = CurrentDb.OpenRecordset("tblsystemsetting")' 获取附件字段Set fld = rst("Attachments")' 检查记录集是否为空If Not rst.EOF Then' 打开附件字段中的记录集Set rsA = fld.value' 检查附件记录集是否为空If Not rsA.EOF Then' 构建临时文件路径:系统临时文件夹 + 附件文件名strFullPath = VBA.Environ("TEMP") & "\" & rsA("FileName")' 忽略错误(如果临时文件已存在)On Error Resume Next' 删除可能已存在的临时文件Kill strFullPath' 将附件中的文件数据保存到临时文件rsA("FileData").SaveToFile strFullPath' 将图片控件Image57的图片设置为临时文件Me.Image57.Picture = strFullPathEnd IfrsA.CloseEnd If        rst.Close' 释放对象变量Set fld = NothingSet rsA = NothingSet rst = Nothing
End Sub

版本二.图片在其他数据库

Sub SetLoginPic(ByVal DBPath As String)Dim rst As DAO.Recordset2Dim rsA As DAO.Recordset2Dim fld As DAO.Field2Dim strFullPath As StringDim dbExternal As DAO.DatabaseDim strConnect As String' 关键1:构建加密数据库连接字符串(注意密码暴露风险)strConnect = ";Database=" & DBPath & ";PWD=数据库密码"' 关键2:静默打开外部数据库(不显示独占/只读提示)Set dbExternal = DBEngine.Workspaces(0).OpenDatabase("", False, False, strConnect)' 关键3:从外部库读取系统设置表Set rst = dbExternal.OpenRecordset("tblsystemsetting")Set fld = rst("Attachments")If Not rst.EOF ThenSet rsA = fld.valueIf Not rsA.EOF Then' 关键4:将附件图片提取到临时目录strFullPath = VBA.Environ("TEMP") & "\" & rsA("FileName")On Error Resume NextKill strFullPath  ' 强制覆盖旧文件rsA("FileData").SaveToFile strFullPath' 核心功能:设置窗体图片Me.Image57.Picture = strFullPathEnd IfrsA.CloseEnd If' 关键5:必须按顺序关闭对象(先记录集后数据库)
    rst.ClosedbExternal.Close' 显式释放对象Set rsA = NothingSet rst = NothingSet dbExternal = Nothing
End Sub

 

http://www.njgz.com.cn/news/630.html

相关文章:

  • 第二周假期进度报告(7.20 - 7.26)
  • CVE-2020-11981 Apache Airflow Celery 消息中间件命令执行漏洞 (复现)
  • nlogn分解质因数 - SPF(目前以学习最快分解质因数)
  • 在express中使用sqlite数据库的方法
  • 7.27
  • [ROI 2023] 峰值 (Day 1)
  • ASP.NET Core MVC 使用 EF Core 实现实体属性驼峰转下划线
  • C++运算符重载
  • CVE-2020-11978 Airflow dag命令注入漏洞 (复现)
  • stp
  • 暑训#1补题
  • 蓝桥杯2025省赛A组游记题解
  • 打开CMD的方式
  • 关于广度优先搜索(BFS)的笔记
  • swagger2访问时报StackOverflow错误
  • 定位堆相关问题:OllyDbg2的off-by-one漏洞分析
  • 用户可控的统一风格迁移框架 - 亚马逊科学研究院
  • ARM简介 - LI,Yi
  • 板刷 ABC 计划
  • 题解:P4191 [CTSC2010] 性能优化
  • Java“class file contains wrong class”解决
  • 电脑中右键打开方式中出现已经卸载的应用程序(如,Dreamweaver)
  • 将 Windows 系统显示时间的精度修改为秒
  • 日记
  • 每日论文7.27——基于嵌入式GPU的指纹汗孔识别软件并行设计
  • XXL-SSO v1.2.0 发布|单点登录框架
  • 一、Web端UI自动化测试--环境搭建
  • 水果机,夺宝动画实现
  • DMP学习路线之进阶
  • 关于逆元目前的两种求法以及证明