Zeige nur Bundesländer für das entsprechende Land an
Hallo liebes Forum
als Anfänger mit NINOX stehe ich leider vor einem Problem, bei dem ich nicht weiter komme. Es geht darum, dass ein 2. Auswhlfeld nur Werte anzeigen soll, welche durch ein 1. Auswahlfeld eingeschränkt werden.
Hintergrund:
- Ich verwalte meine GPX Tracks (nach Namen etc) in Ninox
- Teil des Dateinamens ist auch das Land und das Bundesland, in dem der Track gefahren wird.
- Dies soll per Auswahlfeld erfolgen. 1) Land auswählen => 2) Bundesland auswählen
- Bsp: in Deutschland möchte ich nur Bayern und Hessen, in Italien nur Venezien oder die Lombardei angezeigt bekommen
Zusammengefasst:
- Ich möchte nur die Bundesländer angezeigt bekommen, die zu einem Land passen.
Was habe ich bisher gemacht?
1)) Tabellen angelegt
- Eine Tabelle "T_Länder" für die Länder (Bild: siehe unten). Dazu 2 Spalten mit dem Langnamen (Deutschland) und der ID (D)
- Eine Tabelle "T_Regionen" für die Bundesländer (Bild: siehe unten). Dazu 2 Spalten mit dem Langnamen (Bayern) und der ID (BY)
2)) Nun wollte ich über ein dynamisches Auswahlfeld diese Eingrenzung hinbekommen.
- Dazu habe ich ein Dynamisches Feld eingefügt.
- In dem Feld "Auswahl (dynamisch)" habe ich dann unter "Dynamic Values" eingegeben:
select T_Regionen
- Nun werden alle Region_ID angezeigt.
Wo komme ich nicht mehr weiter?
- Ich schaffe es nicht, die Auswahl einzugrenzen, wenn ich vorher im Länderfeld das land ausgewählt habe.
- D.h. wenn ich Deutschland auswähle, bekomme ich dennoch zB Tirol mit angezeigt.
- Über eine Anweisung in dem Feld "select … where …" bin ich nicht weiter gekommen, da wohl jedesmal die Tabelle fehlt. Tippfehler ausgeschlossen.
Ich wäre Euch dankbar, wenn ihr mir einen Tipp geben würdet, da ich weder im englisch- noch deutschsprachigen Forum etwas gefunden habe. Über die Help-Seite von Ninox habe ich auch keine Lösung für mich finden können.
Herzlichen Dank vorab.
Viele Grüße, Hans
Anhänge
A) Bild Tabellen
B) Bild Tabelle Regionen
C) Bild Tabelle Länder
D) Bild Länder und Bundeslandauswahl
4 Antworten
-
Sieht alles erstmal gut und richtig aus .... Aber: Woher soll Ninox denn wissen, welches Bundesland zu welchem Land gehört? Du must also zunächst in der Tabelle Bundesland eine Verknüpfung auf Länder machen und so erstmal jedem Bundesland die Verknüpfung auf das Land mitgeben. Also händisch erstmal alle Bundesländer einem Land zuordnen.
Dann funktioniert auch ein select where, weil es dann auch ein "where" gibt, nämlich
let me := this;
select T_Regionen where 'T_Länder' = me.'T_Länder'
Dazu muss man folgendes wissen: wenn du aus irgendeinem Datensatz heraus über "select" in eine andere Tabelle springst, dann kannst du danach nicht mehr ohne weiteres auf die Datenfelder dieses aufrufenden Datensatzes zugreifen. Nach "select" befindet sich Ninox quasi "gedanklich" schon in der selektierten Tabelle. Du musst also vorher den "quelldatensatz" entweder über so etwas wie
let me := this; definieren und kannst dann (wie im obigen Beispiel) über me.'T_Länder' auf die Verknüpfung zugreifen, oder du legst Dir die benötigten Daten aus dem Quelldatensatz vorher in eine Variable, z.B:
let myLand := 'T_Länder'
select T_Regionen where 'T_Länder' = myLand
myLand beinhaltet dann die Datensatz-ID des gewählten Datensatzes aus 'T_Länder' und "select" kann dann alle Datensätze aus T_Regionen wählen, wo 'T_Länder' auch diese ID hat...
-
Danke soweit, dass habe ich verstanden. Nun muss ich erst einmal mein Durcheinander aufräumen, da ich die Tabellen umbenannt habe (wollte es "schöner" haben):
- [T_Länder] wurde zu [Land] und
- [T_Regionen] wurde zu [Region]
Nun haben sich aber in den Formeln etc. die Namen nicht angepasst und ich bekomme Fehler angezeigt.
Nach ersten Erkenntnissen muß ich zB in den Formeln neue Referenzen erstellen, da nun Fehler aufkommen und an manchen Stellen, an denen vorher T_Länder oder T_Regionen in der Formel stand, nun so Sachen wie " UA.A" steht …
Da staunt der Laie, wenn in der Datenbank nicht an "jeder Stelle" die Namen angepasst werden.
Nochmals Danke, dass werde ich dann auf jeden Fall umsetzen und mich nochmal melden.
Nachtrag:
1) Es sind nicht alle Tabellen betroffen. Ich habe eine Tabelle "T_Reisen" in "Reisen" umbenannt, da hat alles funktioniert. D.h. es stehen in den Formeln noch die alten Namen, aber wenn ich eine Reise umbenenne oder eine hinzufüge, dann ist das alles sichtbar.
2) Ich überlege, ob wohl das iPhone und das iPad mir durch den iCloud-Sync in die "Suppe gespuckt" haben. Beide Geräte hatten offene Datenbanken.
-
Prinzipiell wird eine Namensänderung erkannt und automatisch in Formeln überall vollzogen. Das gilt für Felder als auch für Tabellen.
Allerdings kann es vorkommen, dass man zb. eine Verknüpfung auf die Tabelle "T_Länder" angelegt hat, und vielleicht eine Formel in einem Datensatz auf dieses Verknüpfungsfeld verweist. Benennt man nun diese Tabelle um in 'Länder', bleibt der Name der angelegten Verknüpfung "T_Länder" - da man Verknüpfungen nämlich benennen kann, z.B. möchte man die Tabelle "Mitarbeiter" in einem Datensatz gerne "Ausführender MA" nennen... Geht man in den Bearbeitungsmodus dieser Verknüpfung steht dann oben "Beziehung 1:N von .. zu T_Länder"
-
Lange hat meine Antwort gedauert, aber ich habe es nun schon funktionsfähig umgesetzt. Sicherlich nicht mit der "Besten" Möglichkeit, jedoch mit einer, die funktioniert.
Nachfolgend die "Schnellversion", der ich aber ein kleines PDF als Anhang beigefügt habe. Dieses PDF enthält alle Informationen zur Umsetzung, inkl. Formeln etc.
## Umsetzung
### Erdteil - Startpunkt
Das erste Pulldown-Feld besteht aus einer "**N:1**" Beziehung zu der Tabelle Erdteil_(Co), um den Erteil auszuwählen.
### Land auswählen
Nachdem der Erdteil ausgewählt wurde, erfolgt die Auswahl eines entsprechenden Landes.
1- Es wird ein `dynamisches Auswahlfeld` eingefügt.
2- Dem Feldnamen gebe ich den Namen `Land__(C)` (Achtung: 2 Unterstriche)
3- Im Bereich `Dynamische Werte` wird folgende Formel eingegeben:let me := this;select 'Land_(C)' where 'Erdteil_(Co)' = me.'Erdteil__(Co)'
4- Als Name des `dynamischen Wertes` wird `Land_ID_(C)` eingegeben, der Name der Spalte der Tabelle mit den Ländern.
### Region auswählen
Nachdem das Land ausgewählt wurde, werden nun in der Region nur noch die Regionen, genauer gesagt Bundesländer angezeigt, die dem Land zugeordnet wurden.
Hier wurde genauso wie bei dem dynamischen Auswahlfeld Land vorgegangen.
1- Es wird ein `dynamisches Auswahlfeld` eingefügt.
2- Dem Feldnamen gebe ich den Namen `Region__(C)` (Achtung: 2 Unterstriche)
3- Im Bereich `Dynamische Werte` wird folgende Formel eingegeben:let me := this;select 'Region_(S)' where 'Land_(C)' = me.'Land__(C)'
4- Als Name des `dynamischen Wertes` wird `Region_ID_(C)` eingegeben, der Name der Spalte der Tabelle mit den Ländern.
## Tabellen dazu
Hier noch die Tabellen für die Auswahl später für die Routen und Tracks.
### Tabelle Erdteil_(Co)
In der Tabelle Erdteil (habe ich mal eingefügt, sofern ich doch mal eine Tour außerhalb von Europa mache ;-))
Hier ist immer die Langbezeichnung und die Kurzbezeichnung (die ID) hinterlegt.
### Tabelle Land_(C)
Hier ist immer die Langbezeichnung und die Kurzbezeichnung (die ID) hinterlegt.
### Tabelle Regionen_(C)
Hier ist immer die Langbezeichnung und die Kurzbezeichnung (die ID) hinterlegt. Bitte beachten: Die Kürzel sind nach "Gusto" benannt und entsprechen nicht den länderspezifischen Vorgaben.
## Abschließende Hinweise
Zukünftig möchte ich noch über die entsprechenden Tabellen auch direkte Routen aussuchen können, was aber kein primäres Anliegen von meiner Seite ist.
Content aside
- vor 4 MonatenZuletzt aktiv
- 4Antworten
- 123Ansichten
-
2
Folge bereits