Home > Artikel > Ausgabe 12/2013 > Datensätze kopieren mit Bordmitteln

Datensätze kopieren mit Bordmitteln

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Es gibt verschiedenste Anlässe, vollständige Datensätze zu kopieren. Ein Beispiel ist das Archivieren von Daten in eine andere Tabelle, ein anderes das Duplizieren von Datensätzen, um diese als Vorlage für weitere Datensätze in der gleichen Tabelle zu verwenden. Dieser Artikel zeigt, welche Möglichkeiten es zum Kopieren von Datensätzen gibt.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1312_DatensaetzeKopieren.mdb.

Warum Datensätze kopieren?

Datensätze kopiert man aus unterschiedlichen Gründen. Der simpelste ist: Sie möchten schnell mal ein paar Testdaten erzeugen, um die Performance einer Datenbank zu testen. Oder Sie wollen einen neuen Artikel zu einer Artikeltabelle hinzufügen, der aber fast genau die gleichen Eigenschaften wie ein bereits vorhandener Artikel aufweist. Vielleicht möchten Sie auch ein oder mehrere Datensätze aus einer Tabelle in eine andere Tabelle kopieren, um die Daten zu sichern oder zu archivieren. In allen Fällen benötigen Sie eine zuverlässige Technik, die den Datensatz kopiert.

Schnelle Testdaten

Wenn Sie etwa in einer VBA-Prozedur Datensätze in einer Schleife durchlaufen, möchten Sie vielleicht wissen, wie lange dies für eine große Menge Daten dauert. Dann gibt es zwei Möglichkeiten: Entweder Sie erstellen sich eine kleine VBA-Prozedur, die ebenfalls per Schleife einige tausend Datensätze für den Test erzeugt. Oder Sie legen selbst Hand an und kopieren die vorhandenen Datensätze: Angenommen, die betroffene Tabelle enthielte nur einen einzigen Datensatz. Dann würden Sie zunächst diesen Datensatz kopieren und hätten bereits zwei Datensätze. Diese zwei kopieren Sie erneut und erhalten vier Datensätze. Diesen Vorgang wiederholen Sie so oft, bis die gewünschte Anzahl Datensätze vorliegt.

Aber wie kopieren Sie einen Datensatz am einfachsten? Dazu öffnen Sie die Tabelle, in diesem Fall tblPersonal, markieren den zu kopierenden Datensatz durch einen Mausklick auf den Datensatzmarkierer und kopieren diesen mit Strg + C (siehe Bild 1).

Markieren des zu kopierenden Datensatzes, Kopieren mit Strg + C, ...

Bild 1: Markieren des zu kopierenden Datensatzes, Kopieren mit Strg + C, ...

Dann markieren Sie das Ziel, in diesem Fall den leeren, neuen Datensatz am Ende der Tabelle – wieder mit einem Mausklick auf den Datensatzmarkierer (siehe Bild 2).

... Markieren des Ziels, also eines leeren Datensatzes ...

Bild 2: ... Markieren des Ziels, also eines leeren Datensatzes ...

Schließlich fügen Sie den Datensatz durch Betätigen der Tastenkombination Strg + V an der markierten Stelle ein (siehe Bild 3). Der Datensatz ist nun noch als „in Bearbeitung” markiert (Bleistift-Symbol im Datensatzmarkierer), da alle Felder neu gefüllt, der Datensatz aber noch nicht per Mausklick auf den Datensatzmarkierer oder durch den Wechsel zu einem anderen Datensatz verlassen wurde.

... und Einfügen mit Strg + V.

Bild 3: ... und Einfügen mit Strg + V.

Mehrere Datensätze kopieren

Auf die gleiche Art können Sie auch mehrere Datensätze gleichzeitig kopieren. Dazu markieren Sie einfach alle zu kopierenden Datensätze, indem Sie beispielsweise erst auf den Datensatzmarkierer für den ersten zu kopierenden Datensatz klicken und dann bei gedrückter Umschalt-Taste auf den letzten (siehe Bild 4).

Markieren und kopieren mehrerer Datensätze, ...

Bild 4: Markieren und kopieren mehrerer Datensätze, ...

