Tipps und Tricks 1/2013

In dieser Folge unserer Tipps und Tricks erfahren Sie, wie Sie Datensätze zweier Tabellen in einer einzigen Abfrage zusammenführen, wie Sie Berichte mehrfach drucken und wie Sie die Daten in Haupt- und Unterformular synchron anzeigen – so, dass das Hauptformular jeweils den im Unterformular markierten Datensatz anzeigt und umgekehrt.

Daten zusammenführen per Abfrage

Manchmal geschehen beim Entwickeln ungeplante Dinge. So kann es beispielsweise geschehen, dass Sie zwei Versionen einer Datenbank besitzen – zum Beispiel eine veraltete, archivierte Version und eine aktuelle. Wenn Sie dann durch Zufall (etwa durch versehentliches Öffnen der älteren Version) die alte Version weiterentwickeln, aber in der anderen die Daten pflegen, können Sie am einfachsten die aktuellen Daten in die weiterentwickelte Version übernehmen.

Sie könnten dann natürlich schnell alle Datensätze löschen und mit den Daten der neuen Tabelle füllen oder die komplette Tabelle löschen und neu anlegen. Beides führt zu Problemen: Beim Neuerstellen der Datensätze stimmen Beziehungen nicht mehr oder die Beziehungen müssen gar für eine komplett neu angelegte Tabelle neu aufgebaut werden.

Einfacher ist die folgende Methode, die in zwei Schritten nicht mehr vorhandene Datensätze der alten Version entfernt und die vorhandenen Datensätze aktualisiert.

Das Beispiel bezieht sich auf die Tabellen tblArtikel und tblArtikel_Geaendert, wobei tblArtikel den alten Datenbestand repräsentiert und tblArtikel_Geaendert den neuen, geänderten Datenbestand. Dabei gibt es gelöschte, geänderte und neu angelegte Datensätze.

Die Tabelle tblArtikel_Geaendert können Sie dabei in die Zieldatenbank kopieren oder einfach nur eine Verknüpfung erstellen – wir haben diese einfach kopiert.

Zunächst kümmern wir uns darum, die in der Tabelle tblArtikel_Geaendert gelöschten Datensätze auch aus der Tabelle tblArtikel zu löschen.

Das Entfernen der Datensätze aus der Tabelle tblArtikel, die zwischenzeitlich aus der Tabelle tblArtikel_Geaendert gelöscht wurden, übernimmt die Aktionsabfrage aus Abb. 1. Diese enthält die Tabelle tblArtikel als Datenherkunft. Um alle Artikel dieser Tabelle zu ermitteln, die nicht mehr in der Tabelle tblArtikel_Geaendert vorhanden sind, verwenden wir eine Unterabfrage. Diese lautet SELECT ArtikelID FROM tblArtikel_Geaendert und liefert alle noch vorhandenen Datensätze. Das Feld ArtikelID eines jeden Datensatzes der Tabelle tblArtikel wird nun mit den ermittelten Werten verglichen. Ist der Wert nicht vorhanden, ist die Bedingung erfüllt und der Datensatz kann gelöscht werden.

pic001.png

Abb. 1: Löschen der nicht mehr vorhandenen Datensätze

Danach werfen wir einen Blick auf die geänderten und neu hinzugefügten Datensätze. Genau genommen gehen wir dabei nicht sonderlich differenziert vor, sondern gleichen einfach die kompletten Daten ab. Der Clou liegt hierbei darin, beide Vorgänge in einem Rutsch zu erledigen, sprich: mit einer einzigen UPDATE-Abfrage und ohne INSERT INTO-Abfrage.

Dazu erstellen Sie eine neue, leere Abfrage und ziehen die Ziel- und die Quelltabelle in die Entwurfsansicht. Damit jeder Datensatz mit seinem Pendant abgeglichen wird, erstellen Sie eine Beziehung zwischen den Feldern ArtikelID der beiden Tabellen tblArtikel und tblArtikel_Geaendert. Damit liefert das Abfrageergebnis aber nur solche Artikel, bei denen die ArtikelID in beiden Tabellen vorkommt. Wir wollen jedoch auch die Artikel im Ergebnis der Abfrage sehen, die zwar in der Tabelle tblArtikel_Geaendert enthalten sind, aber nicht in der Tabelle tblArtikel – also alle Artikel, die neu hinzugekommen sind.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar