0

当我尝试压缩我的 Access 2010 数据库(无密码)时,我收到错误消息Class Not Registered I am using Visual Studio 2010,我不知道这个问题是什么。这是我正在使用的代码:

Private Sub Compactdb()

    Dim JRO As JRO.JetEngine
    JRO = New JRO.JetEngine


    'The first source is the original, the second is the compacted database under an other name.
    JRO.CompactDatabase("Provider=Microsoft.Jet.OLEDB.5.0;Data Source=C:\Forte\Ex.mdb; Jet OLEDB:Engine Type=5", "Provider=Microsoft.Jet.OLEDB.5.0;Data Source=C:\Forte\Temp.mdb; JetOLEDB:Engine Type=5")


    'Original (not compacted database is deleted)
    System.IO.File.Delete("C:\Forte\Ex.mdb")


    'Compacted database is renamed to the original databas's neme. 
    Rename("C:\Forte\Temp.mdb", "C:\Forte\Ex.mdb")


    'User notification
    MsgBox("The database was compacted successfully")

End Sub

如果我将 Jet.OLEDB.5.0 更改为 4.0,我会收到Unrecognized 数据库格式的不同错误消息

4

1 回答 1

0
    Try
        Dim ParentCNN As String
        Dim CloneCNN As String
        Dim JrO As New JRO.JetEngine

        ParentCNN = "PROVIDER = MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE = C:\Forte\Fortedb.accdb;JET OLEDB:DATABASE PASSWORD = 21061975;"
        CloneCNN = "PROVIDER = MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE = C:\Forte\Temp.accdb;JET OLEDB:DATABASE PASSWORD = 21061975;Jet OLEDB:Engine Type=5"
        'If cnnMDE.State = ConnectionState.Open Then
        '    cnnMDE.Close()
        'End If
        JrO.CompactDatabase(ParentCNN, CloneCNN)
        If System.IO.File.Exists("C:\Forte\Temp.accdb") Then
            System.IO.File.Delete("C:\Forte\Fortedb.accdb")
            Rename("C:\Forte\Temp.accdb", "C:\Forte\Fortedb.accdb")
        End If
    Catch ex As Exception
        MainTextBox.AppendText(Environment.NewLine & "Database Compression Failure :" & vbCr & ex.Message)
    End Try
于 2013-06-27T17:40:20.663 回答