Kontextsensitive Wertehilfe

Hallo Leute,

ich nutze öfters in Access die Möglichkeit eine Prüftabelle für ein Feld zu hinterlegen um eine Werteliste zu haben.

Manchmal habe ich jedoch 2 Wertelisten, die hierarchisch sind.

Vielleicht ein einfaches Beispiel:

  • Es gibt ein Feld „Region“ mit einer Prüftabelle „tbl_Region“, wo Nord, Süd, West und Ost drinsteht
  • Ein Feld „Wohnort“ mit der Prüftabelle „tbl_Wohnort“.

Wenn ich die Wertehilfe für Wohnort aufklappe, dann möchte ich nicht alle Werte sehen, sondern wenn z. B. im Feld Region „Nord“ drinsteht, soll er auch nur die Städte aus dem Norden anzeigen.

Habe da schon einige Zeit rumprobiert und die beste Näherung hatte noch ein SQL-Befehl als Datensatzherkunft:
„Select Ort, Region from [tbl_Ort] order by Region, Ort.“ Hier gibt es eine 1-N Beziehung zwischen den Tabellen tbl_Ort und tbl_Region. Dann sehe ich zwar alle Orte, aber zumindest nach der Region sortiert und kann so relativ schnell den richtigen Ort finden.

Aber es wäre sehr elegant und schön wenn ich eben nur die Orte aus dem Norden sehen würde.

Hat da jemand einen Tipp?

Vielen Dank schon mal !!!

Schönen Gruß,

René

Hallo Leute,

Hallo Leut.

Wenn ich die Wertehilfe für Wohnort aufklappe, dann möchte ich
nicht alle Werte sehen, sondern wenn z. B. im Feld Region
„Nord“ drinsteht, soll er auch nur die Städte aus dem Norden
anzeigen.

Also, dieses Thema eignet sich inzwischen schon für eine FAQ. Das aber nur am Rande …

Hinterlege das Kombinationsfeld „Region“ mit einer Ereignisprozedur

Sub Region_AfterUpdate()
Me!Wohnort.RecordSource=„SELECT * FROM tabelle WHERE region=“+Me!Region+" ORDER BY wieduwillst;"
Me!Wohnort.Requery
End Sub

Damit stellst Du jedesmal, wenn Du die ausgewählte Region änderst, eine neue Liste von Orten aus ebenjener in das zweite Kombinationsfeld.

Gruß kw

Hallo kw,

vielen Dank für deine schnelle Antwort !!!

Sie klingt auch sehr vielversprechend, allerdings klappt es noch nicht so ganz.

Habe es gemacht wie du gesagt hast und bekomme die Fehlermeldung, wenn ich einen Wert des Feldes Region ändern möchte:
„Laufzeitfehler ‚438‘: Objekt unterstützt diese Eigenschaft oder Methode nicht.“

Ich habe das Coding (Eigentlich geht es bei mir um die Felder „Säule“(=Region) und „Bereich“(=Ort). Aber das Prinzip ist ja das gleiche:

Private Sub Säule_AfterUpdate()
Me!Bereich.RecordSource = „SELECT * FROM tbl_TabelleBereich WHERE Säule=“ + Me!Säule + " ORDER BY Bereich;"
Me!Bereich.Requery
End Sub

In meinem anderen anderen Feld „Bereich“ war ich mir nicht sicher was ich da als Datenherkunft eintragen sollte. Habe es erst mit „tbl_TabelleBereich“ versucht und erhielt die komplette ungefilterte Liste und dann habe ich es offen gelassen und die Liste war leer.

Ich hatte auch die Idee deinen Code beim Ereignis „Private Sub Form_Current()“ einzutragen, aber auch da erhielt ich dieselbe Fehlermeldung wie oben.

Hast du eine Idee was noch fehlt? Die Feld/Tabellennamen sind korrekt.

Schönen Gruß,

René

Hinterlege das Kombinationsfeld „Region“ mit einer
Ereignisprozedur

Sub Region_AfterUpdate()
Me!Wohnort.RecordSource=„SELECT * FROM tabelle WHERE
region=“+Me!Region+" ORDER BY wieduwillst;"
Me!Wohnort.Requery
End Sub

Damit stellst Du jedesmal, wenn Du die ausgewählte Region
änderst, eine neue Liste von Orten aus ebenjener in das zweite
Kombinationsfeld.

Gruß kw

Hallo.

Sie klingt auch sehr vielversprechend, allerdings klappt es
noch nicht so ganz.

Kein Wunder *schääääääm*. Die Eigenschaft muss RowSource und nicht RecordSource heißen …

Gruß kw