Inhalt von 2. Tabelle als Kriterium für Abfrage

Hallo,

ich habe da ein Problem mit einer Abfrage in Access 2000.
Und zwar möchte ich auf einer Tabelle eine Abfrage erstellen, bei der eines der Kriterien ist, ob die Inhalte eines bestimmten Feldes in einem der Werte eines Feldes einer anderen Tabelle entspricht.

Hintergrund:
Ich könnte zwar in der Abfrage die ganzen Einzelwerte als „oder“-Kriterium eintragen, aber eine Zweite Tabelle, die nur die Werte für die Abfrage beinhaltet ist einfach leichter zu pflegen. Ausserdem sollten bei mehreren verschiedenen Abfragen immer wieder die gleichen Werte verwendet werden.

Kann mir hier jemand weiterhelfen, wie man dieses Problem relativ einfach lösen kann?

Gruß

Thomas

Hallo,

mit VBA geht das:

Dim db As Database, rst1 As Recordset
Dim stSQL As String
Dim qdfNew As QueryDef, qdfLoop As QueryDef
Dim stAbfrage As String

stAbfrage = „Meine_Abfrage“

'Prüfen, ob Abfrage existiert (Wenn ja, löschen)

Set db = CurrentDb

For Each qdfLoop In db.QueryDefs

If qdfLoop.Name = stAbfrage Then
db.QueryDefs.Delete stAbfrage
Else
'Nichts tun
End If

Next qdfLoop

'Abfrage neu erstellen

stSQL = "SELECT Tabelle_die_abgefragt_wird.Feld1, Tabelle_die_abgefragt_wird.Feld2, " _
& "FROM Tabelle_die_abgefragt_wird WHERE "

Set rst1 = db.OpenRecordset(„Tabelle_mit_Kriterien“, dbOpenSnapshot)

stSQL = stSQL & "Tabelle_die_abgefragt_wird.Kriteriumsfeld = " & rst1.[Feld_mit_Kriterium]

rst1.MoveNext

Do Until rst1.EOF = True
stSQL = stSQL & " OR Tabelle_die_abgefragt_wird.Kriteriumsfeld = " & rst1.[Feld_mit_Kriterium]
Loop

Set qdfNew = db.CreateQueryDef(stAbfrage, stSQL)

rst1.Close

Set qdfNew = Nothing
Set db = Nothing
Set rst1 = Nothing

Hab ich mal so heruntergeschrieben, also ungetestet. Wenn das Kriterium ein String (Zeichenkette) ist, muß man noch Anführungszeichen einbauen. Hier habe ich mal eine Zahl als Kriterium angenommen.

ujk

Hallo Thomas

Kann mir hier jemand weiterhelfen, wie man dieses Problem
relativ einfach lösen kann?

Entweder ich habe deine Frage nicht richtig verstanden, oder ich verstehe nicht, warum Kollege ujk mit Kanonen auf Spatzen schiesst.
Meiner Meinung nach tut’s hier doch ein simpler Join:

SELECT MeineTabelle.\* FROM MeineTabelle INNER JOIN MeineKriterienTabelle ON MeineTabelle.Kriterium = MeineKriterienTabelle.Kriterium;

Oder sehe ich das falsch?
Die Lösung von ujk würde natürlich auch funktionieren.

Gruss
Peter

ich verstehe nicht, warum Kollege ujk mit Kanonen auf Spatzen
schiesst.

Ich baller halt’ so gern.

Nein, ich hatte das für einen anderen Zweck schon mal so gemacht und das hat mir wohl den Blick verbaut.

ujk