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ü Bearbeiten – Rü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
Tipp: 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
.