Discussion:
Unterformular, aber mit M:N Beziehung
(zu alt für eine Antwort)
Mathias Nestler
2007-01-05 23:46:47 UTC
Permalink
Ich habe eine einfache Filmdatenbank. Im Formular für die Filme sollen
nun in einem Unterformular die jeweiligen Schauspieler angezeigt
werden. Die Tabelle Filme und Schauspieler sind aber über eine
Zwischentabelle in einer M:N Beziehung verbunden.

Wie kann ich das nun realisieren?
Dietmar Thesing
2007-01-06 07:30:08 UTC
Permalink
Hallo Mathias!
Post by Mathias Nestler
Ich habe eine einfache Filmdatenbank. Im Formular für die Filme sollen
nun in einem Unterformular die jeweiligen Schauspieler angezeigt
werden. Die Tabelle Filme und Schauspieler sind aber über eine
Zwischentabelle in einer M:N Beziehung verbunden.
Das ist sicher genau richtig.
Post by Mathias Nestler
Wie kann ich das nun realisieren?
Relativ einfach geht das mit dem Formularassistenten, indem du ihm
sofort alle drei Tabellen mit den zu berücksichtigenden Feldern
angibst.

Oder per Hand:
1. Hauptformular z.B. frmFilme, als Datenherkunft
(Eigenschaften/Daten) die Tabelle tblFilme (mit FilmID) , bzw. eine
Abfrage eintragen, die auf dieser Tabelle basiert.
2. UFo z.B. frmFilme_UF_Schauspieler, als Datenherkunft eine
Abfrage, die die Zwischentabelle (tblFilmeVerbSchauspieler, mit
FilmID und SchauspielerID) und die tblSchauspieler (das Feld
SchauspielerID wird hier nicht benötigt) beinhaltet.

Auch das UFo kann man wieder mit dem Assistenten erstellen lassen,
oder zuerst einzeln mit der besagten Datenquelle erstellen, dann in
das HF einfügen.
Der Assistent fragt auch danach, über welche Felder dann verknüpft
werden soll - das ist dann die Kennziffer für die Filme.

Wenn ich mich nicht klar genug ausgedrückt haben sollte, meld dich
einfach noch mal.
Gruß
Dietmar
Mathias Nestler
2007-01-07 16:36:19 UTC
Permalink
Hallo Dietmar,

danke erstmal. Funktioniert wie du gesagt hast.
Aber ich habe etwas nicht bedacht: Man soll ja auch evtl. bereits
eingetragene Schauspieler auswählen können. Deswegen denke ich jetzt
an so eine Art Listenfeld mit Mehrfachauswahl. Wenn in einem Film also
jetzt 2 bestimme Schauspieler spielen, sollen diese beiden bei dem Feld
bereits ausgewählt sein, wenn ich den Eintrag für den Film öffne. So
in etwas stelle ich mir das vor. Wie könnte man das umsetzen?
Oder hättest du da eine bessere Idee?
Post by Dietmar Thesing
Gruß
Dietmar
Dietmar Thesing
2007-01-07 17:17:02 UTC
Permalink
Hallo Mathias,

"Mathias Nestler" <***@gmail.com> schrieb im Newsbeitrag news:***@42g2000cwt.googlegroups.com...
Hallo Dietmar,
Post by Mathias Nestler
danke erstmal. Funktioniert wie du gesagt hast.
Fein.
Aber hast du den Assi genommen, oder per Hand gemacht?
Post by Mathias Nestler
Aber ich habe etwas nicht bedacht: Man soll ja auch evtl. bereits
eingetragene Schauspieler auswählen können. Deswegen denke ich jetzt
an so eine Art Listenfeld mit Mehrfachauswahl. Wenn in einem Film also
jetzt 2 bestimme Schauspieler spielen, sollen diese beiden bei dem Feld
bereits ausgewählt sein, wenn ich den Eintrag für den Film öffne. So
in etwas stelle ich mir das vor. Wie könnte man das umsetzen?
Oder hättest du da eine bessere Idee?
Ich weiß jetzt nicht, ob ich dich überhaupt verstehe.
Vielleicht besser, wenn du die Tabellen bzw. besser Abfragen mit den
wichtigsten Feldern mal nennst. Also einfach die SQL-Strings posten.

