Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> ADO/DAO/ADO.NET  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701922
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何使用 ADO 來压缩或修复 Access2007 *.accdb 文件?(jro的使用)

作者:cg1  摘自:access911.net  :cg1  更新日期:2007-7-16  浏览人次:

 

问题:

如何使用 ADO 來压缩或修复 Access2007 *.accdb 文件?(jro的使用)

 

回答:

首先,ACCESS 2000 - 2003 请参考以下文章及其相关文章: 
 
    如何使用 ADO 來压缩或修复 MS Access 文件?(jro的使用) 
    http://access911.net/?kbid;71FAB71E 

在 access 2007 中连接字串有所更改,不过参数 Engine Type = 5 还是原来的,代码如下:


Function RunTest()
    CompactDatabse_2007_JRO CurrentProject.Path & "\a.accdb", _
                            CurrentProject.Path & "\b.accdb"
End Function

'===========================================================
' 过程及函数名:  CompactDatabse_2007_JRO
' 版本号      :  1.0
' 说明        :  本函数作用:压缩修复 access2007 格式数据库
' 引用        :  Microsoft Jet and Replication Objects 2.6 Library
'                 Microsoft Office 12.0 Access Database engine Object Library
' 输入参数    :  SourceAccdb,文本,源数据库的路径及文件名
'                 TargetAccdb,文本,目标数据库的路径及文件名
' 输出值      :  --
' 返回值      :  Boolean,true 代表压缩成功,false 代表压缩失败
' 调用演示    :  CompactDatabse_2007_JRO "a.accdb", "b.accdb"
'                 (或请直接看 RunTest 过程。)
' 最后修改日期:  2007-7-16 17:22:00
' 示例地址    :  http://access911.net/?kbid;72FABE1E1BDCEEF3
' 作者        :  cg1
' 网站        :  http://access911.net
' 电子邮件    :  access911@gmail.com
' 版权        :  作者保留一切权力,
'                 请在公布本代码时将本段说明一起公布,谢谢!
'===========================================================

Function CompactDatabse_2007_JRO(ByVal SourceAccdb As String, _
                                ByVal TargetAccdb As String) As Boolean
On Error Resume Next
    Dim JRO As JRO.JetEngine
    Set JRO = New JRO.JetEngine
    Dim strS As String
    Dim strT As String
    strS = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & SourceAccdb
    strT = "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & TargetAccdb & ";Jet OLEDB:Engine Type=5"
    JRO.CompactDatabase strS, strT
    
    If Err <> 0 Then
        CompactDatabse_2007_JRO = False
        Debug.Print Err.Number, Err.Description
        Err.Clear
    Else
        CompactDatabse_2007_JRO = True
    End If
End Function



http://access911.net/down/eg/eg_CompactRepairAccdb.rar
 (77KB)

上述代码在压缩修复包含多值字段的数据库时会出现以下错误:
'-2147467259   无法完成对该数据库的操作,因为它使用了附件或多值查阅字段。

这时请使用DAO.DBEngine.120 来进行压缩修复,代码如下:

Function CompactDatabase_2007_DAO()
    Dim d As New DAO.DBEngine
    'Set d = CreateObject("DAO.DBEngine.120")
    d.CompactDatabase CurrentProject.Path & "\资产.accdb", _
        CurrentProject.Path & "\资产 backup.accdb", , dbVersion120
End Function

资料参考:
How To Compact Microsoft Access Database Through ADO
http://support.microsoft.com/kb/230501/en-us


 

本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接


 

 

 
相关文章
     没有手动相关文章
     如何用DAO压缩修复数据库
     如何使用 ADO 來压缩或修复 MS Access 文件?(jro的使用)
     什么是UNICODE压缩,开启UNICODE压缩是否有必要?
     ACCESS为什么会提示自动修复自动备份?为什么会提示错误后自动关闭?如何保持 Jet 4.0 ...
     如何在数据库打开时压缩数据库?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利