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

一个关于流(stream)的问题

楼主wxb1980(小虎)2004-08-01 09:37:53 在 VB / 数据库(包含打印,安装,报表) 提问

通过stream可以读取文件(如*.doc),可不可以通过vb编程运用office组件直接对该stream进行读取? 问题点数:20、回复次数:4Top

1 楼vbman2003(家人)回复于 2004-08-01 11:39:30 得分 20

什么意思?下面的示例代码对你有帮助吗?  
   
  '**   数据库使用   ADODB.Stream   保存/读取Word文档的示例代码  
  '**   引用   Microsoft   ActiveX   Data   Objects   2.5   Library   及以上版本  
  '**   引用   Microsoft   Word   9.0   Objects   Library  
  '**   保存Word文档的字段为word(Access数据库为OLE对象,SQL数据库为二进制数据类型)  
   
  Option   Explicit  
          Dim   cn   As   ADODB.Connection  
          Dim   rs   As   ADODB.Recordset  
          Dim   StmWord   As   ADODB.Stream  
   
  '调用WORD函数  
  Sub   OpenWord(FileName   As   String)  
          Dim   WordTemps   As   New   Word.Application  
          WordTemps.Documents.Add   FileName,   False  
          WordTemps.Visible   =   True  
  End   Sub  
   
  '窗体载入时连接数据库  
  Private   Sub   Form_Load()  
          Set   cn   =   New   ADODB.Connection  
          cn.Open   "Provider=Microsoft.Jet.OLEDB.4.0;"&   _  
                  "Data   Source="   &   App.Path   &   "\db1.mdb;"&   _  
                  "Persist   Security   Info=False"  
  End   Sub  
   
  '将Wowd文档保存到数据库  
  Private   Sub   cmdSave_Click()  
          Set   rs   =   New   ADODB.Recordset  
          rs.Open   "select   *   from   TableName",   _  
                  cn,   adOpenKeyset,   adLockOptimistic  
          Set   StmWord   =   New   ADODB.Stream  
          With   StmWord  
                  .Type   =   adTypeBinary  
                  .Open  
                  .LoadFromFile   "F:\My   Documents\test.doc"  
          End   With  
          rs.AddNew  
          rs.Fields("word").Value   =   StmWord.Read  
          rs.Update  
          StmWord.Close  
          rs.Close  
  End   Sub  
   
  '读取数据库中的Word文档  
  Private   Sub   cmdRead_Click()  
          Dim   Sql   As   String  
          Sql   =   "select   *   from   TableName   where   id=3"  
          Set   rs   =   New   ADODB.Recordset  
          rs.Open   Sql,   cn,   adOpenKeyset,   adLockOptimistic  
          Set   StmWord   =   New   ADODB.Stream  
          With   StmWord  
                  .Mode   =   adModeReadWrite  
                  .Type   =   adTypeBinary  
                  .Open  
                  .Write   rs!Word  
                  .SaveToFile   App.Path   &   "\TempTest.doc"  
                  .Close  
          End   With  
          Call   OpenWord(App.Path   &   "\TempTest.doc")  
          rs.Close  
  End   Sub  
   
   
  Top

2 楼wxb1980(小虎)回复于 2004-08-01 18:53:32 得分 0

这个我知道。我想知道能不能直接用word对stream进行读取,而不需要将stream转化成临时的word文件?将stream转化成临时的word文件后,用户就有可能不通过我们的系统访问到该文件,这样我们的系统对文件的控制就失控了。  
  Top

3 楼vbman2003(家人)回复于 2004-08-02 09:01:41 得分 0

不明白你的意思。上面的代码是调用WORDW读取数据库中的WORD文档,WORD不可能直接读取流文件的,所以读取的是stream转化成临时的word文件。WORD打开文档后可以任意复制,所谓“失控”很难理解。Top

4 楼wxb1980(小虎)回复于 2004-08-02 17:59:59 得分 0

在我们的管理信息系统中,我们将需要管理的电子文件以二进制的形式存储在sql   server数据库中,用户通过客户端的软件来对这些电子文件进行访问。但是,不同的用户对这些电子文件的访问权限是不一样的,如有的用户只能读取该文件的内容,而有的用户却还可以打印,复制。如果采用stream,将其转化成临时文件,那么对与只能读取文件内容的用户,就有可能不通过我们的管理信息系统,直接找到该临时文件,既而对该文件进行打印和复制。Top

相关问题

  • 关于Stream Iterators(流迭代器)。
  • 怎样将一个字符串(string)转化为数据流(stream)?
  • 如何把stream文件流转化为文件?
  • 如何删除流Stream中的0字符(ASCII码为0)?
  • 文件流file stream和字符串在实现上和性能上的比对?
  • 哪位大虾晓得如何用socket(tcp/udp)传送流(stream);换句话说,流如何传送?
  • 关于这个打印类,该传什么参数才对?(怎么传stream流给它?二进制流??文本流和图象流??
  • 求文本字符串转化为二进制流stream的算法代码,javascript或者vbscript均可
  • 如何从Stream中获得Unicode编码的二进制流并转换成GB编码的AnsiString?
  • 从流中获取数据构成图片时(Imange.fromSteam(stream s))发生GDI+一般性错误,请高手解决

关键词

  • 文件
  • word
  • 数据库
  • 文档
  • 转化
  • 用户
  • 代码
  • 系统
  • 管理
  • microsoft

得分解答快速导航

  • 帖主:wxb1980
  • vbman2003

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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