0

Unterschied zwischen first und min

Hallo, ich möchte mir das kleinste Datum in einer Berechnung, unter der Bedingung Auswahlfeld1 = "J" und Schlüsselfeld = Schlüssel des übergeordneten Datensatzes,  ausgeben.

let x := this;
first((select Kontrolle)[text('Auswahlfeld1') = "J" and x.'Schlüsselfeld' = Nest.'Schlüsselfeld']).Datum

Im Ergebnis erhalte ich das Datum des ersten Datensatzes. Ändere ich die Formel in 

let x := this;
min((select Kontrolle)[text('Auswahlfeld1') = "J" and x.'Schlüsselfeld' = Nest.'Schlüsselfeld']).Datum

bleibt das Berechnungsfeld leer.

 

Was  mache ich falsch?

12 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Detlef,

    let x := this;
    min((select Kontrolle)[text('Auswahlfeld1') = "J" and x.'Schlüsselfeld' = Nest.'Schlüsselfeld'].Datum)

    Leo

    • Detlef
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    danke das wars! Jetzt funktioniert es perfekt :-)

    Detlef 

    • Stephan_Haumann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Zusammen,
    ich möchte es etwas anders machen. Meine Formel bisher:
    first(date('Verknüpfte Einheiten'.Termin)) + " " + "-" + " " + last(date('Verknüpfte Einheiten'.Termin))
    Ich habe mit der Verknüpfung "Verknüpfte Einheiten" die Tabelle "Trainingseinheiten" verknüpft wo Trainingseinheiten angelegt sind. In "Verknüpfte Einheiten" habe ich nun verschiedene Einheiten und ich möchte mir in der Formal die erste und die letzte anzeigen lassen. Die Formel wie oben mit min() und max() sowie dem select() habe ich auch schon probiert - leider ohne Erfolg: es lieferte hier nur leere Felder. Was kann ich tun?

    • Stefan_Munsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Es braucht den select-Befehl und min/max sind auch gut. Etwa so könnte es passen:

    let i:=(select 'Verknüpfte Einheiten').Termin;
    let myErste:=min(i);
    let myLetzte:=max(i);
    text(myErste)+" - "+text(myLetzte)

    oder mit sort() den Array nach Termin sortieren und dann mit first/last die gewünschten Datensätze anzeigen, falls du noch mehr Infos als den Termin anzeigen willst

    Gruss, Stefan

    • Stephan_Haumann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    danke Dir. Funktioniert leider nicht. Mir wird ausgegeben, dass "Verknüpfte Einheiten" nicht gefunden wird in Zeile 1. Das ist ja auch die Verknüpfte Tabelle (1:N) in der Tabelle in der ich mich befinde. Habe es dann so versucht:

    let me := this;
    let i := (select Trainingseinheiten)[Sichtungstitel = me.'Titel der Sichtung'].Termin;
    let myErste := min(i);
    let myLetzte := max(i);
    text(myErste) + " - " + text(myLetzte)

    Klappt aber auch nicht. Habe im let:=i auch schon die Klammern wild vertauscht, klappt aber auch nichts.

    Lustig ist, dass er mir mit concat() alle Termine anzeigt. Mit concat(date()) sogar so, wie ich es haben möchte. Aber eben alle Termine und nicht nur den jüngsten bzw. ältesten... Ich bin ratlos...

    • Stefan_Munsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ok, habe das Datenmodell wohl falsch verstanden. Wenn concat() geht, dann müsste aber auch min bzw. max(select 'Verknüpfte Einheiten'.Termin)?

    • Stephan_Haumann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Nein, weil Ninox "Verknüpfte Einheiten" nicht findet - wahrscheinlich weil es ja die Verknüpfung ist. Aber auch wenn ich den "Originalpfad" angebe, bleibt das Funktionsfeld leer:

    let me := this;
    max((select Trainingseinheiten)[Sichtungstitel = me.'Titel der Sichtung'].Termin)

    🤷🏼‍♂️

    • Stephan_Haumann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    übrigens: auch so bleibt es leer:

    max((select Trainingseinheiten)[Sichtungstitel = me.'Titel der Sichtung']).Termin

    😱😱😱

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Stephan,

    Termin ist kein einfaches Datenfeld und besteht aus start- und endod- Zeitsctempeln. Versuch es so:

    ---

    let myErste := min('Verknüpfte Einheiten'.start(Termin));
    let myLetzte := max('Verknüpfte Einheiten'.start(Termin));
    first('Verknüpfte Einheiten'[start(Termin) = myErste]).Termin + " - " + first('Verknüpfte Einheiten'[start(Termin) = myErste]).Termin

    ---

    Leo

    • Stephan_Haumann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,
    danke Dir, so klappt es. Zusätzliche Frage: Ich bin nun gerade (mit Hilfe) auf diese Formel gekommen. Bewirkt die das gleiche? Nur zum Verständnis...

    first(('Verknüpfte Einheiten' order by Termin).date(Termin));

    LG

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Stephan,

    ja so kann man auch machen. date(Termin) gibt aber ein Datum zurück. Hast du nur einen Termin pro Tag?

    Leo

    • Stephan_Haumann
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Am Ende weiß ich das noch nicht und es könnten schon mehrere Termine sein...

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 12Antworten
  • 2180Ansichten