WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   MS Access Abfrage (http://www.wcm.at/forum/showthread.php?t=135661)

mr_sax 01.06.2004 21:53

Hallo nochmals!

Leider reicht mein Verständnis nicht aus, um dieses Problem zu lösen!

Ich habe jetzt zwei Tabellen gemacht - eine mit ID, Titel, Original Titel, Format und Sprache und eine zweite mit ID und Schauspieler (alle pro Film in einem Feld).

Die SQL - Ansicht sieht folgendermaßen aus:

SELECT Filme.ID, Filme.Titel, Filme.Originaltitel, Filme.Regie, Filme.Format, Schauspieler.Schauspieler
FROM Filme INNER JOIN Schauspieler ON Filme.ID = Schauspieler.ID
WHERE ((([Filme].[Schauspieler]) Like [Schauspieler]));


Und es funktioniert immer noch nicht!

Ein weiterer verzweifelter Hilferuf: kann mir da jemand weiterhelfen?

Vielen Dank im voraus!

mr_sax

wbendl 02.06.2004 00:15

Hi!

Da ist anscheinend einiges schief gelaufen.

Wenn du mein System verwendest, sind mindestens 3 Tabellen notwendig.

Die Aufteilung, die du jetzt hast bringt garnichts. Da wäre alles in einer Tabelle besser.
Außerdem verknüpfst du die Tabellen über Felder, die keinen Bezug zueinander haben.

Mir ist auch nicht wirklich klar, welches Ergebnis du von deiner Abfrage erwartest, und wie ein Suchbegriff oder Filterkriterium an die Abfrage übergeben wird.

Vorstellen könnte ich mir 2 Abfragen:

1. Alle Schauspieler zu einem Film

2. Alle Filme, in denen ein bestimmter Schauspieler mitspielt

Mit 3 Tabellen sollte sich das ohne VBA machen lassen

mfg

WB

Hussl 02.06.2004 15:03

Ich würde das folgendermaßen lösen:

Tabelle Filme
- FilmID
- Titel
- ...

Tabelle Schauspieler
- ActorID
- Name
- ...

Tabelle FilmSchauspieler
- FilmID
- ActorID

Damit kannst du ganz einfach für jeden Film beliebig viele Schauspieler einfügen. Mit folgender Abfrage kannst du diese dann selektieren:

SELECT Filme.Titel, Schauspieler.Name
FROM Schauspieler INNER JOIN (Filme INNER JOIN FilmSchauspieler ON Filme.FilmID = FilmSchauspieler.FilmID) ON Schauspieler.ActorID = FilmSchauspieler.ActorID;

Vielleicht hilfts weiter!

Grüße,
Hussl

mr_sax 02.06.2004 18:51

Danke vorerst für die geduldige Hilfe!

Leider habe ich erneut ein kleines Problem: in der Tabelle FilmSchauspieler steht FilmID und ActorID. Was soll dann da genau stehen? Die Zahlen 1, 2, 3 etc. oder die richtigen Titel? Und was soll bei ActorID stehen? Ebenfalls die Zahlen, oder die Namen der Schauspieler?

Ich habe beide Varianten versucht, jedesmal bekomme ich bei der Abfrage die Fehlermeldung: Im Ausdruck stimmt ein Datentyp nicht überein!

Wie gesagt, danke für eure Unterstützung!

lg

mr_sax

wbendl 02.06.2004 22:52

Hi!

In den meisten Fällen ist ID eine Zahl. Am einfachsten verwendest du den als Typ Autowert. Dann vergibt Access automatisch eine ID.

Bei Feldern, die mit dieser ID korrespondieren, muß der Typ Long Integer sein. Hier mußt du den entsprechenden Wert händisch eintragen.

Ich schick dir ein kleines Beispiel. Damit ist es leichter zu verstehen, wie die Tabellen aussehen.
Der Komfort liegt erst in den entsprechenden Ein- und Ausgabe-Formularen und Berichten.

mfg

WB


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag