Hallo,
ich bin neu hier und noch ein Anfänger in Access.
Ich habe zwei Felder. Ein Feld Kategorie, was sich auf Tabelle Kategorie bezieht und ein Feld Thema, was sich auf Tabelle Thema bezieht. Nun möchte ich, dass Feld Kategorie in Abhängigkeit von Feld Thema geändert wird. Beispiel: Thema ist Erdbeben und Kategorie wäre dann Naturkatastrophen.
Ich habe es bisher versucht über Datensatzherkunft mit folgender SQL Abfrage:
SELECT tbl_Kategorie.Kategorie
FROM tbl_Kategorie INNER JOIN tbl_Thema ON tbl_Kategorie.[ID_Kategorie] = tbl_Thema.FK_Thema
WHERE ((([tbl_Kategorie].[ID])=[tbl_Thema].[FK_Thema]));
Vielen Dank für eure Hilfen!
Gruß
tim.hartmann
Hallo,
nach meiner Logik kommt zuerst die Kategorie und dann die Wahl des Themas.
Und in der Thementabelle stünde dann der Fremdschlüssel zur Kategorie, also nicht "FK_Thema" sondern "FK_Kategorie".
Aber was ist deine eigentliche Frage, wo liegt das Problem?
Zitatüber Datensatzherkunft mit folgender SQL Abfrage
Kommt hier ein Kombifeld zum Einsatz?
Ja, ein Kombifeld kommt ebenfalls zum Einsatz.
Okay, ich bin etwas weitergekommen. Habe eine weiteres Problem. Also hier mal meine vereinfachte SQL Abfrage ohne das Verknüpfen von zwei Tabellen:
SELECT tbl_Kategorie.Kategorie
FROM tbl_Kategorie
WHERE ((([tbl_Kategorie].[ID])=[Kombinationsfeld74]));
Kombinationsfeld74 ist das Kombinationsfeld mit den Werten der Tabelle Kategorie.
Allerdings funktioniert es leider nicht. Wie kann ich einen Wert aus einem Kombinationsfeld in einer SQL Abfrage verwenden?
Was ist der Zweck der Abfrage und wo kommt sie zum Einsatz?
Der Zweck ist derselbe wie oben beschrieben. Ich möchte in abhängig von Feld Kategorie nur diejenigen Werte in Feld Thema anzeigen lassen, die gleiche ID/Fremd-ID haben. (siehe oben Beispiel zu Naturkatastrophen)
Dann solltest du aber auch auf die tbl_Thema zugreifen:
SELECT tbl_Thema.ThemaID, tbl_Thema.Thema
FROM tbl_Thema
WHERE tbl_Thema.FK_Kategorie = [Kombinationsfeld74]
das liefert den Input für ein zweispaltiges Kombifeld, gebundene Spalte ist die ID, über die Spaltenbreiten wird geregelt, welche Spalte sichtbar wird.
Ok, ich hatte es oben falsch erklärt. Du bist sogar schon einen Schritt weiter.
Erst einmal wollte ich mich nur auf eine Tabelle konzentrieren: Also z. B. auf Tabelle Kategorie. Wenn in einem Feld die 1. ID von TAbelle Kategorie auswählt wird, soll in einem anderen Feld automatisch der Name von der Kategorie angezeigt werden. Ich bekomme es nicht hin. Hier noch einmal der SQL Befehl:
SELECT tbl_Kategorie.Kategorie
FROM tbl_Kategorie
WHERE ((([tbl_Kategorie].[ID])=[Kombinationsfeld74]));
Du könntest die Datenatzherkunft des Kombifeldes folgendermaßen einstellen:
SELECT tbl_Kategorie.ID, tbl_Kategorie.Kategorie
FROM tbl_Kategorie
ORDER BY Kategorie
Das Anpassen der Kombifeld-Eigenschaften, Spaltenanzahl und Spaltenbreiten nicht vergessen!
Bei dem Textfeld stellst du den Steuerelementinhalt dann wie folgt ein:
=Kombinationsfeld74.Column(1)
Das ist eine elegante Lösung, da bin ich mir sicher das es funktioniert ohne das ich es ausprobiert habe! Vielen Dank! :-)
Aber trotzdem (evtl. für spätere Probleme): Gibt es eine Möglichkeit auf Werte aus Feldern in SQL Abfragen zuzugreifen?
Zum Auslesen einzelner Werte aus einer Tabelle oder Abfrage kannst du die DLookUp-Methode einsetzen. Das geht auch direkt im Steuerelementinhalt.
Ich hab doch noch ein Problem zu obiger Sache. Und zwar ist das Feld Thema ebenfalls ein Kombifeld und kein Textfeld. Also wie kann ich die relevanten Items in einem Dropdown Menü anzeigen lassen`?
Hallo,
ich verstehe die Frage nicht, wenn das Kombi die Thementabelle als Datenquelle/Datenherkunft hat, werden doch die Themen angezeigt.
Kannst Du Dein Problem mal präzisieren ?
Die Antwort wurde doch bereits gegeben, siehe Antwort #5 (http://www.access-o-mania.de/forum/index.php?topic=20167.msg112308#msg112308).