Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Naprawa bardzo uszkodzonej bazy danych

22 views
Skip to first unread message

Phantom

unread,
Apr 25, 2022, 7:43:59 AM4/25/22
to
Witam
Nie piszę której wersji dotyczy problem ponieważ zaraz wszystko się wyjaśni.
Posiadam programik (plik vbs z kodm VB), który naprawia mi bardzo uszkodzone bazy danych (daje radę tam gdzie normalna naprawa i defragmentacja nie daje rady).
Moim problemem jest to że ten programik działa z wersją MsAccess 97 i 2000 a potrzebowałbym żeby to było kompatybilne z wersją dla baz danych z rozszerzeniem .accdb.
Programik na pewno przyda się wielu osobom z tego zacnego grona. Mi wielokrotnie uratował nie powiem co.
Pozdrawiam i proszę o pomoc.
Kod zapisany w pliku vbs poniżej:

' ***************** BEGIN CODE HERE ' *****************
'
Dim objScript
Dim objAccess
Dim strPathToMDB
Dim strMsg

' ///////////// NOTE: Użytkownik musi edytować zmienne w tej sekcji /////
'
' Poniższy wiersz kodu jest jedyną zmienną, którą należy edytować
' Musisz podać ścieżkę do Access MDB, która zostanie skompaktowana
'
strPathToMDB = "D:\TKPD\Baza\ZISPD.mdb"
'
' ////////////////////////////////////////////////////////////////

' Ustaw nazwę i ścieżkę dla tymczasowego pliku mdb
strTempDB = "D:\TKPD\Baza\Comp0001.mdb"

' Utwórz obiekt aplikacji Access 97
'Set objAccess = CreateObject("Access.Application.8")

' Dla Access 2000, użyj Application.9
Set objAccess = CreateObject("Access.Application.9")

' Wykonaj DB Compact w tymczasowym pliku mdb
' (Jeśli wystąpi problem, zachowany jest oryginalny plik mdb)
'objAccess.DbEngine.CompactDatabase strPathToMDB ,strTempDB
objAccess.DbEngine.CompactDatabase strPathToMDB ,strTempDB, , , ";pwd=" & "HasloBazyDanych"


If Err.Number > 0 Then
' Wystąpił błąd. Poinformuj użytkownika i zatrzymaj wykonanie
strMsg = "The following error was encountered while compacting database:"
strMsg = strMsg & vbCrLf & vbCrLf & Err.Description
Else
' Utwórz obiekt systemu plików do obsługi manipulacji plikami
Set objScript= CreateObject("Scripting.FileSystemObject")

' Utwórz kopię zapasową oryginalnego pliku jako Filename.mdbz. W przypadku nieokreślonego błędu można go naprawić, usuwając kończące „z”.
'objScript.CopyFile strPathToMDB , strPathToMDB & "z", True
objScript.CopyFile strPathToMDB , strPathToMDB & "_" & Date(), True

' Skopiuj skompaktowany plik mdb by do oryginalnej nazwy pliku
objScript.CopyFile strTempDB, strPathToMDB, True

' Zakończyliśmy pracę z TempDB. Zabij to.
objScript.DeleteFile strTempDB
End If

' Zawsze pamiętaj o sprzątaniu po sobie
Set objAccess = Nothing
Set objScript = Nothing
'
' ****************** END CODE HERE ' ******************

Phantom

unread,
Apr 25, 2022, 9:17:35 AM4/25/22
to
Dobra, nie było tematu.
Wystarczyło zamienić:
Set objAccess = CreateObject("Access.Application.9")
na:
Set objAccess = CreateObject("Access.Application")

Polecam stosowanie tego rozwiązania w podbramkowych sytuacjach.
Ja stosuję to rozwiązane dodatkowo na serwerach sieciowych w nocy jak nikt już nie pracuje na oprogramowaniu. Rano wszystkie bazy naprawione, zdefragmentowane i gotowe do pracy.

Pozdrawiam
Tomek
0 new messages