Tipp 4.17 - Gelöschte Tabelle wiederherstellen

Wie kann ich das Löschen einer Tabelle wieder rückgängig machen?

Ups, Sie haben aus versehen eine Tabelle in Ihrer Datenbank gelöscht! Ihr Blutdruck steigt und Sie fühlen plötzlich ein unwohles Gefühl in der Magengegend. Und nun? Sie haben unter bestimmten Vorraussetzungen mindestens drei Möglichkeiten, das Löschen dieser Tabelle wieder rückgängig zu machen.

1. Möglichkeit: Sie haben eine Datensicherung von Ihrer Datenbank

100-%ige Genesung! Spielen Sie einfach Ihre Datensicherung zurück.

2. Möglichkeit: Tastenkombination [STRG]+Z (Menü BearbeitenRückgängig)

100- bis 75-%ige Genesung! Ab Microsoft Access XP können Sie bis zu 20 Aktionen innerhalb Ihrer Datenbank rückgängig machen (vorausgesetzt, die Datenbank wurde noch nicht geschlossen). Bis Microsoft Access 2000 jeweils nur eine Aktion, d.h. wenn Sie zwischenzeitlich andere Arbeitsschritte durchführen, haben Sie keine Chance, die Tabelle wieder herzustellen. Hier müssen Sie dann auf die 3. Möglichkeit zurückgreifen.

3. Möglichkeit: Sie stellen die Tabelle über DAO, sprich über VBA wieder her!

100- bis 50-%ige Genesung! Die letzte Möglichkeit sollten Sie in Betracht ziehen, wenn o.g. scheitert. Aber auch hier gibt’s leider einige Einschränkungen:

  • Ihre Tabelle wurde im Datenbankfenster direkt gelöscht, nicht über eine SQL-Abfrage (DROP-Anweisung) oder per Code
  • Ihre Datenbank wurde noch nicht geschlossen, nachdem Sie die Tabelle gelöscht haben
  • Ihre Datenbank wurde noch nicht komprimiert/repariert, nachdem Sie die Tabelle gelöscht haben

Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Beispiel:

' Gelöschte Tabelle über VBA wieder herstellen
Public Sub RestoreDeleteTable(Optional psName As String = "tblRestore")
 
  '// -----------------------------------------------------
  '// Methode   | Versucht, das Löschen einer Tabelle wieder
  '               rückgängig zu machen.
  '// -----------------------------------------------------
  '// Parameter | psName - Optional, Name der gelöschten
  '                        Tabelle
  '// -----------------------------------------------------
  '// Erstellt  | Manuela Kulpa
  '//           | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
  '// Beispielaufruf im Direktfenster:
  '   RestoreDeleteTable oder
  '   RestoreDeleteTable "NameDerGelöschtenTabelle"
  '// -----------------------------------------------------
 
  Dim dbs As DAO.Database
  Dim tdf As DAO.TableDef
 
  Dim sTable As String
  Dim sSQL As String
  Dim sMsg As String
  Dim fFind As Boolean
 
  On Error GoTo RestoreDeleteTable_Err
 
  Set dbs = CurrentDb()
 
  ' Schleife über alle Tabellen-Objekte
  For Each tdf In dbs.TableDefs
    ' Standardüberprüfung auf temporäre Tabelle
    If Left(tdf.Name, 4) = "~tmp" Then
      ' Wenn gefunden, Anfügeabfrage zusammen basteln
      sTable = tdf.Name
      sSQL = "SELECT [" & sTable & "].* INTO " & psName
      sSQL = sSQL & " FROM [" & sTable & "];"
      ' Anfügeabfrage ausführen
      dbs.Execute sSQL, dbFailOnError
      ' Erfolgsmeldung definieren
      sMsg = "Die gelöschte Tabelle: " & psName & _
             " wurde wieder hergestellt!"
      ' Erfolg speichern
      fFind = True
      ' Schleife verlassen
      Exit For
    End If
  Next
 
  ' Falls keine Tabelle zum Wiederherstellen
  ' gefunden wurde
  If fFind = False Then
    sMsg = "Keine Tabelle zum Wiederherstellen gefunden!"
  End If
 
  ' Feedback der Aktion
  MsgBox sMsg, vbInformation, "Wiederherstellung"
 
RestoreDeleteTable_Exit:
  On Error GoTo 0
  ' Speicher freigeben
  If Not dbs Is Nothing Then dbs.Close: Set dbs = Nothing
  Exit Sub
 
RestoreDeleteTable_Err:
  MsgBox "Fehler " & Err.Number & ": " & _
         Err.Description, vbCritical, _
         "modDaoAdo.RestoreDeleteTable"
  Resume RestoreDeleteTable_Exit
 
End Sub

ExpertentippTipp: Falls Sie ein kleines Tool suchen, mit dem Sie regelmäßig Ihre Datenbanken sichern können, schauen Sie sich doch mal unser Add-In EicSave - Datensicherung ganz einfach an ;o).