Base - Listenfeld mit zwei Kriterien

Hallo,
ich möchte in einer Datenbank Orte und zugehörige Räume für
Veranstaltungen aufnehmen. Ich habe da Ort1, Ort2, Ort3 usw. Im Ort1
gibt es Raum1, Raum2, im Ort2 Raum3, Raum4, Raum5, im Ort3 gibt es Raum6...
Die Orte sind in einer Tabelle mit ID_Ort und Ort, die Räume in einer
anderen Tabelle mit ID_Raum, ID_Ort und Raum. Damit weiß ich, welcher
Raum in welchem Ort ist.
In einem Formular werden zunächst die Orte mit Hilfe eines Listenfeldes
ausgewählt und deren ID_Ort in die Grundtabelle eingetragen. Das
funktioniert einwandfrei. Nun möchte ich im selben Formular für den
vorher eingetragenen Ort einen zugehörigen Raum auswählen. Das
Listenfeld soll mir also nur die relevanten Räume anbieten und die
entsprechende ID_Raum in die Grundtabelle eintragen. Für Ort2 dürften
mir also nur Raum3, Raum4  oder Raum5 angeboten werden.
Da habe ich schon viel probiert, schaffe es aber einfach nicht und bitte
nun um Hilfe

Viele Grüße

Thomas

Hallo!

Versuche es mal von der Überlegung her anders herum: Erst gibt dir die
Auswahl mögliche Räume vor und dann sagt sie dir wo die Räume sind.

Ferner bietet es sich an eine "Hotelnummerierung" vorzunehmen: Zimmer
312 ist das "12." Zimmer in der 3. Etage. Wobei die 12 das 2. zimmer
rechts vom Aufzug ist.

Was du brauchst sind verschachtelte Suchabfragen.

Grüsse

Hallo Thomas,

ich nehme an, die "Grundtabelle" soll die Veranstaltungen aufnehmen.
Ich wüsste bei deiner Vorstellung mit Listenfeldern nur den Weg, das Listenfeld für die Räume abhängig vom gewählten Ort anzupassen, das kann geschehen, indem die Datenquelle als SQL deklariert ist und das SQL-Stament geändert wird (SELECT Raum, ID_Raum FROM Räume WHERE ID_Ort = id_ort). Diese Änderung musst du aber in einem Makro durchführen, das du beim Datensatzwechsel in dem Formular, wo der Ort eingetragen wird, anstößt; dort musst du die Variable id_ort (deshalb kleingeschrieben) ermitteln und damit das SQL zusammenbasteln.
Ich weiß nicht, ob Makros für dich möglich sind, aber ich denke, etwas in der Art ist da der einzige Weg. (Es sei denn, Robert kommt noch mit einem tollen Trick.)
Du könntest aber auch einen anderen Weg gehen, wenn Makros nicht in Frage kommen:
Zum Erfassen von Veranstaltungen verwendest du ein Formulardokument, das folgende Formularstruktur hat:
Ort
+- Raum
  +-Veranstaltung
Zur späteren Übersicht über Veranstaltungen verwendest du ein anderes Formulardokument, das ungefähr so aussehen dürfte wie deine jetzige Vorstellung.
Der Vorteil ist, dass beim ersten Formulardokument LibO die Verknüpfung der Tabellen machen kann und du kein Makro brauchst. Nachteil ist, dass du zwei Formulare hast, aber es hängt sehr von der Arbeitsweise ab, ob das wirklich ein Nachteil ist oder nur Gewöhnungssache.
Ich habe das jetzt nicht konkret getestet, aber bin mir ziemlich sicher, dass das so funktioniert.

Gruß

Gerhard

Hallo Gerhard,

Hallo Thomas,

ich nehme an, die "Grundtabelle" soll die Veranstaltungen aufnehmen.
Ich wüsste bei deiner Vorstellung mit Listenfeldern nur den Weg, das
Listenfeld für die Räume abhängig vom gewählten Ort anzupassen, das
kann geschehen, indem die Datenquelle als SQL deklariert ist und das
SQL-Stament geändert wird (SELECT Raum, ID_Raum FROM Räume WHERE
ID_Ort = id_ort). Diese Änderung musst du aber in einem Makro
durchführen, das du beim Datensatzwechsel in dem Formular, wo der Ort
eingetragen wird, anstößt; dort musst du die Variable id_ort (deshalb
kleingeschrieben) ermitteln und damit das SQL zusammenbasteln.

Mit so einem SQL hatte ich es probiert, aber halt nicht im Makro. Damit
habe ich keine Erfahrung.

Ich weiß nicht, ob Makros für dich möglich sind, aber ich denke, etwas
in der Art ist da der einzige Weg. (Es sei denn, Robert kommt noch mit
einem tollen Trick.)

Mal sehen.

Danke und viele Grüße

Thomas

Hallo Thomas, Hallo Gerhard,

die Struktur ohne Makros läuft nur über Hauptformular - Unterformular -
UnterUnterformular. Ohne Listenfelder wären im Hauptformular und im
Unterformular nur Tabellenkontrollfelder, die die beschriebenen Orte und
Räume enthielten. Deren eingestellter Inhalt wird dann in das
Unter-Unterformular übernommen.

Diese Tabellenkontrollfelder brauchen ja keine Neueingabe von Daten zu
enthalten, da vermutlich die Räume bereits feststehen. Sonst gäbe es ja
auch mit Listenfeldern Probleme.

Dann ist noch die Möglichkeit, das Hauptformular als Filterformular mit
einem Listenfeld zu versehen. Ohne Makro braucht es hier aber schon
einen Button zusätzlich, der dann dafür sorgt, dass der Inhalt
weitergegeben wird.

Im Handbuch steht im Kapitel "Makros" bei den Eigenschaften für
Listenfelder dieses Makro:

Hallo Robert,
vielen Dank für die Hinweise.

Hallo Thomas, Hallo Gerhard,

die Struktur ohne Makros läuft nur über Hauptformular - Unterformular -
UnterUnterformular. Ohne Listenfelder wären im Hauptformular und im
Unterformular nur Tabellenkontrollfelder, die die beschriebenen Orte und
Räume enthielten. Deren eingestellter Inhalt wird dann in das
Unter-Unterformular übernommen.

Diese Tabellenkontrollfelder brauchen ja keine Neueingabe von Daten zu
enthalten, da vermutlich die Räume bereits feststehen. Sonst gäbe es ja
auch mit Listenfeldern Probleme.

Ja, Orte und Räume sind schon in separaten Tabellen vorhanden. Die
Ortseingabe funktioniert und es geht um die Raumeingabe, wobei eben nur
die passenden Räume angeboten werden sollen. Ich denke, mit Unter- und
UnterUnterformular könnte es gehen und werde das zuerst probieren.

Danke

Thomas

Hallo Thomas,

wenn ich das richtig unterpretiere, schlägt Robert das gleiche vor wie ich.

Viel Erfolg, und frage ruhig nach

Gerhard