Datensätze automatisch archivieren

Wenn Sie Datenbanken über einen längeren Zeitraum einsetzen, befinden sich in den Tabellen viele Datensätze, die für die tägliche Arbeit eigentlich nicht mehr benötigt werden. Diese „Datensatzleichen“ bremsen Ihre Datenbanken spürbar aus: Es dauert ewig, bis Formulare oder Berichte geöffnet, Abfragen ausgeführt oder eine Komprimierung abgeschlossen ist. Das alles kostet viel Zeit, die Sie sparen können, wenn Sie die nicht mehr direkt benötigten Datensätze archivieren und in externe Datenbanken auslagern. Wir zeigen Ihnen, wie Sie eine vollautomatische Archivierungslösung Schritt für Schritt individuell für Ihre Datenbanken entwickeln.

Wenn Sie nicht mehr benötigte Datensätze auslagern möchten, können Sie entweder zusätzliche Tabellen in der Datenbank nutzen, mit der Sie täglich arbeiten, oder Sie speichern die Datensätze in einer externen Datenbank. Beide Methoden haben den Vorteil, dass Formulare und Berichte wieder schneller geöffnet und Abfragen schneller ausgeführt werden. Bei der Speicherung in internen Tabellen befinden sich Bestandsdaten und Archiv in einer einzigen Datei, was die Handhabung und Datensicherung erleichtert. Der Nachteil ist jedoch, dass die Datenbank-Datei dadurch zusätzlich belastet wird und sich zum Beispiel Komprimierungszeiten nicht verringern, sondern eher erhöhen. Da archivierte Daten in der Regel nur selten eingesehen werden, empfiehlt es sich daher, die Archivierung in Tabellen in einer externen Datenbank abzulegen. Diese Tabellen können Sie dann in die Ursprungs- Datenbank einbinden, sodass sie bei Bedarf jederzeit zur Verfügung stehen.

Wenn Sie sich entschlossen haben, Ihre Datenbanken von unnötigem Ballast zu befreien, beginnen Sie zunächst mit dem Anlegen der Archiv-Datenbank:

1. Wählen Sie das Menü DATEI-NEU an und legen Sie eine neue, leere Datenbank „Archiv Datenbankname“ an. „Datenbankname“ ersetzen Sie dabei durch den Namen der Datenbank, aus der Daten archiviert werden sollen. Anhand eines Dateinamens ist dann später sofort erkennbar, welchen Inhalt die Datenbank hat.

2. Starten Sie eine zweite Instanz von Access und öffnen Sie dort die Datenbank, aus der Daten archiviert werden sollen.

3. Ordnen Sie beide Fenster nebeneinander an, indem Sie die Symbole in der Windows-Taskleiste mit gedrückter Strg-Taste markieren, mit der rechten Maustaste auf ein markiertes Symbol klicken und NEBENEINANDER im Kontextmenü anwählen.

4. Markieren Sie nun im Datenbankfenster der Ursprungs-Datenbank die Tabelle, aus der Datensätze archiviert werden sollen.

5. Klicken Sie auf das Symbol KOPIEREN, drücken Sie Strg+C oder wählen Sie das Menü BEARBEITEN-KOPIEREN an.

6. Wechseln Sie in die Archiv-Datenbank.

7. Klicken Sie auf das Symbol EINFÜGEN, drücken Sie Strg+V oder wählen Sie das Menü BEARBEITEN-EINFÜGEN an.


8. Access zeigt nun den Dialog „Tabelle einfügen als“ an. Geben Sie hier im Feld TABELLENNAME den Namen der jeweiligen Tabelle mit dem Zusatz Archiv ein, wählen Sie die Option NUR STRUKTUR und klicken Sie auf OK. Damit haben Sie eine Tabelle erstellt, die mit der Ursprungstabelle absolut identisch ist, aber noch keine Datensätze enthält.

9. Sollte in der Tabelle ein Feld vom Typ „AutoWert“ verwendet werden, öffnen Sie die Tabelle im Entwurfsmodus und ändern den Feldtyp von „AutoWert“ auf „Zahl/Long Integer“. Dieser Schritt ist notwendig, um einerseits die bereits vorhandenen Werte der „AutoWert“- Felder zu übernehmen. Außerdem sollen natürlich Fehlermeldungen bei der späteren Übertragung von Datensätzen vermieden werden.

10. Wiederholen Sie die Schritte 4. bis 9. für weitere Tabellen, aus denen gegebenenfalls Datensätze archiviert werden sollen. Am Ende verfügen Sie über eine Archiv- Datenbank, die leere Tabellen mit der gleichen Struktur enthält, wie Ihre Ursprungs- Datenbank.

Um auf diese Tabellen aus Ihrer Ursprungs- Datenbank zugreifen zu können, gehen Sie wie folgt vor:

1. Wechseln Sie ins Datenbankfenster der Ursprungs-Datenbank.


