2013-06-27 2 views
0

Когда я пытаюсь скомпилировать базу данных Access 2010 (без пароля), я получаю сообщение об ошибке Класс не зарегистрирован Я использую 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 я получаю другое сообщение об ошибке формата Непризнанный Databse

ответ

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