Private Sub ImportBLOB()Dim rs As New ADODB.Recordset Dim stm As ADODB.StreamSet stm = New ADODB.Stream' Skip any table not found errors On Error Resume Next 'cn.Execute "drop table BinaryObject"On Error GoTo 0 'Create the BinaryObject tablers.Open "Select * from a where 1=2", cn, adOpenKeyset, adLockOptimistic 'Read the binary files from disk stm.Type = adTypeBinary stm.Open stm.LoadFromFile App.Path & "\1.doc"rs.AddNew rs!docPath = App.Path & "\1.doc" rs!doc = stm.Read'Insert the binary object in the table rs.Updaters.Close stm.CloseSet rs = Nothing Set stm = Nothing End Sub
'** 数据库使用 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 = SQLOLEDB.1;Persist Security Info = False;" & _ "User ID = sa;Password = abc;Data Source = SERVER;" & _ "Initial Catalog = youDB" 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 word from tb_word where id=1" Set rs = New ADODB.Recordset rs.Open Sql, cn, adOpenKeyset, adLockOptimistic If Dir(App.Path & "\TempTest.doc") <> "" Then Kill App.Path & "\TempTest.doc" End If 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
Dim stm As ADODB.StreamSet stm = New ADODB.Stream' Skip any table not found errors
On Error Resume Next
'cn.Execute "drop table BinaryObject"On Error GoTo 0
'Create the BinaryObject tablers.Open "Select * from a where 1=2", cn, adOpenKeyset, adLockOptimistic
'Read the binary files from disk
stm.Type = adTypeBinary
stm.Open
stm.LoadFromFile App.Path & "\1.doc"rs.AddNew
rs!docPath = App.Path & "\1.doc"
rs!doc = stm.Read'Insert the binary object in the table
rs.Updaters.Close
stm.CloseSet rs = Nothing
Set stm = Nothing
End Sub
'** 引用 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 = SQLOLEDB.1;Persist Security Info = False;" & _
"User ID = sa;Password = abc;Data Source = SERVER;" & _
"Initial Catalog = youDB"
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 word from tb_word where id=1"
Set rs = New ADODB.Recordset
rs.Open Sql, cn, adOpenKeyset, adLockOptimistic
If Dir(App.Path & "\TempTest.doc") <> "" Then
Kill App.Path & "\TempTest.doc"
End If
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