Aber ich versuche mal: also im HF (Einzelformular) steht nur der
Film, mit den eindeutig zum Film gehörenden Daten.
(tblFilme, Felder FilmID, txtFilmTitel etc).
Im UF als Datengrundlage die Verbindungstabelle und die Tabelle mit
den Schauspielern (tblSchauspieler mit Feldern txtNachname,
txtVorname etc.

Wenn die schon zugeordnet sind, dann brauchst du doch kein
Listenfeld, sondern hast die Liste im Unterformular (muss dann
natürlich auf Endlosformular oder Datenblatt eingestellt sein).

Wenn du jetzt zusätzlich Schauspieler eintragen willst, die in der
Liste der Schauspieler (tlb Schauspieler) zwar schon vorhanden sind,
aber noch nicht dem neuen Film zugeordnet wurden, dann würde ich da
das Feld SchauspielerID aus der *Verbindungstabelle* reinnehmen (aus
der Feldliste in den Entwurf ziehen), und dann als Kombinationsfeld
(rechte Maustaste, ändern zu Kombinationsfeld) benutzen.
Datenherkunft ist dann eine Abfrage auf die tblSchauspieler,
sortiert aufsteigend nach ihren Nachnamen und Vornamen.
Steuerelementinhalt ist dann die SchauspielerID aus der
Verbindungstabelle.
Ich mach dann oft noch als Ereignis bei Änderung ein
Me.ActiveControl.dropdown rein. Dann klappt die Liste auf, wenn der
erste Buchstabe des Nachnamens eingetippt wird. Und dann noch ein
Ereignis BeiNichtInListe.
Das ist jetzt so ein ganz einfaches Verfahren, Möglichkeiten gibt es
fast immer auch noch viele andere.
Hoffe dass dir das etwas weiterhilft.
Gruß
Dietmar
Mathias Nestler
2007-01-08 17:50:07 UTC
Permalink
Post by Dietmar Thesing
Ich weiß jetzt nicht, ob ich dich überhaupt verstehe.
Vielleicht besser, wenn du die Tabellen bzw. besser Abfragen mit den
wichtigsten Feldern mal nennst. Also einfach die SQL-Strings posten.
HF: SELECT Film.ID, Film.Titel, Film.Bemerkung, Genre.Bezeichnung AS
Genre_Bezeichnung, Film.Produktionsjahr, Film.Länge, Land.Bezeichnung
AS Land_Bezeichnung, Film.Bewertung, Film.Bild FROM Land INNER JOIN
(Genre INNER JOIN Film ON Genre.ID=Film.Genre_ID) ON
Land.ID=Film.Produktionsland_ID;

UF: SELECT Schauspieler.ID, Schauspieler.Vorname, Schauspieler.Name,
Schauspieler.Geschlecht, Schauspieler.Geburtstag,
Schauspieler.Geburtsland, Schauspieler.tot, spielt_mit.Film_ID FROM
Schauspieler INNER JOIN spielt_mit ON
Schauspieler.ID=spielt_mit.Schauspieler_ID;
Post by Dietmar Thesing
Aber ich versuche mal: also im HF (Einzelformular) steht nur der
Film, mit den eindeutig zum Film gehörenden Daten.
(tblFilme, Felder FilmID, txtFilmTitel etc).
Im UF als Datengrundlage die Verbindungstabelle und die Tabelle mit
den Schauspielern (tblSchauspieler mit Feldern txtNachname,
txtVorname etc.
Wenn die schon zugeordnet sind, dann brauchst du doch kein
Listenfeld, sondern hast die Liste im Unterformular (muss dann
natürlich auf Endlosformular oder Datenblatt eingestellt sein).
Hast du richtig verstanden!
UF ist ein Datenblatt.
Post by Dietmar Thesing
Wenn du jetzt zusätzlich Schauspieler eintragen willst, die in der
Liste der Schauspieler (tlb Schauspieler) zwar schon vorhanden sind,
aber noch nicht dem neuen Film zugeordnet wurden, dann würde ich da
das Feld SchauspielerID aus der *Verbindungstabelle* reinnehmen (aus
der Feldliste in den Entwurf ziehen), und dann als Kombinationsfeld
(rechte Maustaste, ändern zu Kombinationsfeld) benutzen.
Datenherkunft ist dann eine Abfrage auf die tblSchauspieler,
sortiert aufsteigend nach ihren Nachnamen und Vornamen.
Steuerelementinhalt ist dann die SchauspielerID aus der
Verbindungstabelle.
Diese Kombifeld kann ich dann aber nur in das UF setzen, oder? Und da
habe ich ja ein Datenblatt...
Post by Dietmar Thesing
Ich mach dann oft noch als Ereignis bei Änderung ein
Me.ActiveControl.dropdown rein. Dann klappt die Liste auf, wenn der
erste Buchstabe des Nachnamens eingetippt wird. Und dann noch ein
Ereignis BeiNichtInListe.
welches Ereignis dann BeiNichtInListe?
Post by Dietmar Thesing
Gruß
Dietmar
lg Mathias
Dietmar Thesing
2007-01-08 20:31:48 UTC
Permalink
Hallo Matthias,
mein Newsreader macht bei Antworten auf deine Mails keine
Einrückungen mit "> ", muss ich immer von Hand machen, aber ich kenn
mich damit auch nicht aus,
Post by Dietmar Thesing
Ich weiß jetzt nicht, ob ich dich überhaupt verstehe.
Vielleicht besser, wenn du die Tabellen bzw. besser Abfragen mit den
wichtigsten Feldern mal nennst. Also einfach die SQL-Strings
posten.
HF: SELECT Film.ID, Film.Titel, Film.Bemerkung, Genre.Bezeichnung AS
Genre_Bezeichnung, Film.Produktionsjahr, Film.Länge,
Land.Bezeichnung
AS Land_Bezeichnung, Film.Bewertung, Film.Bild FROM Land INNER JOIN
(Genre INNER JOIN Film ON Genre.ID=Film.Genre_ID) ON
Land.ID=Film.Produktionsland_ID;

UF: SELECT Schauspieler.ID, Schauspieler.Vorname, Schauspieler.Name,
Schauspieler.Geschlecht, Schauspieler.Geburtstag,
Schauspieler.Geburtsland, Schauspieler.tot, spielt_mit.Film_ID FROM
Schauspieler INNER JOIN spielt_mit ON
Schauspieler.ID=spielt_mit.Schauspieler_ID;"

Scheint mir auf den ersten Blick fast in Ordnung so. Auf jeden Fall
solltest du das Feld Name umbenennen in Nachname, weil "Name" ein
reserviertes Wort ist und zu Problemen führen wird.

" > Aber ich versuche mal: also im HF (Einzelformular) steht nur der
Post by Dietmar Thesing
Film, mit den eindeutig zum Film gehörenden Daten.
(tblFilme, Felder FilmID, txtFilmTitel etc).
Im UF als Datengrundlage die Verbindungstabelle und die Tabelle mit
den Schauspielern (tblSchauspieler mit Feldern txtNachname,
txtVorname etc.
Wenn die schon zugeordnet sind, dann brauchst du doch kein
Listenfeld, sondern hast die Liste im Unterformular (muss dann
natürlich auf Endlosformular oder Datenblatt eingestellt sein).
Hast du richtig verstanden!
UF ist ein Datenblatt.
Post by Dietmar Thesing
Wenn du jetzt zusätzlich Schauspieler eintragen willst, die in der
Liste der Schauspieler (tlb Schauspieler) zwar schon vorhanden
sind,
aber noch nicht dem neuen Film zugeordnet wurden, dann würde ich da
das Feld SchauspielerID aus der *Verbindungstabelle* reinnehmen (aus
der Feldliste in den Entwurf ziehen), und dann als
Kombinationsfeld
(rechte Maustaste, ändern zu Kombinationsfeld) benutzen.
Datenherkunft ist dann eine Abfrage auf die tblSchauspieler,
sortiert aufsteigend nach ihren Nachnamen und Vornamen.
Steuerelementinhalt ist dann die SchauspielerID aus der
Verbindungstabelle.
Diese Kombifeld kann ich dann aber nur in das UF setzen, oder? Und
da
habe ich ja ein Datenblatt..."

Ja, das kommt dann natürlich in das UF, und das geht auch in der
Datenblattansicht. Ich nehme die nie, aber hab`s grad angekuckt, das
klappt auch in der Datenblattansicht. Der Nach-Unten-Pfeil vom
Kombifeld ist allerdings nur dann zu sehen, wenn das Feld den Fokus
hat.

"> Ich mach dann oft noch als Ereignis bei Änderung ein
Post by Dietmar Thesing
Me.ActiveControl.dropdown rein. Dann klappt die Liste auf, wenn der
erste Buchstabe des Nachnamens eingetippt wird. Und dann noch ein
Ereignis BeiNichtInListe.
welches Ereignis dann BeiNichtInListe?"

Angenommen das Kombifeld enthält 3 Spalten, ID, Nachname, Vorname.
Die erste Spalte ist die gebundene Spalte, Spaltenbreite 0cm (Alles
in den Eigenschaften des Kombifeldes einzustellen).
Dann unter Ereignis einfach [Ereignisprozedur] auswählen, die drei
Pünktchen hinter "Bei NIcht in Liste" anklicken, dann ist die erste
und letzte Zeile schon da. (Ich weiß nicht, wie viel du schon an
VBA-Kenntnissen hast)

z.B. ohne Fehlerbehandlung als ungetesteter Luftcode, wenn der
Steuerelementname (! - ich nehme nie den von Access eingetragenen
Feldnamen aus der Datenquelle, weil das zu Verwechslungen führen
kann) cmbID heißt:

Private Sub cmbID_NotInList(NewData As String, Response As Integer)

Dim db As DAO.Database
Dim rst As Recordset
Dim strEing As String
Dim strVorn As String

If MsgBox("Soll der neue Schauspieler >> " & NewData & "<< der
Liste hinzugefügt werden?", vbYesNo + vbQuestion, "Die Quelle ist
noch nicht in der Liste vorhanden") = vbNo Then
MsgBox "Der Schauspieler ist nicht in die Liste aufgenommen
worden", vbExclamation, "Fehlermeldung"
Response = acDataErrContinue
Else
Set db = CurrentDb()
Set rst = db.OpenRecordset("Schauspieler")
strVorn = InputBox("Bitte Vornamen eingeben",
"Eingabeaufforderung")
rst.AddNew
rst!Nachname = NewData
rst!Vorname = strVorn
rst.Update
rst.Close
Response = acDataErrAdded
set rst = Nothing
set db = Nothing
End If
End Sub

Du könntest natürlich auch noch gleich nach den anderen Daten fragen
und sie hinzufügen. Oder stattdessen ein Formular öffnen, in dem die
Schauspieler eingetragen werden, mit allen notwendigen Daten.

HTH
Dietmar
Winfried Sonntag
2007-01-08 21:54:35 UTC
Permalink
Post by Dietmar Thesing
mein Newsreader macht bei Antworten auf deine Mails keine
Einrückungen mit "> ", muss ich immer von Hand machen, aber ich kenn
mich damit auch nicht aus,
Schau doch mal in der OE-FAQ vorbei. Fang bitte hier mal an:
http://oe-faq.de/?56FAQ:1.01
Auch diesen Teil solltest Du nicht vergessen:
http://oe-faq.de/?56FAQ:3.23
Man wird es Dir stillschweigend danken. ;-)

Servus
Winfried
--
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
Richtig zitieren: http://einklich.net/usenet/zitier.htm
Dietmar Thesing
2007-01-09 17:48:05 UTC
Permalink
Hallo Winfried,
irgendwie war ich etwas faul, dachte auch, dass hätte ich schon
beachtet, aber das war auf meinem alten Computer, was ja nur ein
Jahr her ist. ;-)
Post by Winfried Sonntag
Post by Dietmar Thesing
mein Newsreader macht bei Antworten auf deine Mails keine
Einrückungen mit "> ", muss ich immer von Hand machen, aber ich kenn
mich damit auch nicht aus,
http://oe-faq.de/?56FAQ:1.01
http://oe-faq.de/?56FAQ:3.23
Man wird es Dir stillschweigend danken. ;-)
Fein, ich hoffe ich habe jetzt alles richtig eingestellt. War
immerhin eine Stunde Arbeit.
Jedenfalls herzlichen Dank für deinen Hinweis!
HTH
Dietmar
Winfried Sonntag
2007-01-09 18:40:16 UTC
Permalink
Post by Dietmar Thesing
Post by Winfried Sonntag
http://oe-faq.de/?56FAQ:1.01
http://oe-faq.de/?56FAQ:3.23
Man wird es Dir stillschweigend danken. ;-)
Fein, ich hoffe ich habe jetzt alles richtig eingestellt. War
immerhin eine Stunde Arbeit.
Yepp, jetzt ist alles wunderbar. Vielen Dank fürs umstellen.
Post by Dietmar Thesing
Jedenfalls herzlichen Dank für deinen Hinweis!
Bitte, gern geschehen. ;-)

Servus
Winfried
--
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
Richtig zitieren: http://einklich.net/usenet/zitier.htm
Dietmar Thesing
2007-01-09 17:55:46 UTC
Permalink
Hallo Winfried,
leider klappt es so noch nicht - bei der Antwort auf deine Nachricht
klappt es, aber nicht, wenn ich Winfrieds anklicke. Das gleiche
Problem wie vorher, die Einrückung mit > ist eingestellt, aber wird
von OE nicht vorgenommen.

Herzlicher Gruß
Dietmar
Winfried Sonntag
2007-01-09 18:43:42 UTC
Permalink
Post by Dietmar Thesing
leider klappt es so noch nicht - bei der Antwort auf deine Nachricht
klappt es, aber nicht, wenn ich Winfrieds anklicke. Das gleiche
*Ich* bin Winfried. ;-)
Post by Dietmar Thesing
Problem wie vorher, die Einrückung mit > ist eingestellt, aber wird
von OE nicht vorgenommen.
Entweder Du fragst in:
microsoft.public.de.german.inetexplorer.ie6.outlookexpress nach, oder
Du verwendest einen anderen Newsreader.

//Werbung an
http://www.40tude.com/dialog/
http://borumat.de/40tude-dialog-newsreader-tipps.php#skripte
und eine Deutsche Newsgroup hats auch noch:
de.comm.software.40tude-dialog
//Werbung aus

Servus
Winfried
--
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
Richtig zitieren: http://einklich.net/usenet/zitier.htm
Peter Doering
2007-01-09 23:22:31 UTC
Permalink
Servus Winfried,
Post by Winfried Sonntag
Post by Dietmar Thesing
leider klappt es so noch nicht - bei der Antwort auf deine Nachricht
klappt es, aber nicht, wenn ich Winfrieds anklicke. Das gleiche
*Ich* bin Winfried. ;-)
Wegen des fehlenden Quote bin ich nicht sicher, aber bei msnews gab's heute
wieder Luecken. Kann durchaus sein, dass auch Versanet betroffen war.

Gruss - Peter
Jens Schilling
2007-01-10 06:56:12 UTC
Permalink
Hallo, Peter
Post by Peter Doering
Wegen des fehlenden Quote bin ich nicht sicher, aber bei msnews gab's
heute wieder Luecken. Kann durchaus sein, dass auch Versanet
betroffen war.
Ich habe gerade eine Antwort von Henry gefunden, die vom 3.1. datiert; da
scheint es tatsächlich wieder einige Probleme zu geben. Ungewöhnlich ist
z.B. auch, dass ist mir gestern aufgefallen, dass ein oder zwei Antworten
Henry's bei mir doppelt vorhanden waren.
--
Gruss
Jens
______________________________
FAQ: http://www.donkarl.com
Peter Doering
2007-01-10 11:39:55 UTC
Permalink
Hallo Jens,
Post by Jens Schilling
Post by Peter Doering
Wegen des fehlenden Quote bin ich nicht sicher, aber bei msnews gab's
heute wieder Luecken. Kann durchaus sein, dass auch Versanet
betroffen war.
Ich habe gerade eine Antwort von Henry gefunden, die vom 3.1. datiert; da
scheint es tatsächlich wieder einige Probleme zu geben. Ungewöhnlich ist
z.B. auch, dass ist mir gestern aufgefallen, dass ein oder zwei Antworten
Henry's bei mir doppelt vorhanden waren.
Nicht nur bei dir. Ich haette das aber eher Henrys Ungeduld zugeschrieben,
der anders als erwartet seine eigenen Postings nicht sofort gesehen und
deshalb nochmal geschickt hat. ;-)

Seit den Problemen mit msnews vergangenes Jahr, als so viele waise Postings
rumschwirrten, lade ich die fuer mich interessanten NGs von 2 verschiedenen
Servern und hab damit die Moeglichkeit, Sync-Fehler abzugleichen. Nachdem
Henry auch ueber individual postet, scheidet diese Fehlerquelle aus.

Gruss - Peter
Dietmar Thesing
2007-01-10 07:13:40 UTC
Permalink
Hallo Winfried,
Post by Winfried Sonntag
Post by Dietmar Thesing
leider klappt es so noch nicht - bei der Antwort auf deine
Nachricht
klappt es, aber nicht, wenn ich Winfrieds anklicke. Das gleiche
*Ich* bin Winfried. ;-)
Ich war wohl schon ein wenig müde - ich meinte natürlich Mathias ihm
seine Nachricht.
Post by Winfried Sonntag
Post by Dietmar Thesing
Problem wie vorher, die Einrückung mit > ist eingestellt, aber wird
von OE nicht vorgenommen.
microsoft.public.de.german.inetexplorer.ie6.outlookexpress nach,
Danke für den Hinweis, hab nur kurz reingesehen und gleich eine
Antwort gefunden:
http://oe-faq.de/?56FAQ:2.01
Post by Winfried Sonntag
oder
Du verwendest einen anderen Newsreader.
Neiiin! Es mag viele andere wesentlich bessere geben als meinen,
aber ich tue mich immer schwer mit neuen Programmen. Besser ein
schlechtes, das ich kenne, als ein gutes, das ich nicht kenne ;-).
Post by Winfried Sonntag
//Werbung an
http://www.40tude.com/dialog/
http://borumat.de/40tude-dialog-newsreader-tipps.php#skripte
de.comm.software.40tude-dialog
//Werbung aus
Zugegeben, sieht vielversprechend aus, schade, dass ich zu faul bin.
Danke für deine Hilfe
Freundliche Grüße
Dietmar
Winfried Sonntag
2007-01-10 21:56:37 UTC
Permalink
Post by Dietmar Thesing
Post by Winfried Sonntag
microsoft.public.de.german.inetexplorer.ie6.outlookexpress nach,
Danke für den Hinweis, hab nur kurz reingesehen und gleich eine
http://oe-faq.de/?56FAQ:2.01
Freut mich, daß der Hinweis auf die FAQ gleich doppelt geholfen hat.
Bitte laß doch vor Deiner Antwort noch eine Leerzeile. So wie bei mir
jetzt grade, liest sich leichter. Danke. ;-)
Post by Dietmar Thesing
Zugegeben, sieht vielversprechend aus, schade, dass ich zu faul bin.
Du weißt nicht was dir dabei entgeht. Aber wie sagt man manchmal, wer
nicht will der hat schon. Nix für ungut. ;-)

Servus
Winfried
--
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Access-FAQ: http://www.donkarl.com/AccessFAQ.htm
Access-Stammtisch: http://www.access-muenchen.de
Richtig zitieren: http://einklich.net/usenet/zitier.htm
Thomas Möller
2007-01-09 19:01:35 UTC
Permalink
Hallo Dietmar,
Post by Dietmar Thesing
leider klappt es so noch nicht - bei der Antwort auf deine Nachricht
klappt es, aber nicht, wenn ich Winfrieds anklicke. Das gleiche
Problem wie vorher, die Einrückung mit > ist eingestellt, aber wird
von OE nicht vorgenommen.
als zusätzlich Ergänzung kann ich den OE-Quotefix empfehlen:
http://home.in.tum.de/~jain/software/oe-quotefix/

CU
--
Thomas

Homepage: www.Team-Moeller.de
Loading...