Thread View: pl.comp.bazy-danych.msaccess
2 messages
2 total messages
Started by Phantom
Mon, 25 Apr 2022 11:43
Naprawa bardzo uszkodzonej bazy danych
Author: Phantom
Date: Mon, 25 Apr 2022 11:43
Date: Mon, 25 Apr 2022 11:43
63 lines
4084 bytes
4084 bytes
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 ' ******************
Re: Naprawa bardzo uszkodzonej bazy danych
Author: Phantom
Date: Mon, 25 Apr 2022 13:17
Date: Mon, 25 Apr 2022 13:17
11 lines
1808 bytes
1808 bytes
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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads