Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe(1)
.SaveToFile App.Path & "\Test.doc" !!!!!!!!这里提示写入文件失败
End With
是不是在添加控件的时候应该选择链接呀
怎么才能在Call ReadFile的时候在OLE控件中显示文档内容呀
!!!
请勿提供以下URL
http://community.csdn.net/Expert/topic/3031/3031554.xml?temp=.314007
http://community.csdn.net/Expert/topic/3093/3093257.xml?temp=.7691156
我看过了...
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe(1)
.SaveToFile App.Path & "\Test.doc" !!!!!!!!这里提示写入文件失败
End With
是不是在添加控件的时候应该选择链接呀
怎么才能在Call ReadFile的时候在OLE控件中显示文档内容呀
!!!
请勿提供以下URL
http://community.csdn.net/Expert/topic/3031/3031554.xml?temp=.314007
http://community.csdn.net/Expert/topic/3093/3093257.xml?temp=.7691156
我看过了...
字段1类型为OLE对象
OLE控件是以由文件创建的方法设置的,没有钩选链接,也没有钩选显示为图标,
把文档存入ACCESS库中的过程已经实现(应该是吧,在ACCESS的表中该字段显示的均为“长二进制数据”,是实现了吧?)我现在用来写入和读取文档的OLE控件均为OLE1,请大家帮我看看
这个对你应该有用
http://office.9zp.com/dispbbs.asp?boardID=15&ID=2162
就照上面的思路,能解决吗?
下面的代码我又测试了一下,没有问题
字段类型是image类型
'*************************************************************************
'**
'** 使用 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"
iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
"User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
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 iConcstr As String
'数据库连接字符串
'iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
' ";Data Source=F:\csdn_vb\database\保存图片\img.mdb"
iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
"User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
Dim iConc As ADODB.Connection
Set iConc = New ADODB.Connection
iConc.Open iConcstr
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "select * from img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=3"
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("photo")
.SaveToFile App.Path & "\cc.doc"
End With
OLE1.SourceDoc =App.Path & "\cc.doc"
OLE1.Action = 1 'use the old action method
OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件
'关闭对象
iRe.Close
iStm.Close
End SubPrivate Sub Command1_Click()
Call s_ReadFile
End SubPrivate Sub Command2_Click()
Call s_SaveFile
End Sub
那OLE控件怎么显示文档的内容呢?
我指的是,
我添加的OLE控件设置的是“由文件创建”文档(也就是APP.path下的Test.doc文档,这样不能实现以上的过程吗?应该怎么设置?)
是不是应该选择“新建”文档
另外,则么建立一个临时文档呢?
龙卷风大哥,在教教我吧
直接添加ole控件,选择新建doc文档读取得时候使用
OLE1.SourceDoc =App.Path & "\cc.doc"
OLE1.Action = 1 'use the old action method
OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件
在读出文件的时候,出现“文件转换”对话框,
应该如何在代码中实现将二进制的WORD文档转换成任何版本的WORD都支持的格式?
就照上面的思路,能解决吗?///////对“DATA控件”有仇啊!用“DATA控件”不用临时文件!
用“DATA控件”连接SQL也没问题!
用“DATA控件”可在同一字段保存不同格式文件
用“DATA控件”可以预览文件(快速)
我只是想一种方法一种方法的解决,
这样到头来什么也学不会,
先把这个搞定,然后再请教您关于用DATA地用法
在读出文件的时候,出现“文件转换”对话框,
应该如何在代码中实现将二进制的WORD文档转换成任何版本的WORD都支持的格式?
靠代码实现,可能有难度
http://community.csdn.net/Expert/topic/2994/2994390.xml?temp=.6713068
贴中有提到:
!!!!!!!!!!!!!!!
“虽然SAVE后的文件通过WORD不能打开(OLE加了文件头),但是可以被OLE使用就OK吧。”
!!!!!!!!!!!!!!!
怎么才能被OLE使用呢?
怎么我一调用就要提示:“转换文件格式”呢?
在OLE调用文档之前难道不是要把二进制文档转换之后写入WORD文档然后才能显示在OLE控件里吗?正如Stream.SaveToFile App.Path & "\Test.doc"里所写的要Save呀,
希望大家都能到这里来讨论讨论,这个问题已经困惑我两天了
OLE1.SourceDoc =App.Path & "\cc.doc"
OLE1.Action = 1 'use the old action method
改成如下一句试试
OLE1.CreateEmbed App.Path & "\cc.doc"
求求各位大虾了,给初学者一点信心吧....
可是当我把链接文档更改为一个存在的RTF文档时,
就会出现报错“无法绑定到源”Debug指定到
!!!!!!!!!!!
OLE2.Action = 1 '建立链接
!!!!!!!!!!!
这一行
这一步你都没有实现,生成doc都不行?
“虽然SAVE后的文件通过WORD不能打开(OLE加了文件头),但是可以被OLE使用就OK吧。”
应该怎么理解呢?
我是这样测试的:
数据库:
access数据库,表1存储Test.doc的字段Type为OLE对象(我系统装的是OfficeXP)
Form:
Form中OLE1为由文件创建,即App.path & "\Test.doc"
OLE2没设置Class和SourceDoc属性,即取消了新建OLE2时弹出的插入对象对话框(InsertObjDlg)
Code:
Private Sub s_SaveFile() '保存文件到数据库中On Error GoTo ErrSave
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcStr As String
Dim TmpDoc As String
TmpDoc = App.Path & "\Test.doc"
'数据库连接字符串
iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=" & App.Path & "\TestBuild.mdb"
Open TmpDoc For Binary As #1
OLE1.SaveToFile 1
Close #1
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile TmpDoc
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "select * from Test", iConcStr, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields(1) = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.CloseExit SubErrSave:
MsgBox "存储出错!", vbExclamation, "错误"
End Sub Private Sub s_ReadFile() '从数据库中读取数据,保存成文件
On Error GoTo ErrRead
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=" & App.Path & "\TestBuild.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "select * from Test", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "Question_ID=1"
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe(1)
.SaveToFile App.Path & "\Result.Doc", adSaveCreateOverWrite
End With
OLE2.SourceDoc = App.Path & "\Result.Doc"
OLE2.Action = 1 '建立链接
OLE2.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件
'关闭对象
iRe.Close
iStm.Close
Exit SubErrRead:
MsgBox "读取出错!", vbExclamation, "错误"End SubPrivate Sub Command1_Click()Call s_SaveFileEnd SubPrivate Sub Command2_Click()Call s_ReadFileEnd Sub
环境winxp+office2000+vbsp6
保存读取没有问题'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
Dim iConcstr As String
Dim iConc As ADODB.Connection'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcstr As String
'读取文件到内容
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
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "select * from img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=6"
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("photo")
.SaveToFile App.Path & "\cc.doc"
End With
OLE1.SourceDoc = App.Path & "\cc.doc" OLE1.Action = 1 'use the old action method
OLE1.SizeMode = vbOLESizeAuttoSize '调节对象大小使其正好充满OLE容器控件
'关闭对象
iRe.Close
iStm.Close
End SubPrivate Sub Command1_Click()
Call s_ReadFile
End SubPrivate Sub Command2_Click()
Call s_SaveFile
End SubPrivate Sub Form_Load()
'数据库连接字符串
iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存图片\access\img.mdb" Set iConc = New ADODB.Connection
iConc.Open iConcstr
End Sub