0

Verknüpfung

Hallo Zusammen,

Ich arbeite mit der Desktop Version und möchte wie in der Beilage dargestellt, je zwei Felder in verschiedenen Tabellen verknüpfen. Die Funktion höchster Wert resp. niedrigster Wert funktioniert leider nicht. Für Unterstützung bin ich super dankbar.  Beste Grüsse Jean-Luc

17 Antworten

null
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Jean-Luc,

    wenn ich dein Szenario richtig verstehe benötigst Du in Tabelle1 zwei neue FX-Felder (auch Funktion genannt).
    Für das 1. FX-Feld (FX-Datum-Stichtag) (Übernahme des letzten Datums) kann dieses Skript funktionieren:
    (Ich habe hier angenommen, dass das Feld Fassnummer in beiden Tabellen ein Zahlenwert ist! Ob das Verknüpfungen sind geht aus deinem PDF leider nicht hervor.)

    "FX-Datum-Stichtag muss dieses Feld heißen!";
    let me := this;
    let DF := (select Tabelle2 where me.Fassnummer = Fassnummer);
    date(max(DF.'Datum Stichtag'))
    

    Für das 2. FX-Feld (FX-Datum-Anfang) kann dieses Skript funktionieren:
    (Auch hier habe ich angenommen, dass das Feld Fassnummer in beiden Tabellen ein Zahlenwert ist!):

    "FX-Datum-Anfang muss dieses Feld heißen!";
    let me := this;
    let DF := (select Tabelle2 where me.Fassnummer = Fassnummer and 'Datum Stichtag' = me.'FX-Datum-Stichtag');
    date(DF.'Datum Anfang')
    

     

    Viel Erfolg
    Ronald

    • sage_celery
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Ronald, 

    Danke für Deine prompte Rückmeldung und sorry für meine späte Reaktion. Leider hatte ich Deinen Vorschlag nicht erfolgreich umsetzen können. Ich habe jetzt mal einen Screen Shot angehängt und bin wirklich dankbar, wenn Du mir weiterhelfen kannst...

    Herzliche Grüsse
    Jean-Luc 

      • Benjamin_Kunzmann_pr
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Jean-Luc  vielleicht kann ich dir helfen:

      Der Code im Formelfeld für den letzten Stichtag muss lauten: 

      max('Content Tracking'.'Stichtag')

      Und der für Fasslagerung seit:

      min('Content Tracking'.'Jg. jüngst')

      Ich gehe davon aus dass die beiden Felder 'Stichtag' und 'Jg. jüngst' normale Datumsfelder sind. Siehe Screenshot im Anhang.

      LG

      Benjamin

      • sage_celery
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Benjamin Kunzmann (pr) Hallo Benjamin, danke für Deine Rückmeldung. Die Funktion höchster Wert resp. niedrigster Wert funktioniert leider nicht (scheint bei Desktop Version ein bekanntes Problem zu sein)

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

    Hallo, ich werfe meinen Hut auch mal in den Ring:

    let myF := Fassnummer;
    let myRec := last((select Tabelle2)[Fassnummer = myF] order by 'Datum Stichtag');
    myRec.'Datum Stichtag'
    

    Beziehungsweise

    let myF := Fassnummer;
    let myRec := last((select Tabelle2)[Fassnummer = myF] order by 'Datum Stichtag');
    myRec.'Datum Anfang'
    
    
      • Benjamin_Kunzmann_pr
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro Servus! 🙂

      Frage: wenn du mit last() arbeitest nimmt Ninox aber den zuletzt erzeugten Datensatz richtig? Das würde bedeuten dass ein Restrisiko bleibt dass ‚last()‘ auch gleichzeitig max() ist oder? Trotzdem wäre das ein super Ansatz und eine gute Idee alternativ zu Max den Datensatz zu ermitteln.

      du hast den ‚Order nach Datum()‘ hinzugefügt. Deshalb sucht sich last() aber trotzdem nicht denjenigen Datensatz mit dem letzten Datum weiterhin den zuletzt erzeugten, oder hab ich das bisher falsch verstanden?

      anmerkung noch: du musst nicht unbedingt die select Anweisung nehmen, kannst auch mit last(Untertabelle) direkt in die Untertabelle reingreifen. Bessere Datenbank Performance.. 🙂👍

      LG Benjamin

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

      Benjamin Kunzmann (pr) 

      Moin, mit last() bekommt man immer den letzten Datensatz der sortierten Reihenfolge. Standardmäßig ist das die Record-Nr (alphanumerisch). Man kann per "order by" aber auch ein anderes Datenfeld angeben, nach dem (aufsteigend) sortiert werden soll. Dann ist der letzte Datensatz der mit dem höchsten Wert, also in diesem Fall der mit dem höchsten Datum.

      Aus deiner Aufgabenstellung ging leider nicht eindeutig hervor, ob auch die Tabellen miteinander verknüpft sind. Deshalb mit "select", denn so funktioniert es immer, ob verknüpft oder nicht. Das gilt in ähnlicher Weise auch für die eckigen Klammern. Es ging also darum, ein Codebeispiel zu geben, das mit großer Wahrscheinlichkeit funktioniert.
       

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin zusammen,

    min() und max() funktionieren ernsthaft nicht in der Mac-APP?!  😮
    Ich arbeite bisher nur in der Cloud, daher ist mir das noch nicht aufgefallen und bei so Basic-Funktionen hätte ich dass nicht für möglich gehalten...

    Schönen Start in die Woche
    Ronald
     

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

      DIGITOOL 

      Moin Ronald, doch, meines Wissens funktionieren min() und max() auch in der Mac-App. Man könnte den höchsten Wert also auch so ermitteln:

      let myF := Fassnummer;
      max((select Tabelle2)[Fassnummer = myF].'Datum Stichtag')
      

      Da es bei dem zweiten Wert aber darum ging, den dazugehörigen auszulesen, war es einfacher, die Record-Nr. zu ermitteln und dieses Verfahren für beide Werte anzuwenden.
       

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen
      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      DIGITOOL 

      Schreck in der Morgenstunde ... ;)

      Das wäre in der Tat fatal, wenn min() und max() in der App nicht funktionieren würden. Tun sie aber. Hab's vorsichtshalber gerade noch mal ausprobiert. Woher die falsche Annahme kommt, weiß ich nicht. Vermutlich hat beim Zitierten mal irgendwas in einer bestimmten Konstellation nicht funktioniert - und sich dann als vermeintliches Wissen manifestiert, dass es generell nicht ginge. Ist ja oft so. 

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Da das Thema Performance immer häufiger zu Sprache kommt, nehme ich Planox's Hut mal auf und erlaube mir das in ein FX-Feld zusammen zu fassen:
    (macht aber nur Sinn, wenn Du diese Information so nur an dieser Stelle verwendest)

    let myF := Fassnummer;
    let myRec := last((select Tabelle2)[Fassnummer = myF] order by 'Datum Stichtag'));
    "Datum Stichtag: " + myRec.'Datum Stichtag' + "/ Datum Anfang: " + myRec.'Datum Anfang'

    Damit sollte sich meiner Ansicht nach der Performancebedarf halbieren?!
     

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

      DIGITOOL Hut steht dir gut. ;)

      Stimmt, das wäre natürlich effizienter, sofern man nicht mehr gezielt auf die Einzelwerte zugreifen muss. Ich hatte mich halt an der Aufgabenstellung orientiert, soweit sie erkennbar war.

      Aber wenn wir schon beim Optimieren sind: Noch effizienter wäre, man würde statt der Funktionsfelder Datenfelder erstellen und diese bspw. mit einem Änderungstrigger in Tabelle2.'Datum Stichtag' befüllen. Dann müsste gar nichts mehr dynamisch berechnet werden. Aber dazu müsste man natürlich mehr über den Workflow und das Datenmodell wissen.
       

    • sage_celery
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guys, vielen Dank für Eure Unterstützung! Letztendlich habe ich es nochmal ganz einfach mit Max und Min probiert. Und es hat geklappt.... 🤪

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

      Jean-Luc Wie denn genau? Denn die eingangs beschriebene Aufgabenstellung lässt sich m. E. mit max() allein nicht lösen, mit min() schon gar nicht.
       

      • sage_celery
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro Stimmt, mir ist eben gerade wieder bewusst geworden, wieso ich es am Stichtag aufhängen muss… 

      • sage_celery
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Klappt doch nicht, muss an Stichtag geknüpft sein…