设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 16038|回复: 55
打印 上一主题 下一主题

[模块/函数] Office2010 代码创建、另存、删除附件

[复制链接]
跳转到指定楼层
1#
发表于 2012-1-11 15:47:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Grant 于 2012-1-11 17:22 编辑

用了一天时间写成了这个东西,准备融入到客户管理软件中去,现在很多客户电脑都安装了新的office2010
不得不转型学习office2010的新功能,发现有不少好东西,暂时先研究这个,先贴上来给大家分享一下


  1. Option Compare Database

  2.     '===============================================================================
  3.     '-函数名称:         modAdj
  4.     '-功能描述:         保存,删除,添加附件
  5.     '-输入参数说明:     参数1:strPath As String 目标路径
  6.     '                   参数2:strFileName As String 文件名称
  7.     '                   参数3:ID As long    自动编号
  8.     '-使用语法示例:     AddAdj(自动编号,文件名,路径)    '添加附件
  9.     '                   DelAdj(自动编号,文件名)         '删除附件
  10.     '                   GetAdj(自动编号,列表框)         '读取附件
  11.     '                   GetSave(自动编号,文件名,路径)   '保存附件
  12.     '-参考:
  13.     '-使用注意:
  14.     '-兼容性:           Office2007,Office2010
  15.     '-作者:             Grant
  16.     '-联系方式:         QQ:20991943  Email:20991943@qq.com
  17.     '-更新日期:        2012-01-11
  18.     '===============================================================================
  19.   Public Function AddAdj(ID As Long, strFileName As String, strPath As String)  '添加附件
  20.     Dim db As Database
  21.     Dim Rstable As Recordset
  22.     Dim RsAdj As Recordset2
  23.    
  24.     '数据库
  25.     Set db = DBEngine.Workspaces(0).Databases(0)
  26.    
  27.     '打开表
  28.     Set Rstable = db.OpenRecordset("select * from 企业信息 where ID=" & ID)

  29. '    While Not Rstable.EOF

  30.         '获取附件列的文件集合
  31.         Set RsAdj = Rstable("附件").Value
  32.         '往附件列添加文件
  33.         Rstable.Edit
  34.         RsAdj.AddNew
  35.         RsAdj("FileData").LoadFromFile (strPath)
  36.         RsAdj("FileName") = strFileName
  37.         RsAdj.Update
  38.         Rstable.Update
  39.         Rstable.Close

  40.   End Function

  41.   Public Function DelAdj(ID As Long, strFileName As String) '添加附件
  42.     Dim db As Database
  43.     Dim Rstable As Recordset
  44.     Dim RsAdj As Recordset2
  45.    
  46.     '数据库
  47.     Set db = DBEngine.Workspaces(0).Databases(0)
  48.    
  49.     '打开表
  50.     Set Rstable = db.OpenRecordset("select * from 企业信息 where ID=" & ID)

  51. '    While Not Rstable.EOF

  52.         '获取附件列的文件集合
  53.         Set RsAdj = Rstable("附件").Value
  54.         '往附件列添加文件
  55.         Rstable.Edit
  56.         While Not RsAdj.EOF
  57.         
  58.             If RsAdj("FileName") = strFileName Then
  59.                 Rstable.Edit
  60.                 RsAdj.Delete
  61.                 Rstable.Update
  62.                 Rstable.Close
  63.                 Exit Function
  64.             End If
  65.             RsAdj.MoveNext
  66.         Wend
  67.         Rstable.Close
  68.   End Function

  69. Public Function GetAdj(ID As Long, list As ListBox) '获取附件,读取到list
  70.     Dim db As Database
  71.     Dim Rstable As Recordset
  72.     Dim RsAdj As Recordset2

  73.     Set db = DBEngine.Workspaces(0).Databases(0)    '数据库
  74.     Set Rstable = db.OpenRecordset("select * from 企业信息 where ID=" & ID) '定位表记录

  75.     If Rstable.RecordCount = 0 Then Exit Function     '记录为0退出
  76.         
  77.         Set RsAdj = Rstable("附件").Value
  78.         While Not RsAdj.EOF                  '循环
  79.           list.AddItem RsAdj("FileName")    '读取文件到列表
  80.         ' RsAdj("FileData").SaveToFile ("C:\Documents" & rsatts("FileName").Value)
  81.           RsAdj.MoveNext
  82.         Wend
  83.         
  84.     Rstable.Close
  85.    
  86. End Function

  87. Public Function GetSave(ID As Long, strFileName As String, strPath As String)
  88.     Dim db As Database
  89.     Dim Rstable As Recordset
  90.     Dim RsAdj As Recordset2
  91.    
  92.     '数据库
  93.     Set db = DBEngine.Workspaces(0).Databases(0)
  94.    
  95.     '打开表
  96.     Set Rstable = db.OpenRecordset("select * from 企业信息 where ID=" & ID)

  97.         Set RsAdj = Rstable("附件").Value

  98.         While Not RsAdj.EOF
  99.         
  100.             If RsAdj("FileName") = strFileName Then
  101.                 If Dir(strPath) <> "" Then
  102.                     Kill strPath
  103.                 End If
  104.                
  105.                 RsAdj("FileData").SaveToFile (strPath)
  106.                 Rstable.Close
  107.                 Exit Function
  108.             End If
  109.             RsAdj.MoveNext
  110.         Wend
  111.         Rstable.Close
  112. End Function

复制代码
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 3经验 +30 收起 理由
roych + 10 很给力!
咱家是猫 + 10 赞一个!
todaynew + 10 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-1-11 16:30:03 | 只看该作者
看一下。
3#
发表于 2012-1-11 16:43:32 | 只看该作者
谢谢分享!
4#
发表于 2012-1-11 17:04:12 | 只看该作者
好东西,先学习下
5#
发表于 2012-1-11 17:20:48 | 只看该作者
本帖最后由 todaynew 于 2012-1-11 17:24 编辑

建议将增改删独立成为函数
6#
 楼主| 发表于 2012-1-11 17:24:01 | 只看该作者
todaynew 发表于 2012-1-11 17:20
建议将SQL语句作为参数

是的,这个只是初版,很多地方需要完善,本来还想加入写图形进行美化,不过想想控制不便所以暂时先不加入

点击这里给我发消息

7#
发表于 2012-1-11 19:19:50 | 只看该作者
呵呵,附件,好东西
8#
发表于 2012-1-11 19:40:45 | 只看该作者
我又回来啦.{:soso_e113:}
9#
发表于 2012-1-11 19:57:38 | 只看该作者
谢谢分享!!
10#
发表于 2012-1-11 20:24:35 | 只看该作者
谢谢分享!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 14:51 , Processed in 0.102560 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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