🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych.msaccess
2 messages
2 total messages Started by Phantom Mon, 25 Apr 2022 04:43
Naprawa bardzo uszkodzonej bazy danych
#134066
Author: Phantom
Date: Mon, 25 Apr 2022 04:43
77 lines
3137 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
#134067
Author: Phantom
Date: Mon, 25 Apr 2022 06:17
12 lines
457 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