各位老鳥:
我在 VB6.0 當中用到OLE對象文件﹐文件類型為 ﹕"Word.Document.8"
請問﹕我如何才能把這個OLE對象文件的數據保存到SQL 2000 的數據庫中去啊﹐
且在數據庫中的字段要設置成什么類型啊﹗是不是要設為二進制啊! 望各位老鳥幫忙,不勝感謝﹗﹗﹗
我在 VB6.0 當中用到OLE對象文件﹐文件類型為 ﹕"Word.Document.8"
請問﹕我如何才能把這個OLE對象文件的數據保存到SQL 2000 的數據庫中去啊﹐
且在數據庫中的字段要設置成什么類型啊﹗是不是要設為二進制啊! 望各位老鳥幫忙,不勝感謝﹗﹗﹗
解决方案 »
- vb comm口的RThreshold设置是1,为什么.Input 里的数据不是一个字节?
- Wise 卸载问题 头痛!
- 我已经能用webbrowser控件中的document属性实现自动填网页的用户名和密码,但如何打开javascipt的链接,help!!!(100)
- 用vb调用word,画出表格,然后向表格中写入东西,为什么偶然会出现错误
- 请问form 与 picturebox 的Cls方法用了哪些Api函数? 我想用Api函数代替cls方法。
- 如何知道鼠标下文件或文件夹的路径?
- 中英文字段查询时的转换问题。
- 读文件条数的函数
- Win98SE中读取只读MDB出错(前提:不进行安装, 没有装VS, 干净的系统)急急急!!!
- 如何禁止程序关闭?(就像记事本一样)
- 如何判断当前月有多少天,如何返回当天是星期几,谢谢各位了。。
- 请问哪位有用VB写的工资管理系统及相应的毕业论文呀?
是
'http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038'*************************************************************************
'**
'** 使用 ADODB.Stream 保存/读取文件到数据库
'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
'**
'** ----- 数据库连接字符串模板 ---------------------------------------
'** ACCESS数据库
'** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
'** ";Data Source=数据库名"
'**
'** SQL数据库
'** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
'** "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
'**'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String
'数据库连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存图片\img.mdb"
Dim iConc As ADODB.Connection
Set iConc = New ADODB.Connection
iConc.Open iConcStr
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile App.Path + "\com.doc"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "select * from img", iConc, 1, 3
.AddNew '新增一条记录
.Fields("photo") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End SubSub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConc As String
'数据库连接字符串
iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存图片\img.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=3" '比如单击datagrid后找到id=3的纪录
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("photo")
.SaveToFile "c:\com.doc"
End With
OLE1.SourceDoc = "c:\\com.doc"
OLE1.Action = 1 'use the old action method
OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件 'Picture1.Picture = LoadPicture("c:\tesd.bmp")
'关闭对象
iRe.Close
iStm.Close
End SubPrivate Sub Command1_Click()
Call s_ReadFile
End SubPrivate Sub Command2_Click()
Call s_SaveFile
End Sub
Dim cn As New ADODB.Connection, rs As New ADODB.RecordsetPrivate Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long'保存
Private Sub Command1_Click()
Dim bteContent() As Byte
Open "C:\aa.doc" For Binary Access Read As #1
bteContent = InputB(LOF(1), #1)
Close #1
If rs.State = adStateOpen Then rs.Close
rs.Open "select * from tablename", cn, adOpenDynamic, adLockPessimistic
rs.AddNew
rs!Name = "张三"
rs!AGE = 22
rs!SEX = "男"
rs.Fields("DOC").AppendChunk bteContent
rs.Update
Erase bteContent
End Sub'打开
Private Sub Command2_Click()
Dim bteContent() As Byte
If rs.State = adStateOpen Then rs.Close
rs.Open "select * from tablename", cn, adOpenForwardOnly, adLockReadOnly
bteContent = rs.Fields("DOC").GetChunk(rs.Fields("PHOTO").ActualSize) Open "C:\aa.doc" For Binary Access Write As #1
Put #1, , bteContent
Close #1
ShellExecute Me.hwnd, "open", "c:\aa.doc", vbNullString, vbNullString, 1
End SubPrivate Sub Form_Load()
On Error GoTo Errhandle
cn.ConnectionString = "Driver={SQL Server};SERVER=DataServer;DATABASE=zxzx;UID=information;PWD=information*&#"
cn.Open
Exit Sub
Errhandle:
MsgBox Err.Description, vbExclamation
End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
On Error Resume Next
rs.Close
Set rs = Nothing
cn.Close
Set cn = 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
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()Private Sub Form_Initialize()
InitCommonControls
End Sub'调用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=True;" & _
"User ID=用户名;Password=密码;"& _
"Initial Catalog=数据库名;Data Source=SQL服务器名"
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(1).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
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()Private Sub Form_Initialize()
InitCommonControls
End Sub