Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Kann man ein Listenfeld mit Textfeld verknüpfen?

Empfohlene Antworten

Veröffentlicht

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).

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

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?

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 :)

*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*

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*

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.