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;
(http://2.dropdownauswahl:) 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ß
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.Requeryein.
gruss ekkehard
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
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
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
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
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.
O.K., dann zeig mal die Abfrage hinter Kombi0.
Da fehlt vermutlich das Feld "Fraktion_ID" oder es steht nicht
in der gebundenen Spalte.
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
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.
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
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ß
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ß
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.
hi DF6GL,
danke hat sofort geklappt. Habe wohl zu viel und kompliziert nachgedacht. lol
Gruß