PDA

Vollständige Version anzeigen : m:n Beziehungen verwalten


hcscherzer
05.12.2007, 13:33
Moin zusammen,

immer mal wieder taucht die Frage auf:
'wie kann ich am einfachsten Daten in einer m:n Tabelle verwalten?'

Ich habe hier mal eine kleine Beispiel DB erstellt mit drei Tabellen (E, M und EuM), die zueinander in einer solchen Beziehung stehen. In den beiden Formularen lassen sich die Daten visualisieren und ändern. Die notwendigen Prozeduren liegen in den beiden Klassenmodulen sowie in einem globalen Modul.

Ich zeige zwei Möglichkeiten: entweder zwei Listboxen oder eine CheckedListbox (hier: ListView). Damit das ListView korrekt funktioniert, muss ein Verweis auf die MSCOMCTL.OCX eingebunden sein (sie ist meist im Ordner SYSTEM32 vom Windows-Stammverzeichnis zu finden).

Ich habe - der Anschaulichkeit halber - beide Möglichkeiten in jeweils einem Formular nebeneinander gestellt. Bei den Listboxen erfolgt die Änderung der Zuordnung über die beiden Buttons mit den Pfeilen, für die ListView nach Klick auf den Button mit der Diskette. Beide Methoden synchronisieren sich automatisch. Wenn beide Formulare gleichzeitg geöffnet sind, synchronisieren sie sich nach Änderungen ebenfalls gegenseitig.

hcscherzer
02.02.2008, 12:52
Moin zusammen,
auf mehrfachen Wunsch habe ich die m:n Demo mal nach Access2000 konvertiert. Hier isses:

svenilein
28.04.2009, 07:16
hallo hcscherzer,

ich versuche gerade die datei m_zu_n_2k.rar runter zu laden, aber es klappt irgendwie nicht.
kannst du mir da weiter helfen.

mfg

hcscherzer
28.04.2009, 08:06
ich versuche gerade die datei m_zu_n_2k.rar runter zu laden, aber es klappt irgendwie nicht
:entsetzt:
Antwort als PM.

Falls es doch mit der Datenbank zu tun hat: bitte genauer zu schildern was nicht klappt.

tomlei
04.01.2013, 06:32
Vielen Dank für diese BeispielDB.
Sie ist sehr übersichtlich und damit sehr lehrreich.

Eine Frage habe ich zu den Public variablen Definitionen.

Wenn im Programmablauf ein Fehler aufläuft,
(z.b. 3022 -wenn man im frm M das event 'Edazu_Click()' auslöst und kein Listelement ausgewählt ist ->'CurrentDb.Execute sqls, dbFailOnError'=128),
ist 'mix(i) ausserhalb des gültigen Bereiches (Fehler9).
Wenn das frm neu initialisiert wird, dann funktioniert wieder alles...?
Wie kann man das vermeiden, und war das bei A03 auch schon so? Ich habe jetzt hier nur noch A10 und kann das nicht mehr testen.

Trotzdem, nocheinmal vielen Dank für dieses Beispiel - die grundlegende Systematic kann man sehr gut entnehmen!

hcscherzer
04.01.2013, 07:58
Wenn im Programmablauf ein Fehler aufläuft
Dann sollte der eigentlich vom Programmierer abgefangen werden. :entsetzt:
Aber eigentlich mache ich das doch ...If Not IsNull(Me!EListe) ThenAlso, hier bei mir tritt kein Fehler auf, wenn in der Liste kein Eintrag markiert ist, passiert einfach nur nichts.
Ich habe jetzt hier nur noch A10 und kann das nicht mehr testen.Warum denn das? Das verstehe ich nicht.

tomlei
04.01.2013, 08:09
Also, hier bei mir tritt kein Fehler auf, wenn in der Liste kein Eintrag markiert ist, passiert einfach nur nichts.

Beispiel:
Ich habe beide Fenster "E" und "M" nebeneinander offen. Jetzt klicke ich auf den Pfeil nach links im frm "M" - es passiert nichts.
Dann markiere ich einen Eintrag in dem listview "sonstige E" und klicke auf den Pfeil nach links und der Eintrag wandert nach links.
Wenn ich danach gleich wieder, ohne erneut einen Eintrag auszuwählen, auf den Pfeil nach links klicke, wird der Fehler bei mir ausgelöst.

64771

Wenn man dann weiter macht kommt der Fehler 9, um den es mir eigentlich ging (public variable).

hcscherzer
05.01.2013, 13:43
Das war in der Tat ein Fehler, der nicht abgefangen war: nach Wechsel des Fokus auf das andere Formular bleibt der Eintrag in der rechten Listbox im anderen Formular (unsichtbar) gesetzt.
Ich fange das jetzt ab.
Und habe bei der Gelegenheit auch eine accdb Version mit eingepackt.

Lanz Rudolf
07.01.2013, 14:22
Hallo
Hans-Christian
leider kann ich rar nicht öffnen währe es möglich eine Zip hoch zu laden ?

hcscherzer
07.01.2013, 17:54
Auf besonderen Wunsch von Ruedi. ;)

Lanz Rudolf
05.03.2013, 10:43
Hallo Hans-Christian
Dake für die ZIP-Datei :hands:
schaue ich mir an ;)

blaufussel007
30.12.2016, 16:55
Hallo Hans-Christian,

super, funktioniert bei mir. Wenn ich auf Mehrfachauwahl wechsele, leider nicht mehr. Ist das ein großer Aufwand, dies zu ändern? Ansonsten schon einmal ein recht herzliches Dankeschööööön!

hcscherzer
30.12.2016, 17:49
Mehrfachauwahl ... Ist das ein großer Aufwand, dies zu ändern?Ist schon ein wenig Aufwand. Kann ich gelegentlich mal einbauen. Aber in diesem Jahr nicht mehr. ;)