Dann markieren Sie wiederum den neuen, leeren Datensatz der Tabelle und betätigen wieder die Tastenkombination Strg + V. Diesmal fragt Access nach, ob es die entsprechende Anzahl Datensätze kopieren soll (siehe Bild 5). Auch wenn die Datensätze zu diesem Zeitpunkt scheinbar schon in die Tabelle kopiert sind, so macht ein Klick auf die Schaltfläche Nein den Einfügevorgang wieder rückgängig – ein Klick auf Ja fügt die Datensätze natürlich an der gewünschten Stelle ein.

... die allerdings nicht ohne vorherige Rückfrage kopiert werden.

Bild 5: ... die allerdings nicht ohne vorherige Rückfrage kopiert werden.

Datensatz über einen anderen Datensatz kopieren

Gegebenenfalls möchsten Sie auch einen Datensatz durch einen vorhandenen Datensatz ersetzen. In diesem Fall kopieren Sie den Datensatz wie zuvor beschrieben, markieren dann den Zieldatensatz (wiederum durch Anklicken des Datensatzmarkierers für diesen Datensatz) und fügen den Datensatz ein.

Access überschreibt dann den Zieldatensatz mit den Daten des Quelldatensatzes – mit Ausnahme des Primärschlüsselwertes, der beibehalten wird.

Dies gelingt auch für mehrere Datensätze. Dabei ist allerdings etwas zu beachten: Die Anzahl der Quelldatensätze sollte mit der Anzahl der Zieldatensätze übereinstimmen. Anderenfalls geschieht Folgendes: Wenn Sie etwa zwei Datensätze in einen markierten Bereich von drei Datensätze einfügen wollen, werden nur die ersten beiden überschrieben. Wenn Sie wiederum zwei Datensätze kopieren, aber nur einen Zieldatensatz markieren, kopiert Access nur den ersten Datensatz.

Datensatz per VBA kopieren

Natürlich gelingt dies auch per VBA. Wir wollen dem Benutzer ja nicht noch erläutern, wie er einen Datensatz in der Datenblattansicht kopieren kann – außerdem ist ja gar nicht sichergestellt, dass diese immer in der Datenblattansicht vorliegen. Vielleicht soll ja auch einmal ein Datensatz kopiert werden, der in einem Listenfeld erscheint.

Unter VBA gibt es die folgenden Möglichkeiten:

  • Der aktuell im Datenblatt markierte Datensatz soll kopiert werden: Dann sind einige Befehle nötig, welche die zuvor manuell beschriebenen Schritte durchführen.
  • Alternativ (und auch, wenn der zu kopierende Datensatz auf andere Weise ausgewählt wurde) erledigen Sie dies mit den entsprechenden DAO-Anweisungen (Öffnen des Recordsets mit dem zu kopierenden Datensatz, Erstellen eines neuen Datensatzes, Einfügen der Daten und Speichern des neuen Datensatzes in der Tabelle).
  • Oder Sie verwenden eine einfache INSERT INTO-Anweisung.
  • Gegebenenfalls wollen Sie ein oder mehrere Datensätze gleich in eine neue Tabelle kopieren. Dann verwenden Sie eine SELECT INTO-Anweisung.

Die folgenden Abschnitte beschreiben diese Vorgehensweisen – zunächst nach der Methode, die Sie mit dem Befehlsschaltflächen-Assistent erhalten.

Erstellen Sie dazu ein neues Formular, dass jeweils einen Datensatz der Tabelle tblArtikel in der Formularansicht soll (frmDatensatzKopierenHF). Dazu stellen Sie die Tabelle tblArtikel als Datenherkunft des Formulars ein und ziehen alle Felder der Tabelle aus der Feldliste in den Detailbereich des Formulars.

Nun wollen wir dem Formular eine Schaltfläche hinzufügen, mit dem wir den aktuellen Datensatz kopieren wollen. Dazu aktivieren Sie zunächst den Steuerelement-Assistenten (siehe Bild 6). Wenn Sie dann auf gewohnte Weise eine neue Schaltfläche im Formular anlegen, erscheint

Aktivieren des Steuerelement-Assistenten

Bild 6: Aktivieren des Steuerelement-Assistenten

Daraufhin erscheint der Befehlsschaltflächen-Assistent (siehe Bild 7). Hier wählen Sie die beiden Einträge Datensatzoperationen und Datensatz duplizieren aus.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!