Потеря пароля доступа к БД на компакте, как сбросить с VB? - PullRequest
0 голосов
/ 17 августа 2011

Первый постер здесь ...

Моя программа VB.NET сжимает и восстанавливает мою БД, но где-то в процессе сбрасывает пароль базы данных. Нет проблем, просто сбросьте через VB, верно? Хм ... не знаю, как выполнить эту задачу.

Так что мне нужно знать, как сжать его без потери пароля, или как сбросить пароль после его потери.

Стараясь изо всех сил, чтобы код выглядел достойно в моем посте, дайте мне знать, если есть лучший способ.

Спасибо!

Dim strAccessDatabasePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "App_Data\Squirrel.accdb"        
Dim LockedDbFileInfo As New System.IO.FileInfo(strAccessDatabasePath.Replace(".accdb", ".laccdb"))        
Dim TempFolder As String = System.AppDomain.CurrentDomain.BaseDirectory & "App_Data\temp"        
Dim TempDB As String = TempFolder & "\temp.accdb"

If LockedDbFileInfo.Exists Then            
    MsgBox("Database is in use. Please make sure no users are in the database before performing maintenance.")        
Else            
    MsgBox("This program has detected no current database users and will proceed with database maintenance.")        
End If  

Try            
    Directory.CreateDirectory(TempFolder)        
Catch ex As Exception            
    MsgBox("There has been an error creating a temporary directory in your application directory. Please check credentials and try again.")        
End Try  

Dim time As DateTime = DateTime.Now        
Dim format As String = "MMM d yyyy HHmmss "        
Dim TempDateTime As String = time.ToString(format)         

'Copy DB to backup directory.        
Try            
    File.Copy(strAccessDatabasePath, txtDBbackupFolder.Text & "\" & "DBbkup " & TempDateTime & ".accdb")        
Catch ex As Exception            
    MsgBox("There was an issue writing to the backup folder. Please check credentials and try again.")        
End Try    

'Copy DB to temp directory for maintenance.        
File.Copy(strAccessDatabasePath, TempFolder & "\" & "temp.accdb")        
File.Delete(strAccessDatabasePath)         
Dim JROEng As Object         
JROEng = CreateObject("JRO.JetEngine")         
JROEng.CompactDatabase("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & TempDB & ";Jet OLEDB:Database Password=woodkitten70;Jet OLEDB:Engine Type=5", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
strAccessDatabasePath & ";Jet OLEDB:Engine Type=5")         
'connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\App_Data\Squirrel.accdb;Jet OLEDB:Database Password=XXXXXXXXX" 

Try            
    Kill(TempFolder & "\*.*")        
Catch ex As Exception            
    'MsgBox(ex.Message)        
End Try         
Directory.Delete(TempFolder)`

1 Ответ

0 голосов
/ 17 августа 2011

Можете ли вы обратиться к взаимодействию Access и использовать этот компактный ремонт? «Microsoft.Office.Interop.Access.ApplicationClass.CompactRepair (String, String, [Boolean]) As Boolean»

Public Overridable Function CompactRepair(ByVal SourceFile As String, ByVal DestinationFile As String, Optional ByVal LogFile As Boolean = False) As Boolean

Член Microsoft.Office.Interop.Access.ApplicationClass

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...