一个关于流(stream)的问题
通过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+一般性错误,请高手解决