2. Wählen Sie das Menü DATEI-EXTERNE DATEN-TABELLEN VERKNÜPFEN an.

3. Lokalisieren Sie im nachfolgenden Dialog die soeben erstellte Archiv- Datenbank und wählen Sie diese per Doppelklick aus.

4. Im folgenden Dialog „Tabellen verknüpfen“ klicken Sie auf ALLE AUSWÄHLEN und bestätigen dann mit OK.

In Ihrer Ursprungs-Datenbank finden Sie daraufhin im Datenbankfenster eine Reihe neuer Symbole vor, die Sie an einem schwarzen Pfeil vor dem Symbol als verknüpfte Tabellen und am Zusatz Archiv als Tabellen für die Archivierung erkennen können.

Damit sind nun alle Voraussetzungen geschaffen, um Datensätze aus der Ursprungs- Datenbank in die Archiv-Datenbank sichern zu können. Für die eigentliche Übertragung der Datensätze stehen Ihnen verschiedene Möglichkeiten zurVerfügung::

– Kombinationen aus Anfügeund Löschabfragen
– SQL-Anweisungen
– VBA-Routinen


Archivieren mit Anfüge- und Löschabfragen

Am einfachsten und übersichtlichsten sind Kombinationen aus Anfüge- und Löschabfragen, sodass wir uns mit dieser Möglichkeit im Folgenden anhand einiger praktischer Beispiele etwas detaillierter beschäftigen. Im ersten Schritt erstellen Sie zunächst eine Anfügeabfrage:

1. Wechseln Sie in den Bereich „Abfragen“, klicken Sie auf die Schaltfläche NEU und doppelklicken Sie auf ENTWURFSANSICHT.

2. Doppelklicken Sie im folgenden Dialog auf die Tabelle, aus der Datensätze archiviert werden sollen und bestätigen Sie mit SCHLIEßEN.

3. Doppelklicken Sie im Abfrageentwurf in der Feldliste auf den Eintrag mit dem Sternchen, um alle Felder aufzunehmen.

4. Wählen Sie das Menü ABFRAGE-ANFÜGEABFRAGE an, markieren Sie in der Liste TABELLENNAME die dazugehörige Archiv-Tabelle und klicken Sie auf OK.

Die Abfrage ist nun so weit vorbereitet, dass Sie Datensätze aus der Ursprungs- Datenbank in die Archiv-Datenbank übertragen können. Allerdings sollten Sie die Abfrage jetzt nicht ausführen, denn sie würde alle Datensätze in die Archiv-Tabelle übertragen. In der Regel soll die Archivierung nur für bestimmte Datensätze erfolgen. Sie müssen also über ein Kriterium festlegen, welche Datensätze übertragen werden sollen. Die Bedingungen hierfür hängen von der jeweiligen Datenbank und Ihren jeweiligen Anforderungen ab. Als Beispiel wollen wir einmal die Artikel-Stammdaten aus der bei Access mitgelieferten Datenbank „Nordwind“ verwenden. Hier gibt es ein Feld „Auslaufartikel“ (Ja/Nein) und ein Feld „Lagerbestand“ (Zahl). Wenn der Artikel als „Auslaufartikel“ markiert und der Lagerbestand „0“ ist, kann der Artikel archiviert werden.

Ein solches Kriterium würden Sie in der Anfügeabfrage wie folgt angeben:

1. Doppelklicken Sie im Abfrageentwurf auf die Felder, für die Kriterien gesetzt werden sollen. In unserem Beispiel wären das „Auslaufartikel“ und „Lagerbestand“.

2. Löschen Sie für diese Felder die Einträge in der Zeile „Anfügen an“.

3. In der Zeile „Kriterien“ geben Sie die gewünschten Bedingungen ein. In unserem Beispiel wäre das für das Feld „Auslaufartikel“ das Kriterium „= Ja“ und für das Feld „Lagerbestand“ das Kriterium „=0“.


Wenn Sie nun das Menü ANSICHT-DATENBLATTANSICHT anwählen, werden Sie sehen, dass die Abfrage nur die Datensätze selektiert und später übertragen würde, die den Kriterien entsprechen.

Mit dem Übertragen der Datensätze ist aber erst die halbe Aufgabe erfüllt. Schließlich sollen die Daten ausgelagert werden. Sie müssen also nach der Übertragung noch gelöscht werden. Hierzu setzen Sie, wie weiter oben bereits angedeutet, eine Löschabfrage ein. Zunächst sichern Sie jedoch erst einmal die eben erstellte Anfügeabfrage unter einem Namen der Form „Archivierung/ Tabellenname – Übertragen“, sodass später im Datenbankfenster sofort ersichtlich ist, welche Aufgabe die Abfrage hat. Um eine zu dieser Anfügeabfrage passende Löschabfrage zu erstellen, gehen Sie wie folgt vor:

1. Wechseln Sie in den Bereich „Abfragen“, klicken Sie auf die Schaltfläche NEU und doppelklicken Sie auf ENTWURFSANSICHT.

