Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Dropdown Abhängigkeit, m:n Beziehung

Begonnen von Rogue, Oktober 25, 2018, 12:09:40

⏪ vorheriges - nächstes ⏩

Rogue

Guten Morgen,

ich versuche schon seit einigen Stunden, eine m:n Beziehung in einen Formular als Dropdown in abhängigkeit zu bringen.

Die Tabellen sind schon in einer m:n Beziehung.
Nun meine Frage: wie muss ich die Tabelle ansprechen, so wie bei einer 1:n beziehung oder anderst?
Die m:n beziehung(tabelle), wo beide anderen Tabellen zusammen geführt wirt, sind ja nur die ID von den anderen Tabellen, und es sind keine Bezeichnungen von den Produkten bzw in meinen Fallen, Fraktion bzw Missionskarten vorhanden.

meine Tabellen:
tbl_fraktion
fraktion_ID, fraktion

tbl_missionskarten
missionskarten_ID, missionskarten

tbl_fraktion&missionskarten
FT_MK_ID, fraktion_ID, missionskarten_ID

Formular:
frm_fraktion&missionskarten
1. Dropdown auswahl: Fraktion- Datenherkunft: SELECT Fraktion_ID, Fraktion FROM tbl_fraktion;
Missionskarten- Datenherkunft:SELECT Missionskarten_ID, Missionskarten FROM tbl_missionskarten;

2. Dropdown Auswahl: Missionskarten

Private Sub Form_Current()
    Me!Kombinationsfeld2.RowSource = "SELECT Missionskarten, Fraktion_ID FROM tbl_missionskarten WHERE Fraktion_ID= " & Me.Kombinationsfeld0
End Sub

Private Sub Kombinationsfeld0_AfterUpdate()
Me!Kombinationsfeld2.RowSource = "SELECT Missionskarten, Fraktion_ID FROM tbl_missionskarten WHERE Fraktion_ID= " & Me.Kombinationsfeld0
End Sub


Kann mir einer sagen was ich falsch gemacht habe?

Gruß

Beaker s.a.

Hallo,
ZitatKann mir einer sagen was ich falsch gemacht habe?
Schwer zu sagen wenn man nicht weiss, was nicht deinen Erwartungen entspricht.
Ich vermute jedoch, dass das 2. Kombi nicht gefiltert wird.
Lösung: füge nach der Zuweisung der RowSource dies
Me!Kombinationsfeld2.Requery
ein.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Rogue

hi,

danke für deine Antwort und dein Tipp.
Habe dein Code eingefügt.

Private Sub Form_Current()
    Me!Kombinationsfeld2.RowSource Me!Kombinationsfeld2.Requery = "SELECT Missionskarten, Fraktion_ID FROM tbl_missionskarten WHERE Fraktion_ID= " & Me.Kombinationsfeld0
End Sub


Und dann kommt eine Fehlermeldung! Laufzeitfehler: 438

Ergebniss soll sein:
wenn ich unter frm_fraktion&missionskarten dropdown 1 auswähle (Fraktion) , sollte alle Missionkarten im Dropdown 2 (Missionskarten)auflisten werden, was unter tbl_fraktion_Missionskarten zugeteil wurden ist.

gruß
PS: kenne mich noch nicht so gut aus mit VBA Access

Beaker s.a.

Oh man,
Private Sub Form_Current()
    Me!Kombinationsfeld2.RowSource = "SELECT Missionskarten, Fraktion_ID FROM tbl_missionskarten WHERE Fraktion_ID= " & Me.Kombinationsfeld0
     Me!Kombinationsfeld2.Requery
End Sub
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Rogue

Guten Morgen,

so habe ich als Erstes Versucht, blöde bin ich auch nicht... lach
Da kommt eine "Parameterwert Eingeben"
Fraktion_ID

gruß
PS: Gute nachti

Beaker s.a.

Hallo,
In der anderen Prozedur (Kombi0_AfterUpdate) auch?
Ich vermute nicht.
Und, immer beim DS-Wechsel oder nur beim Laden/Öffnen?
Liegt vermutlich daran, dass es im Kombi0 noch keine Auswahl gibt.
Versuche

