DBEngine.CompactDatabase("Northwind.mdb", "Nwind2.mdb",dbLangGeneral,dbVersion30);
将数据库Northwind.mdb 压缩,压缩后生成文件Nwind2.mdb.
在代码里压缩如果源文件名和目标文件名相同,文件压缩就会失败,但报告确是成功,可文件大小却没变。只有先压缩成另一个文件,再改名过来。

解决方案 »

  1.   

    Access2000数据库能用ADO压缩吗,DAO好象不能打开Access2000吧
      

  2.   

    dao3.6操纵access2000没问题,ado压缩我也想问
      

  3.   

    http://www.csdn.net/expert/topic/232/232321.shtm
    很全的压缩方法
      

  4.   

    上面是老外的一端代码,我还没有机会测试,大家先试一试,是用ADO实现
    不知道里面的JRO是什么东东 :)'**********************************************************
    'Passing values compactDB module
    'Sour_path = Source path of existing database.
    'Dest_Path = Target path 
    '
    'Note - 
    'Add Microsoft Jet and Replication Objects X.X library,
    'where (X.X is greater than or equal to 2.1).
    '***********************************************************
    'Jet OLEDB:Engine Type  Jet x.x Format MDB Files 
    '*********************  ************************
    ' 1  JET10 
    ' 2 JET11 
    ' 3 JET2X 
    ' 4 JET3X 
    ' 5 JET4X 
    '**********************************************************Option Explicit
     
    Public Function compactDB(ByVal SOUR_path As String, _
       ByVal DEST_path As String) As Boolean
     
      On Error GoTo Err_compact
      Private JRO As New JRO.JetEngine' Source and Destination connection path
      Private DB_sour As String, DB_dest As String   DoEvents
      DB_sour = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
          & SOUR_path
      DB_dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
          & DEST_path & " ;Jet OLEDB:Engine Type=5"
      
         JRO.CompactDatabase DB_sour, DB_dest
      
      compactDB = True
      Exit Function
      
    Err_compact:
      compactDB = False
      MsgBox Err.Description, vbExclamation
    End Function'*************************************************
    ' Usage Module level or form level.
    '*************************************************' Dim source_path,Target_path as string' source_path=App.Path & "\Nwind.MDB"
    ' Target_path=App.Path & "\CompactNwind.MDB"' If not compactDB(source_path,Target_path) Then
    ' MsgBox "An error occurred while attempt to rename database " _
    ' & vbCrLf & vbCrLf & DBCP_Name, vbExclamation
    ' End If
      

  5.   

    引用 Microsoft Jet and Replication Objects 2.X
    语法
    JetEngine.CompactDatabase(SourceConnection, DestConnection)
    参数
    SourceConnection  字符串值。指定与将要被压缩的源数据库的连接。如果由 SourceConnection 指定的数据库已经打开,将出现错误。
    DestConnection  字符串值。指定与将由压缩创建的目标数据库的连接。如果由 DestConnection 指定的数据库已经存在或另一个同名文件已经存在,将出现错误。例:
    Dim je As New JRO.JetEngine    ' 确保不存在与该压缩数据库同名的文件。
        If Dir("C:\Program Files\Microsoft Office\" & _
            "Office\Samples\Northwind2.mdb") <> "" Then Kill & _
            "C:\Program Files\Microsoft Office\Office\Samples\Northwind2.mdb"    '压缩并加密版本 Northwind 数据库。
        je.CompactDatabase _
        "Provider=Microsoft.Jet.OLEDB.4.0; & _
            "Data Source=C:\Program Files\Microsoft Office\" & _
            "Office\Samples\Northwind.mdb", _
        "Provider=Microsoft.Jet.OLEDB.4.0; & _
            "Data Source=C:\Program Files\Microsoft Office\" & _
            "Office\Samples\Northwind2.mdb;" _
        "Jet OLEDB:Encrypt Database=True"