Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
ListView-Steuerelemente unterstützen im Gegensatz zum Listenfeld sogar den Einsatz von Drag and Drop. Damit können Sie nicht nur Einträge von einem ListView-Steuerelement zum nächsten ziehen, sondern auch die Reihenfolge der Einträge eines ListView-Steuerelements einstellen. Im ersten Teil dieser Mini-Artikelreihe zeigen wir, wie Sie Datensätze zwischen zwei ListView-Steuerelementen hin- und herziehen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1212_ListView.mdb.
Von ListView zu ListView per Drag and Drop
Einträge von einem ListView-Steuerelement zum nächsten Ziehen und fort fallenlassen – und umgekehrt Wozu soll das gut sein Nun: Beispielsweise können Sie so die Zuordnung von Elementen in einer m:n-Beziehung verwalten. Das Hauptformular zeigt dann die Datensätze der einen Seite der Beziehung an, die beiden ListView-Steuerelemente die diesem Datensatz zugeordneten und die nicht zugeordneten Datensätze der anderen Seite der Beziehung.
Die bisher in den Beispielen zum ListView-Steuerelement verwendeten Tabellen der Südsturm-Beispieldatenbank enthalten leider nur eine einzige m:n-Beziehung (zwischen den Bestellungen und den Artikeln). Diese ist leider nicht für dieses Beispiel geeignet, da ja hier noch einige weitere Daten wie Menge, Einzelpreis et cetera verwaltet werden müssen.
Also fingieren wir einfach ein geeignetes Beispiel. Die Tabelle tblArtikel enthält bislang ein Fremdschlüsselfeld, mit dem der Lieferant des Artikels eingestellt werden kann. Der Nachteil dieser Verknüpfung ist, dass Sie für jeden Artikel nur einen einzigen Lieferanten bestimmen können. In der Praxis gibt es jedoch meist noch weitere Lieferanten, die herangezogen werden, wenn der erste Lieferant nicht liefern kann oder ein anderer Lieferant einen günstigeren Preis anbietet.
Wir benötigen also eine Tabelle, mit der Sie einem Artikel einen oder mehrere Lieferanten zuordnen können. Diese sieht wie in Bild 1 aus und enthält neben dem Primärschlüsselfeld noch zwei weitere Felder namens ArtikelID und LieferantID. Für diese beden Felder legen Sie außerdem einen zusammengesetzten Schlüssel fest, dessen Eigenschaft Eindeutig den Wert Ja erhält. Damit stellen Sie sicher, dass jeder Lieferant jedem Artikel nur einmal zugeordnet werden kann.
Bild 1: Tabelle zur Herstellung einer m:n-Beziehung
Nun müssen Sie noch festlegen, dass die beiden Felder nur die Primärschlüsselwerte der Tabellen tblArtikel und tblLieferanten annehmen können. Dazu öffnen Sie das Beziehungen-Fenster von Access und fügen die drei Tabellen tblArtikel, tblLieferanten und tblArtikelLieferanten hinzu. Ziehen Sie das Feld ArtikelID der Tabelle tblArtikel auf das gleichnamige Feld der Tabelle tblArtikelLieferanten. Erledigen Sie das Gleiche für das Feld LieferantID.
Anschließend legen Sie die Beziehungseigenschaften fest (siehe Bild 2). Aktivieren Sie die Optionen Mit Referentieller Integrität und Löschweitergabe an verwandte Datensätze. Damit stellen Sie erstens sicher, dass die Fremdschlüsselfelder ArtikelID und LieferantID nur Werte aufnehmen können, die im Primärschlüsselfeld der jeweils verknüpften Tabelle enthalten sind. Außerdem werden Datensätze in der Tabelle tblArtikelLieferanten automatisch gelöscht, wenn ein verknüpfter Datensatz der Tabellen tblArtikel oder tblLieferanten entfernt wird.
Bild 2: Festlegen der Beziehungen zwischen den Tabellen der m:n-Verknüpfung
Aber ist das überhaupt in Ordnung Was geschieht, wenn ich alle Datensätze der Tabelle tblLieferanten lösche, die einem Artikel zugeordnet sind – diese besitzt dann ja keinen Lieferanten mehr Kein Problem: Das Fremdschlüsselfeld LieferantID der Tabelle tblArtikel legt ja den standardmäßig zu verwendenden Lieferanten fest.
Die entsprechende Verknüpfung ist nicht mit Löschweitergabe ausgestattet. Der Versuch, einen Lieferanten zu löschen, der noch über das Fremdschlüsselfeld der Tabelle tblArtikel mit einem Artikel verknüpft ist, führt zu einem Fehler.
Erste Daten hinzufügen
Die Tabelle tblArtikelLieferanten soll alle möglichen Lieferanten eines Artikels anzeigen. In der Tabelle tblArtikel gibt es bereits ein Fremdschlüsselfeld LieferantID, welches den aktuellen Lieferanten festlegen. Natürlich soll dieser Lieferant auch in der Tabelle tblArtikelLieferanten auftauchen.
Wie erledigen wir diese Aufgabe Alle entsprechenden Kombinationen aus ArtikelID und LieferantID manuell in die Tabelle übertragen Natürlich nicht! Diese Aufgabe erledigen wir mit einem Einzeiler über den Direktbereich. Dieser sieht wie folgt aus:
CurrentDb.Execute "INSERT INTO tblArtikelLieferanten(ArtikelID, LieferantID) SELECT ArtikelID, LieferantID FROM tblArtikel", dbFailOnError
Sie lösen hiermit eine Aktionsabfrage aus, die für jeden Datensatz der Tabelle tblArtikel die Inhalte der Felder ArtikelID und LieferantID in die entsprechenden Felder der Tabelle tblArtikelLieferanten einträgt. Das Resultat sieht später wie in Bild 3 aus.
Bild 3: Die Tabelle tblArtikelLieferanten mit den Standardlieferanten eines jeden Artikels
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo