0

Dynamisches Auswahlfeld: Auswahl des Datensatzes anhand einer if else definition aus einem anderen Feld

Hallo liebes Forum, 

wieder mal eine Frage zu den dynamischen Auswahlfeldern, die mir noch etwas schleierhaft sind: 
Ich habe ein Nummerfeld JAHR und ein dynamisches Auswahlfeld ZEITRAUM, das mit einer Tabelle ZEITRAUM (DYN) verknüpft ist. Nun möchte ich, dass wenn in dem Nummernfeld z.B. die Jahreszahl 1740 eigegeben wird, im Auswahlfeld ZEITRAUM automatisch der entsprechende Datensatz aus der dazugehörigen Tabelle mit dem Inhalt "1700-1750" (bei mir Datensatznummer 9) ausgewählt wird. Aber ich schaffe es nicht, diesen Datensatz anzusprechen und das dynamische Auswahlfeld automatisch auf diesen Datensatz zu setzen, so dass dieser im Feld ausgewählt ist. 

Hat jemand eine Idee dazu? Wäre super!
Viele Grüße 

11 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo af,

    ---

    let me:=this;

    let myNum:=first(select('ZEITRAUM (DYN)'[number(first(split(ZEITRAUMFELD,"-")))<me.JAHR and number(last(split(ZEITRAUMFELD,"-")))>me.JAHR]).number(Nr);

    me.ZEITRAUM:=myNum

    ---

    Leo

    • neon_carriage
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, 

    ganz lieben Dank für die schnelle Antwort. Ich befürchte aber, das ist nicht ganz das, was ich brauche. Anbei ein Foto meiner Tabelle "Zeitraum (dyn)". Aus dieser soll in meinem Beispiel das dynamische Auswahlfeld in meiner Haupttabelle DB den Eintrag Nr. 9 Auswählen, damit das ganze dann wie auf dem zweiten Bild aussieht (das grün markierte Feld ist das dynamische Auswahlfeld). 
    Viele Grüße

    Aurelio

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Aurelio,

    Die Formel macht genau das, was du möchtest. Man splittert den Text 1700-1799 auf zwei Zahlen und vergleich dann. Wird den Datensatz gefunden, wird die Nummer (9) genommen und damit das Auswahlfld gesteuert.

    Allerdigs wird es ein Problem geben mit Felder unbekannt und vor 1700. Hier muss man zusätzlich etwas schreiben.

    • neon_carriage
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke für die Erklärung! Verstehe, allerdings gibt er bei mir eine Fehlermeldung aus: ID erwartet in Zeile 2, Spalte 24. 
    Das wäre dann die Auswahl der Tabelle. Der Name ist aber korrekt. 

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Was ist die Spalte Wert bei dir? Text oder ein Auswahlfeld?

    • neon_carriage
    • vor 3 Jahren
    • Gemeldet - anzeigen

    das ist ein einfaches Textfeld

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Lass testweise mal die öffnende Klammer nach dem "select" weg. Also: "let myNum:=first(select 'ZEITRAUM ..."

    • neon_carriage
    • vor 3 Jahren
    • Gemeldet - anzeigen

    super, danke für den Hinweis, das klappt. 
    Probelme gibt es aber noch, wie Leo schon sagte, bei den Feldern mit Text (also: vor 1700, oder 2000-heute). Da kommt es zu keiner Auswahl. 

    • neon_carriage
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Habe probiert die beiden Probleme mit dem Text im Wert-Feld zu lösen und dachte, man könnte es mit < 1700 bzw. dann noch >=2000 lösen, aber so wie ich es geschrieben habe, klappt es nicht. 

    let me := this;
    let myNum := first((select 'Zeitraum (dyn)')[number(first(split(Wert, "-"))) <= me.Jahr and number(last(split(Wert, "-"))) >= me.Jahr]).number(Nr);
    if number(Jahr) < 1700 then
    select 'Zeitraum (dyn)' where number(Nr) = 8
    else
    me.(Zeitraum := myNum)
    end

     

    Hat jemand noch eine Idee?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Aurelio,

    ---

    let me := this;
    let myNum := if me.Jahr<1700 then 8 else if me.Jahr>=2000 then 2 else 
    first((select 'Zeitraum (dyn)')[number(first(split(Wert, "-"))) <= me.Jahr and number(last(split(Wert, "-"))) >= me.Jahr]).number(Nr)
    end
    end;
    me.ZEITRAUM:=myNum

    ---

    Leo

    • neon_carriage
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    absolut genial! Funktioniert einwandfrei! Ganz herzlichen Dank für die Hilfe!!

    Viele Grüße

    Aurelio