CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  Access

access中的OLE类型字段的存储形式是二进制的吗?如何存取呢?

楼主xuxun(我思故我在)2003-01-04 00:13:31 在 其他数据库开发 / Access 提问

? 问题点数:30、回复次数:3Top

1 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2003-01-04 13:05:22 得分 30

OLE基本就是SQLSERVER   中的   IMAGE  
   
  可以用来存储二进制数据  
  存储代码如下:  
   
  Option   Compare   Database    
  Option   Explicit    
   
  Public   Function   GetFromFile(strTable   As   String,   strField   As   String,   strFilter   As   String,   objFileName   As   String)   As   Boolean    
   
  '============================================================    
  ' 过程函数名:   CommModule.GetFromFile 类型:Function    
  ' 参数:    
  '       strTable   (String)  :准备保存图形数据的表名称    
  '       strField   (String)  :准备保存图形数据的字段名称    
  '       strFilter   (String)    :打开表的过滤字符串,用于定位并确保被打开的表的数据的唯一性    
  '       objFileName   (String)   :准备输入到表里边的图象文件名称    
  ' 返回:如果保存成功,返回True,如果失败,返回False    
  '-------------------------------------------------------------    
  ' 说明:把图象文件的数据保存到表里边    
  '-------------------------------------------------------------    
  ' 修订历史:    
  '=============================================================    
  Dim   recset     As   ADODB.Recordset,   FileData()   As   Byte,   FileNo   As   Long,   FileSize   As   Long,   strSQL   As   String    
   
    strSQL   =   "Select   "   &   strField   &   "   From   "   &   strTable   &   "   Where   "   &   strFilter   &   ";"    
    Set   recset   =   New   ADODB.Recordset    
    recset.Open   strSQL,   CurrentProject.Connection,   adOpenDynamic,   adLockOptimistic    
    GetFromFile   =   True    
    If   recset(strField).Type   <>   DB_OLE   Or   Not   IsFileName(objFileName)   Then    
      GetFromFile   =   False       '如果字段不是OLE字段,或者文件不存在,返回错误    
      GoTo   EndGetFromFile    
    End   If    
    If   recset.EOF   Then       '如果记录不存在,返回错误    
      GetFromFile   =   False    
      GoTo   EndGetFromFile    
    End   If    
    FileSize   =   GetFileSize(objFileName)   '如果被打开的文件大小为零,返回错误    
    If   FileSize   <=   0   Then    
      GetFromFile   =   False    
      GoTo   EndGetFromFile    
    End   If    
    ReDim   FileData(FileSize)      '重新初始化数组    
    FileNo   =   FreeFile            '获取一个空闲的文件号    
    Open   objFileName   For   Binary   As   #FileNo '打开文件    
    Get   #FileNo,   ,   FileData()        '读取文件内容到数组    
    Close   #FileNo              '关闭文件    
    recset(strField).value   =   FileData()   '保存数据    
    recset.Update              '更新数据    
    Erase   FileData           '释放内存    
  EndGetFromfile:    
    recset.Close            '关闭RecordSet    
    Set   recset   =   Nothing        '释放内存    
  End   Function    
   
  Public   Function   SaveToFile(strTable   As   String,   strField   As   String,   strFilter   As   String,   strFileName   As   String)   As   Boolean    
  '============================================================    
  ' 过程函数名:   CommModule.SaveToFile   类型:Function    
  ' 参数:    
  '       strTable   (String)  :保存图形数据的表名称    
  '       strField   (String)  :保存图形数据的字段名称    
  '       strFilter   (String)    :打开表的过滤字符串,用于定位并确保被打开的表的纪录的唯一性    
  '       strFileName   (String)   :准备保存的图象的文件名称    
  ' 返回:如果保存成功,返回True,如果失败,返回False    
  '-------------------------------------------------------------    
  ' 说明:把由GetFromFile函数保存到表中OLE字段的数据还原到文件    
  '-------------------------------------------------------------    
  ' 修订历史:    
  '=============================================================    
  Dim   recset     As   ADODB.Recordset,   FileData()   As   Byte,   FileNo   As   Long,   FileSize   As   Long,   strSQL   As   String    
   
    strSQL   =   "Select   "   &   strField   &   "   From   "   &   strTable   &   "   Where   "   &   strFilter   &   ";"    
    Set   recset   =   New   ADODB.Recordset    
    recset.Open   strSQL,   CurrentProject.Connection,   adOpenDynamic,   adLockOptimistic    
    SaveToFile   =   True    
    If   recset(strField).Type   <>   DB_OLE   Then    
      SaveToFile   =   False       '如果字段不是OLE字段,返回错误    
      GoTo   EndSaveToFile    
    End   If    
    If   recset.EOF   Then       '如果记录不存在,返回错误    
      SaveToFile   =   False    
      GoTo   EndSaveToFile    
    End   If    
    FileNo   =   FreeFile    
    Open   strFileName   For   Binary   As   #FileNo    
    ReDim   FileData(recset(strField).ActualSize)   '重新初始化数组    
    FileData()   =   recset(strField).GetChunk(recset(strField).ActualSize)   '把OLE字段的内容保存到数组    
    Put   #FileNo,   ,   FileData()    '把数组内容保存到文件    
    Close   #FileNo    
    Erase   FileData    
  EndSaveTofile:    
    recset.Close    
    Set   recset   =   Nothing    
  End   Function  
   
  Top

2 楼xuxun(我思故我在)回复于 2003-01-07 00:49:32 得分 0

你的注解很清晰,值得学习Top

3 楼wyzegg(蛋)回复于 2003-01-12 19:44:45 得分 0

如何取到其中的某一位呢Top

相关问题

  • 用SQL6.5的Image字段存储二进制文件时的容量问题
  • 关于二进制字段
  • 如何操作二进制字段????
  • 如何存取二进制对象
  • 怎样存取二进制图片
  • 如何存取二进制数
  • 关于文件的二进制存储
  • 如何存储二进制文件
  • 图象以二进制存储
  • 怎么读出数据库中的二进制字段?

关键词

  • 字段
  • 文件
  • 数据
  • recset
  • getfromfile
  • objfilename
  • strfield
  • endsavetofile
  • 数组
  • 保存

得分解答快速导航

  • 帖主:xuxun
  • changechange

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo