数据库中的二进制内容都是正常的,但是用ADODB.Stream方法把数据库中的二进制代码写成文件却出现错误,错误提示:activex componet can't creat object意思是:活动部件不能建立对象查找微软知识库,得知的原因如下:
如果满足以下任一条件,就可能发生这种情况: • 未正确注册数据访问对象 (DAO)。- 或 -
• 一个或多个引用丢失。- 或 -
• 存在无效实用工具数据库引用。- 或 -
• 对所需的库没有必需的权限。- 或 -
• 存在损坏的向导文件。 根据其解决方案,处理无效==========================================
另外,出现这种情况的计算机很怪异,同一个机房,有数十台电脑,配置完全一致,操作系统完全一致[因为是克隆的],但就会有些出现问题,有些没有问题。
怀疑是病毒所为,本人求解决方案。注:本人所管理机房从未出现这种情况,本人也使用多台计算机试图模拟能够促使其出现的环境,也没有成功,因此到这里求助,如有遇到类似问题者,共同探讨交流或与之学习。谢谢
如果满足以下任一条件,就可能发生这种情况: • 未正确注册数据访问对象 (DAO)。- 或 -
• 一个或多个引用丢失。- 或 -
• 存在无效实用工具数据库引用。- 或 -
• 对所需的库没有必需的权限。- 或 -
• 存在损坏的向导文件。 根据其解决方案,处理无效==========================================
另外,出现这种情况的计算机很怪异,同一个机房,有数十台电脑,配置完全一致,操作系统完全一致[因为是克隆的],但就会有些出现问题,有些没有问题。
怀疑是病毒所为,本人求解决方案。注:本人所管理机房从未出现这种情况,本人也使用多台计算机试图模拟能够促使其出现的环境,也没有成功,因此到这里求助,如有遇到类似问题者,共同探讨交流或与之学习。谢谢
regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll
但是注册完在部件里面也无法应用,提示是这个文件 CAN‘T BE LOADED
如果是你没有引用ADO的某个Component,不应该有此error,会报错“User-Defined Type not defined”。
很可能你的某个ActiveX没有正确安装或register.
'**
'** 使用 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:\My Documents\客户资料1.mdb"
'读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile "c:\test.doc"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "表", iConc, adOpenKeyset, adLockOptimistic
.AddNew '新增一条记录
.Fields("保存文件内容的字段") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End Sub'从数据库中读取数据,保存成文件
Sub 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=\\xz\c$\Inetpub\zj\zj\zj.mdb"
'打开表
Set iRe = New ADODB.Recordset
iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
iRe.Filter = "id=64"
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("img")
.SaveToFile "c:\test.doc"
End With
'关闭对象
iRe.Close
iStm.Close
End Sub
强烈建议不要使用ADODB.StreamVBAdvisor(Sunlight)的方法我用过,的确会容易出现一些问题,当然了,可能是因为我的客户计算机的变数太大的原因