Mehrfachauswahl KomboFeld

Hallo,
Ich habe 3 Tabellen,

Tabelle 1: (Person)
Nummer (Primärschl.)
Name
Vorname

Tabelle 2: (Gerät)
Gerätnummer (Primärschl.)
Gerätbez.

Tabelle 3: (Gerät zu Person)
Nummer
Gerätnummer

Nun möchte ich über ein Formular mittels einer Kombobox einem Gerät mehrere Personen zuordnen, bekomme aber immer einen Fehler.
Vermutlich weil in der Tabelle (Gerät zu Person) jeweils nur eine Nummer stehen kann.
Wie kann ich es machen das ich über eine Kombobox die Zuordnung vornehmen kann?

Danke und Gruß

Marcel

Hallo.

Wie kann ich es machen das ich über eine Kombobox die
Zuordnung vornehmen kann?

Bevor Du Dich mit der Mehrfachzuordnung über Kombobox beschäftigst, solltest Du Dein Datenmodell überprüfen.

Es gibt die Entitäten „Personen“ und „Geräte“, und wenn ich Dich richtig verstanden habe, kann einer Person kein, ein oder mehrere Geräte zugeordnet sein. Ebenso kann ein Gerät zu keiner, einer oder mehreren Personen gehören.

Damit hast Du eine n:m - Relation, die Du, wie schon geschehen, über Zwischentabelle darstellen musst. Hierbei musst Du noch beachten, dass die Relationen, die auf die Zwischentabelle zeigen, jeweils 1:n definiert sein müssen. Ist eine der Beziehungen als 1:1 definiert, klappt das ganze Modell nicht. Nach Deiner Beschreibung scheint es bei Dir so zu sein.

Also mach

tbl_Gerät mit Primärschlüssel_Gerät
tbl_Person mit Primärschlüssel_Person
tbl_Zwischen mit Fremdschlüssel_Gerät, Fremdschlüssel_Person und
dem zusammengesetzten Primärschlüssel Gerät_und_Person. I.e., die Zwischentabelle hat zwei Felder (nämlich die Fremdschlüssel), die zusammengefasst den Primärschlüssel darstellen.

Dann kannst Du das Problem der Mehrfachauswahl aus Kombinationsfeldern angehen. Hierzu wirst Du sicherlich bei Reinhard Kraasch http://www.dbwiki.de/ fündig werden. Wo nit, melde Dich einfach noch mal.

Gruß kw

Hallo Marcel

Der Trick ist folgender:

Du erstellst ein Tabellarisches Formular für die Zwischentabelle (GerätZuPerson). Darauf setzt du das Combofeld, welches als Datengrundlage auf die Gerätetabelle zugreift. Schlüsselfelder verknüpfen nicht vergessen!
Danach erstellst du ein Einfaches Formular für die Personentabelle. Darauf erstellst du ein UNTERFORMULAR. als Grundlage verwendest du das eben erstellte Formular der Zwischentabelle. Auch hier wieder Schlüssel verknüpfen!.

Gruss: Christian

P.S. wenn du mit dieser Beschreibung nicht klar kommst, kann ich dir ein Demo-File und eine genaue Anleitung schicken, aber das können wir per E-Mail abmachen.

Hallo Christian,
soweit denke ich habe ich alles verstanden und umgesetzt,
jedoch habe ich noch das Problem, dass ich keine Mehrfachauswahl machen kann.
Wenn ich eine Person dem Gerät zuordne klappts,
aber sobald ich im Listfeld zwei oder mehr Einträge auswählen und dann zum nächsten Datensatz springe, bekomme ich die Meldung:
„Null-Wert in Index oder Primärschlüssel nicht möglich.“

Vielleicht noch ne Idee?

Danke und Gruß

Marcel

Moin kw,

Es gibt die Entitäten „Personen“ und „Geräte“, und wenn ich
Dich richtig verstanden habe, kann einer Person kein, ein oder
mehrere Geräte zugeordnet sein. Ebenso kann ein Gerät zu
keiner, einer oder mehreren Personen gehören.

Soweit korrekt,

Damit hast Du eine n:m - Relation, die Du, wie schon
geschehen, über Zwischentabelle darstellen musst. Hierbei
musst Du noch beachten, dass die Relationen, die auf die
Zwischentabelle
zeigen, jeweils 1:n definiert sein müssen.
Ist eine der Beziehungen als 1:1 definiert, klappt das ganze
Modell nicht. Nach Deiner Beschreibung scheint es bei Dir so
zu sein.

Nope,
soweit alles richtig:
Gerät – 1:n – GerätzuPerson – n:1 – Person

Fremdschlüssel sind auch richtig gesetzt

Dann kannst Du das Problem der Mehrfachauswahl aus
Kombinationsfeldern angehen. Hierzu wirst Du sicherlich bei
Reinhard Kraasch http://www.dbwiki.de/ fündig werden. Wo nit,
melde Dich einfach noch mal.

Leider nicht wirklich,
die Seite ist ja schonmal ganz gut, auch andere interessante Ding dabei, aber leider find ich nichts zum Thema Mehrfachauswahl

Trotzdem schonmal danke, werde mal u.a. auf der Seite weitersuchen

Gruß

Marcel

Ergänzung
Hallo nochmal,
habe es soweit hinbekommen,
musste das Formular noch auf Tabellenansicht einstellen.
Kann jetzt wohl nicht über ein Listfeld alles auswählen,
sondern muss jeweils über eine Kombobox die Person dem Gerät hinzufügen, aber das geht schonmal…

Kann man auch das Listfeld anzeigen lassen, so dass man nur die Personen per einfachen Klick zuordnen kann?

Danke und Gruß

Marcel

Hallo Marcel

Bei der GUI-Optimierung hört meine Weisheit leider auf.
Das was du da vorhast klingt stark nach VBA, und darin bin ich kein Profi. (Ab jetzt spekuliere ich nur noch!)
Man könnte ein Formular nur für Personen erstellen, und darin ein Listfeld in welchem alle Geräte angezeig werden. (kein Subformular, keine Verknüpfungen!)
Für dieses Listfeld wird die Eigenschaft „Multiselect“ eingeschaltet. Die Zuweisung kann über einen Button erfolgen, oder über ein Ereignis, wleches eintritt, wenn man den Datensatz wechselt / das Formular velässt.
In diesem Ereigniss muss dann eine VBA-Funktion aufgerufen werden, die durch alle Zeilen des Listfeld des aktuellen Datensatzt durchläuft, und bei jeder selektierten Zeile einen DoCMD.RunSQL(„insert…“) aufruft, und bei jeder nicht selektierten Zeile einen DoCMD.RunSQL(„Delete…“). Hier bietet sich die Online-Hilfe [F1] an. Such dort mal nach „Multiselect“ oder „ListIndex“

Viel Glück!
Christian

Mahlzeit,
jo dat wär ne Alternative,
VBA hab ich vor Jahren mal gemacht,
könnte mich ja mal wieder ein wenig drin übern.
Sollte mit der Zuweisung dann ja funktionieren, ausserdem ändert man dann nicht dirket bei Auswahl (man kann ja auch falsch klicken), so das eine „Abbrechen“-Methode möglich wäre.

Danke für den Tipp, denke so komme ich weiter.

Gruß…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]