2. Doppelklicken Sie im dann folgenden Dialog auf die Tabelle, aus der Datensätze archiviert werden sollen und klicken Sie auf SCHLIEßEN.

3. Doppelklicken Sie im Abfrageentwurf in der Feldliste auf den ersten Eintrag mit dem Sternchen, um alle Felder aufzunehmen.

4. Wählen Sie das Menü ABFRAGE-LÖSCHABFRAGE an.

5. Da die Abfrage nur die Datensätze löschen soll, die zuvor mit der Anfügeabfrage übertragen wurden, sind auch hier entsprechende Kriterien zu setzen. Doppelklicken Sie also auf die Felder, für die Kriterien gesetzt werden sollen (in unserem Beispiel wären das „Auslaufartikel“ und „Lagerbestand“).


6. In der Zeile „Kriterien“ geben Sie die entsprechenden Bedingungen ein, somit für das Feld „Auslaufartikel“ das Kriterium „= Ja“ und für das Feld „Lagerbestand“ das Kriterium „=0“.

Wenn Sie jetzt das Menü ANSICHT-DATENBLATTANSICHT anwählen, werden auch hier nur die Datensätze selektiert und später gelöscht, die den Kriterien entsprechen. Sichern Sie diese Löschabfrage unter einem Namen der Form „Archivierung/Tabellenname – Löschen“.

Um Anfüge- und Löschabfrage hintereinander auszuführen, können Sie die beiden Abfragen natürlich bei Bedarf hintereinander per Doppelklick ausführen. Das wäre aber ein fehlerträchtiges Unterfangen, wenn Sie zum Beispiel nur die Löschabfrage ausführen, ohne die Datensätze zuvor übertragen zu haben, oder wenn Sie vergessen, die Löschabfrage nach der Übertragung auszuführen. Es empfiehlt sich, den Aufruf beider Abfragen in einem Makro zusammenzufassen:

1. Wechseln Sie in den Bereich „Makros“, klicken Sie auf die Schaltfläche NEU und ziehen Sie das Fenster des Makro- Entwurfs nach rechts unten im Datenbankfenster.

2. Ziehen Sie die beiden eben erstellten Abfragen „Archivierung/Tabellenname – Übertragen“ und „Archivierung/Tabellenname – Löschen“ in das Makro- Entwurfsfenster. Access fügt daraufhin automatisch zwei Aktionen „Öffnen- Abfrage“ mit den passenden Parametern zum Makro hinzu.

3. Prüfen Sie vorsichtshalber noch einmal die Reihenfolge: Erst übertragen, dann löschen, danach speichern Sie das Makro unter einem Namen der Form „Archivierung/Tabellenname“ und verlassen Sie den Makro-Entwurf.


Wenn Sie dieses Makro per Doppelklick im Datenbankfenster starten, werden zunächst die Datensätze gemäß dem gewünschten Kriterium in die Archiv- Datenbank übertragen und anschließend in der Ursprungs-Datenbank gelöscht. Eventuell zeigt Access dabei Sicherheitsabfragen an, die Sie stören können. Fügen Sie dann im Makro als erste Anweisung die Aktion „Warnmeldungen“ ein und setzen Sie den Parameter „Warnmeldungen AN“ auf „Nein“.

Wie oben erläutert können Sie nun weitere Archivierungs-Abfragen mit entsprechenden Kriterien erstellen und alle in einem Makro zusammenfassen. Den Namen des Makros sollten Sie dann auf z.B. „Archivierung Artikel, Kunden, Bestellungen“ ändern, damit ersichtlich ist, welche Anfüge-/ Löschabfragen-Kombinationen über das Makro ausgeführt werden. Das eben erstellte Makro können Sie nun einmal die Woche oder einmal im Monat per Doppelklick starten und so Ihre nicht mehr benötigten Datensätze ohne weitere Aktionen fast automatisch archivieren lassen.

Um die Archivierung vollautomatisch laufen zu lassen, gehen Sie wie folgt vor:

1. Legen Sie ein neues Makro „Auto- Exec“ an oder fügen Sie in einem eventuell vorhandenen „AutoExec“- Makro die folgende Aktion hinzu:

Aktion: AusführenMakro
Makroname: Archivierung/Name

Die beiden restlichen Parameterfelder bleiben leer. Für „Archivierung/ Name“ geben Sie den Namen des Makros an, das Ihre Archivierungs- Abfragen zusammengefasst ausführt. Alternativ können Sie auch mehrere Aktionen „AusführenMakro“ verwenden, die jeweils einzelne Makros „Archivierung/Tabellenname“ aufrufen.

2. Speichern Sie die Änderungen und verlassen Sie den Makro-Entwurf.

In Zukunft wird die Archivierung bei jedem Start von Access automatisch durchgeführt, ohne dass Sie irgendwelche Makros manuell starten müssen.