我是winxp+acesss2k的平台,我在access建一个数据库,库中有表,表的字段很简单,就是编号和OLE
问题一:网友可以在OLE里插入WORD文档后,然后在表的OLE那个地方会出现“长二进制数据”,可我插入同样的文档之后,那个地方却是“word文档”,请问这是为什么?应该怎样改正,
问题二:当OLE插入那个长二进制数据之后,并出现“长二进制数据”的字样之后,我双击该字段 ,出现“Microsoft Access在Microsoft Access与OLE服务器或activeX控件通讯是出现问题,关闭OLE服务器再在Microsoft Access外部重新启动,然后在Microsoft Access中重新刚才的操作”---我苦笑不得,不知所措!
请问这是为什么?(请注意,这绝对不是盗版的问题)
**********************************************************
问题三:我是winxp+access2k+vb6.0的,我想用代码把access2k中备注型数据的默认属性“必填字段--否,Unicode压缩--是”,改为“必填字段--是,Unicode压缩--否”,把文本型数据的默认属性“必填字段--否,Unicode压缩--是”,改为“必填字段--是,Unicode压缩--否”,把数字型数据的默认属性“必填字段--否”,改为“必填字段--是”,应该怎么写?
问题一:网友可以在OLE里插入WORD文档后,然后在表的OLE那个地方会出现“长二进制数据”,可我插入同样的文档之后,那个地方却是“word文档”,请问这是为什么?应该怎样改正,
问题二:当OLE插入那个长二进制数据之后,并出现“长二进制数据”的字样之后,我双击该字段 ,出现“Microsoft Access在Microsoft Access与OLE服务器或activeX控件通讯是出现问题,关闭OLE服务器再在Microsoft Access外部重新启动,然后在Microsoft Access中重新刚才的操作”---我苦笑不得,不知所措!
请问这是为什么?(请注意,这绝对不是盗版的问题)
**********************************************************
问题三:我是winxp+access2k+vb6.0的,我想用代码把access2k中备注型数据的默认属性“必填字段--否,Unicode压缩--是”,改为“必填字段--是,Unicode压缩--否”,把文本型数据的默认属性“必填字段--否,Unicode压缩--是”,改为“必填字段--是,Unicode压缩--否”,把数字型数据的默认属性“必填字段--否”,改为“必填字段--是”,应该怎么写?
插入方式有:手动插入文档、用程序写入二进制流(用ACCESS 自己的二进制流或者直接读取磁盘上文件的二进制流,其结果完全不同的!)
问题一网友使用了,第二种,但是不知道是哪种二进制流。你却使用了手动插入
问题二插入二进制流后是绝对不能用OLE服务器来打开的,因为他根本不支持
问题三使用 ADO /DAO 来完成。
上述所有的解答在 HTTP://ACCESS911.NET 中以及帮助中全都有关于此主题请参考:
《表》数据库与图片的关系如何处理?
http://access911.net/index.asp?u1=a&u2=71FAB51E16DC关于此主题请参考:
如何更改表的某一个字段的属性比如允许空字符《表》
http://access911.net/index.asp?u1=a&u2=73FABF1E1BDC
请举一反三
保存的方式并不全是文件的二进制码,
应该还有OLE格式的标志。所以现实为Word文档。
所以再使用程序读取文件插入的文件二进制格式,
仅仅在OLE字段上显示二进制格式,它不带有标志文件格式的信息无法直接打开。
可以保存成文件再打开。第三个问题可以使用ADO和相应的SQL语句修改表结构。
不过建议你表结构定义完全后不要随意修改。
程序就处理数据逻辑好了,不要在其中修改数据结构。
可以保存成文件再打开。-----是的,我就是这样的,这并不影响我的问题出现啊
不过建议你表结构定义完全后不要随意修改。----可客户要求如此,没办法
'** 数据库使用 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
谢谢!
to cuizm(射天狼):我想实现的就是在vb6.0+access2k里的OLE字段内容的输入,导出和编辑等常用功能,
我现在正在找毛病,第一次做项目,难免要走弯路的-----我的一位师兄说。。
神啊,救救我吧