hty Geschrieben 14. Dezember 2003 Teilen Geschrieben 14. Dezember 2003 Hallo, Voraussetzungen: Access 2000 Datenbank auf Win ME Das Problem: Die Datenbank hatte früher eine Tabelle "Videos", unter anderem gab es da eine Spalte "Schauspieler". In dieser Spalte waren die Schauspielernamen als fliesender Text (getrennt durch Komma) aufgelistet. Das habe ich nun geändert Aufgesplittet! Jetzt gibt es eine seperate Tabelle "Schauspiler" und eine Tabelle "Zuweiser" (in der "Video-ID und Schauapieler-ID gespeichert werden). So weit so gut :cool: In meinen Formularen ist es zum Teil erforderlich folgende Anzeige darzustellen: -------------------------------- Video-ID Video-Titel Schauspieler (alle in diesem Film/Video-ID mitwirkenden) -------------------------------- Früher war das (in einem Textfeld angezeigt) kein Problem. Aber nun habe ich ja 1 bis X Schauspieler zu jedem Film. Schlau wie Fuchs :WD hab ich mir gedacht: Das geht wohl nur in einem Listenfeld. Aber das bekomme ich nicht hin :confused: Wie bringe ich das Listenfeld dazu das es mir "nur die Schauspieler anzeigt, die der Video-ID des auf dem Formular angezeigten Videos" entspricht? Gibt es vielleicht eine Möglichkeit aus dem Textfeld (des Formulares) den Wert "Video-ID" herauszulesen und als Bedingung in die Abfrage des Listenfeldes einzubauen? Wer kann mir da behilflich sein? Bin obendrein nicht so doll fit in Access (hab Wochen gebraucht bis ich den Sinn, das Prinzip, die Logik hinter der oben beschriebenen Aufsplittung erkannt habe). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 14. Dezember 2003 Teilen Geschrieben 14. Dezember 2003 Original geschrieben von hty Gibt es vielleicht eine Möglichkeit aus dem Textfeld (des Formulares) den Wert "Video-ID" herauszulesen und als Bedingung in die Abfrage des Listenfeldes einzubauen? Du kannst dem Listenfeld die Abfrage zuweisen: Listenfeld.Rowsource="Select Schauspieler from Tabelle where VideoID=" & Textfeld.Text Je nachdem, wann das Aktualisiert werden soll, könntest du den Befehl z.B. im Ereignis "Nach Aktualisierung" des Textfeldes reinpacken. Die Abfrage oben liefert dir Verschoben ins Datenbankforum Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hty Geschrieben 15. Dezember 2003 Autor Teilen Geschrieben 15. Dezember 2003 Ich dreh noch durch :confused: ich krieg es nicht hin... und hab keine Ahnung woran es scheitert. Ist der oben gennante Lösungsvorschlag so gemeint? Name-des-Listenfeld.Rowsource="Select Schauspieler from Tabelle where VideoID=" & Name-des-Textfeld.Text (Das scheint mir nach meinem dürftigen Verständniss zu stimmen) Nochmals als ergänzende Erklärung Es liegen drei Tabellen vor mit folgenden Spalten tbl_Archiv_Schauspieler -------------------------- SchauspielerID Schauspielernamen usw. tbl_Zuweiser ---------------- SchauspielerID VideoID usw. tbl_Archiv_Video -------------------- VideoID Titel usw. Ich möchte nun folgende Abfrage für ein Listenfeld (Liste18) erstellen: Alle Schauspielernamen des Videos, dessen VideoID gerade im Textfeld "VideoNr" angezeigt wird. Da ich in SQL eine Niete bin habe ich die Abfrage mit Access erstellt und den SQL dann heruskopiert und in den Lösungsvorschlag eingebaut und so sah das dann aus: Liste18.RowSource = "SELECT tbl_Zuweiser.VideoID, tbl_Archiv_Schauspieler.SchauspielerID, tbl_Archiv_Schauspieler.Schauspielernamen " & _ "FROM tbl_Archiv_Schauspieler RIGHT JOIN tbl_Zuweiser ON tbl_Archiv_Schauspieler.SchauspielerID = tbl_Zuweiser.SchauspielerID WERE tbl_Zuweiser.VideoID = " & VideoNr.Text ...und ich weiss nicht wieviele Abwandlungsversuche davon... ich kann nicht mehr. Wer kann mir sagen woran es scheitert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 Original geschrieben von hty Ist der oben gennante Lösungsvorschlag so gemeint? Name-des-Listenfeld.Rowsource="Select Schauspieler from Tabelle where VideoID=" & Name-des-Textfeld.Text (Das scheint mir nach meinem dürftigen Verständniss zu stimmen) Ja, so war es gemeint. Liste18.RowSource = "SELECT tbl_Archiv_Schauspieler.Schauspielernamen FROM tbl_Archiv_Video INNER JOIN (tbl_Archiv_Schauspieler INNER JOIN tbl_Zuweiser ON tbl_Archiv_Schauspieler.SchauspielerID = tbl_Zuweiser.SchauspielerID) ON tbl_Archiv_Video.VideoID = tbl_Zuweiser.VideoID WHERE tbl_Archiv_Video.VideoID=" & VideoNr.Text Mit der Abfrage funktioniert es Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hty Geschrieben 16. Dezember 2003 Autor Teilen Geschrieben 16. Dezember 2003 *heul* ...eine weitere Nacht puzzel und basteln und probieren... ohne Erfolg Es funktioniert nicht. Ich habe mal den SQL herunterreduziert und habe versucht den ganzen Inhalt der Tabelle (ohne Abfrage) anzuzeigen... wieder nix Woran kann das nur liegen? Gibt es vielleicht einen komplet anderen Lösungsansatz? Im alten Formular wurde angezeigt in Textfeldern: VideoID Titel Schauspieler (als fliesender Text, Daten kamen alles aus "einer" Spalte) .... Dieses Formular soll jetzt ein Listenfeld anstelle des Textfeldes "Schauspieler" erhalten. Dieses Feld soll dann natürlich nur die zu dem (aktuell auf dem Formular angezeigten Video) angezeigt werden. Da Problem muss doch irgendwie zu lösen sein. Hab schon keine Haare mehr auf dem Kopf *gg* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hty Geschrieben 19. Dezember 2003 Autor Teilen Geschrieben 19. Dezember 2003 Ooooh-jeh-ohje! Ich hab den Fehler endlich gefunden. Für alle ähnlich Ungebildeten (wie meine Wenigkeit): Wenn man eine Abfrage in von Access in der Entwurfsansicht oder mit dem Assistenten erstellt und anschliessend aus der SQL-Ansicht die SQL-Abfrage herauskopiert um sie in der Visualbasic-Ebene in den Code einzufügen, unbedingt darauf achten: Das abschliesende ";" gehört da nicht rein (das hat mich 2 Tage ausgebremst) *lach* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.