0

Automatisierung

Hallo Zusammen, ich habe eine Tabelle "XY", eine weitere Tabelle "Jahr" und darunter eine Untertabelle "Monat". Wenn nun das Datum geändert wird, soll Ninox den Datensatz "Jahr" und den Datensatz "Monat" automatisch nach ausgewähltem Datum verknüpfen. Wie kann ich das realisieren? :)

7 Antworten

null
    • Paul_Krummling
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Bildschirmfoto 2020-07-24 um 18.18.29

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Paul,

    Angenommen das Feld für Jahreszal in der Tabelle Jahr heißt JahrNummer und das Feld für Monatszahl in der Tabelle Monat heißt Monatsnummer ´. Dann wäre die Formel als trigger nach Änderung beimFeld Datum:

    ---

    let me:=this;
    Jahr:=0;
    Monat:=0;
    if Datum then
    if cnt (select Jahr where JahrNummer=year(me.Datum))=0 then 
    let newYear:=create Jahr;
    newYear.JahrNummer:=year(me.Datum)
    end;
    Jahr:=first(select Jahr where JahrNummer=year(me.Datum);
    if cnt(Jahr.Monat[Monatsnummer=month(me.Datum)])=0 then
    let newMonth:=create Monat;
    newMonth.Jahr:=first(select Jahr where JahrNummer=year(me.Datum)
    end;
    Monat:=first(Jahr.Monat[Monatsnummer=month(me.Datum)])
    end

    ---

    Dabei prüft Ninox ob die Datensätze für Jahr und Monat existieren und falls nein, legt diese an. Danach verknüpft er die Datensätze.

    Leo

    • Paul_Krummling
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, vielen Dank für deine wie immer schnelle und kompetente Hilfe :)

    Noch eine Sache: Ich weiß nicht was ich falsch gemacht habe, er sagt mir "Symbol erwartet in Zeile 13 Spalte 3" 

    Hier der komplette Code:

    let me:=this;
    Jahr:=0;
    Monat:=0;
    if Datum then
    if cnt (select Jahre where Jahr=year(me.Datum))=0 then
    let newYear:=create Jahre;
    newYear.Jahr:=year(me.Datum)
    end;
    Jahr:=first(select Jahre where Jahr=year(me.Datum);
    if cnt(Jahr.Monat[Monat=month(me.Datum)])=0 then
    let newMonth:=create Monate;
    newMonth.Jahr:=first(select Jahre where Jahr=year(me.Datum)
    end;
    Monat:=first(Jahr.Monat[Monat=month(me.Datum)])
    end

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Paul,

    eine Klammer am Ende der 13. Zeile fehlte:

    ---

    let me:=this;
    Jahr:=0;
    Monat:=0;
    if Datum then
    if cnt (select Jahre where Jahr=year(me.Datum))=0 then
    let newYear:=create Jahre;
    newYear.Jahr:=year(me.Datum)
    end;
    Jahr:=first(select Jahre where Jahr=year(me.Datum);
    if cnt(Jahr.Monat[Monat=month(me.Datum)])=0 then
    let newMonth:=create Monate;
    newMonth.Jahr:=first(select Jahre where Jahr=year(me.Datum))
    end;
    Monat:=first(Jahr.Monat[Monat=month(me.Datum)])
    end

    ---

    Leo

    • Paul_Krummling
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, :)

    nun sagt er "Symbol erwartet: , in Zeile 15, Spalte 3"

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    let me := this;
    Jahr := 0;
    Monat := 0;
    if Datum then
    if cnt((select Jahre)[Jahr = year(me.Datum)]) = 0 then
    let newYear := (create Jahre);
    newYear.(Jahr := year(me.Datum))
    end;
    me.(Jahr := first((select Jahre)[Jahr = year(me.Datum)]));
    if cnt(Jahr.Monat[Monat = month(me.Datum)]) = 0 then
    let newMonth := (create Monate);
    newMonth.(Monat := month(me.Datum));
    newMonth.(Jahr := me.Jahr)
    end;
    me.(Monat := first(Jahr.Monat[Monat = month(me.Datum)]))
    end

    • Paul_Krummling
    • vor 4 Jahren
    • Gemeldet - anzeigen

    SUPER! :) herzlichen Dank