Gelöschte Datensätze zurück holen

(von Christian Hahn)

Schnell ist es passiert, dass man Datensätze gelöscht hat und man es sich wenig später anders überlegt. Aber, gelöschte Datensätze sind erbarmungslos weg. Da wäre es schön, wenn man so etwas Ähnliches hätte wie das Verschieben von Dateien in den Windows-Papierkorb (aus dem man gelöschte Dateien wieder herstellen kann).

Vorschlag: Wir legen uns ein leeres Doppel unserer Datenbank an und nennen es z.B. “Urne”. Alle zu löschenden Datensätze werden erst in die Urne transportiert, bevor sie dann in der Haupt-Datenbank endgültig gelöscht werden.

In unserer Haupt-Datenbank erfolgt das Löschen von Datensätzen ab sofort nicht mehr über den Menü-Befehl “Alle Datensätze löschen…” bzw. die Befehlsschaltfläche, sondern wir legen uns dafür eine eigene Taste im Kopfteil des Layouts an. Das Skript, das von dieser Taste ausgelöst wird, sollte nun allerdings nicht heißen: “Exportiere alle aufgerufenen Datensätze in die Datei Urne”, weil bei jedem Export die Zieldatei Urne überschrieben würde und so die dort bereits vorhandenen Datensätze endgültig verloren gingen (es sei denn, man will das genau so).

Stattdessen bekommt die Datei Urne ein Skript “Importiere alle (aufgerufenen) Datensätze aus der Haupt-Datenbank”. Im Skript in der Haupt-Datenbank wird also zunächst das Skript in Datei Urne aufgerufen und dann werden in der Haupt-Datenbank alle aufgerufenen Datensätze gelöscht.

Erweiterungsmöglichkeiten:
Wenn man mehrere verschiedene Dateien in seinem Datenbank-Projekt hat, muss man nicht für jede Datenbank-Datei eine eigene Urnen-Datei anlegen, dafür reicht eine Datei aus. Diese Urne muss dann allerdings sämtliche Felder aller betreffenden Haupt-Dateien enthalten (und ich fürchte, dass man diese Felder von Hand anlegen muss).

Für die Automatisierung des Imports in die Urnen-Datei müsste dann für jede beteiligte Haupt-Datei wegen der benötigten Importfolge ein eigenes Import-Skript angelegt werden. In den beim Import in die Datei Urne neu angelegten Datensätzen bleiben dann die Felder, die zu den jeweils anderen beteiligten Haupt-Dateien gehören, einfach leer.

Nun bekommt die Datei Urne noch einige weitere Felder, wie z.B. -LöschIndex(Zahl) – LöschDatum(Datum), – LöschUhrzeit(Zeit), – HerkunftsDatei(Text).

Auf diese Weise ließen sich die Datensätze in der Datei Urne leicht nach Gruppen unterscheiden und das Zurückholen der Datensätze würde einfacher. Die Automatisierung dieser zusätzlichen Felder geht einfach. Dazu bedenke man, dass die gerade frisch in die Urne importierten Datensätze zunächst alleine in der Auswahl stehen, sodass man mit dem Skript-Befehl “Ersetzen” / “Durch berechnetes Ergebnis ersetzen:” alle importierten Datensätze auf einmal mit einem passenden Inhalt versehen kann, so z.B. im Feld LöschDatum mit der Funktion “Heute”. (LöschUhrzeit ist lohnend, weil man so Löschvorgänge am selben Tag unterscheiden kann.) Der Skript-Befehl “Ersetzen” erfasst nur die gerade aufgerufenen Datensätze.

Das eigentliche Wiederherstellen der Datensätze in der ursprünglichen Haupt-Datei kann man natürlich von Hand machen. Für die Automatisierung braucht man wiederum ein Skript in der Datei Urne, in dem eine Abfrage mit passenden Merkmalen konstruiert wird, und ein Skript in der Haupt-Datei, das die ausgewählten Datensätze importiert.

Um dieses Verfahren auf FM 7 anzuwenden, ersetze man einfach den Begriff Datei durch Tabelle.

Leave a Reply

Your email address will not be published. Required fields are marked *