Private Sub Form_Current()
    Me!Kombinationsfeld2.RowSource = _
              "SELECT Missionskarten, Fraktion_ID " _
            & "FROM tbl_missionskarten " _
            & "WHERE Fraktion_ID = " & Nz(Me.Kombinationsfeld0, 0)
    Me!Kombinationsfeld2.Requery
End Sub

I.Ü. brauchst du den Code in Form_Current nur, wenn das Kombi0
gebunden ist. Ist es ungebunden braucht es "Beim Anzeigen" keine
Aktualisierung von Kombi2.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Rogue

hi,

Guten Morgen, danke für dein Tipp.
Aber leider verhält es sich genauso wie bei meinen CODE!!!

Habe dein Code komplett übernommen.

Die Abfrage kommt immer noch. Sie Bild...
(aber nur wenn ich das 2. Dropdown (Missionskarten) abrufe/Auswähle

Gruß
PS: habe mal die Datei mal in der Anlage gepackt.

Beaker s.a.

O.K., dann zeig mal die Abfrage hinter Kombi0.
Da fehlt vermutlich das Feld "Fraktion_ID" oder es steht nicht
in der gebundenen Spalte.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

Zuerst solltst Du Kombinationsfeld2 für 2 Spalten einrichten.
Private Sub Kombinationsfeld0_AfterUpdate()
   Dim rsrc As String

   rsrc = "SELECT m.Missionskarten_ID," & vbLf & _
          "       m.Missionskarten" & vbLf & _
          "FROM   tbl_missionskarten m" & vbLf & _
          "       INNER JOIN tbl_fraktion_missionskarten AS fm" & vbLf & _
          "               ON m.Missionskarten_ID = fm.Missionskarten_ID" & vbLf & _
          "WHERE " & _
          BuildCriteria("fm.Fraktion_ID", dbLong, Nz(Me.Kombinationsfeld0, "NULL"))
   With Me.Kombinationsfeld2
      .Value = Null
      .RowSource = rsrc
      .SetFocus
      .Dropdown
   End With
End Sub
Grüße von der (⌒▽⌒)

Beaker s.a.

Hallo,
Ja, ja, da kann wieder mal eine(r) besser lesen als ich,
Zitatwas unter tbl_fraktion_Missionskarten zugeteil wurden ist.
habe ich nicht wahrgenommen. War so auf den Code fixiert und
deshalb die ganze Zeit von 1:n ausgegangen.


Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Rogue

hi Beaker,

ist doch nicht so schlimm... nur zur info... die 1:n Beziehung hatte ich schon vorher und hat ohne prob auch funktioniert. Das war nur eine normale Dropdown abhängigkeit, wo nur ein Datensatz zugeteilt werden konnte.

Dank der Hilfe von Lachtaube hat die m:n Beziehung sofort geklappt...
Danke euch beiden nochmal...

Gruß
Rogue

Rogue

hi,

ist es möglich im Kombinationsfeld die Reihnfolge zu ändern. Zurzeit sind sie glaube ich nach den ID (1,10) der Haupttabelle (tbl_Missionskarten, Missionskarten_ID) sortiert.
Ich würde es gerne bevorzugen, dass sie nach der einsortierung (1-9, 10-9999) sortiert werden oder mit einer Hilfsspalte sortiert werden.

Gruß

Rogue

Guten Morgen,

gibt es eine Möglichzeit als m:n Beziehung die Eingabe zuordnung der Daten über ein Formular zu machen? nicht wie es zurzeit ist über die Tabelle?

Gruß

DF6GL

Hallo,

sowas wird immer über Formulare (SQL-Update/Insert mal abgesehen)  durchgeführt...

Binde ein Form an die n:m-Tabelle und füge zwei gebundene Kombis ein, die die entspr. Primärschlüsselwerte der 1-Tabellen zur Auswahl stellen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Rogue

hi DF6GL,

danke hat sofort geklappt. Habe wohl zu viel und kompliziert nachgedacht. lol

Gruß