0

Dynamischer Filter in Drucklayout

Liebe NINOX-Gemeinde,

kann man eigentlich in einem Drucklayout (das gleich gilt prinzipiell ja auch für eine Ansicht) einen dynamischen Filter setzten?

Mein Beispiel: >=year(date())-3 (wenn ich dies jedoch eingebe, zeigt mir NINOX einen Fehler an "value expected at year(date())-3"

Dies würde es z.B. ermöglichen bei einer Statistik immer nur eine Anzeige der letzten 3-Jahre vorzunehmen; alternativ dazu könnnte man in einem Kopie-Drucklayout für eine 5-Jahresstatistik >=year(date())-5 eingeben (3 bzw. 5-Jahrestatistiken sind z.B. üblich im Versicherungswesen).

Derzeit muß der Filter stets erst im Drucklayout selbst manuell eingetragen werden: >=2016 (für eine Statistik von 2016-2019) usw. Die Werte müssen aber immer wieder manuell angepasst werden!

Alternativ wäre es ebenso schön, wenn man Filter direkt per Befehlsschaltfläche und Skript aus der Tabelle an ein bestimmte (zu definierendes) Feld im Drucklayout übergeben könnte. Dies würde die Anwendungsgestaltung für den "NUR"-User mit beschränkten EDV-Kenntnissen einfacher machen. 

Gruß

Manfred

9 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred,

    es ist tatsächlich möglich dynamische Filter einzusetzen. Ist aber ein bisschen tricky:

    1. Wähle  in deinem Layout deine Tabele und geh auf "anzuzeigende Spalten festlegen"

    2. Klicke auf das Feld Datum und dann auf Funktion 

    3.Schreibe folgende Formel darein:

    ---

    if year(Datum) > year(today()) - 3 then
    Datum
    else
    date(1970, 1, 1)
    end

    ---

    4. Normalerweise übernimmt Ninox die Formel auch für Tabellenname, den Namen kannst du wieder in Datum umbwenennen

    5. In Filter schreibst du beim Von: 02.01.1970. Das Feld Bis bleibt leer

    Das wars.

    Für 5-Jahresstatistik musst du in der Formel 3 durch 5 ersetzen.

    Leo

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    vielen Dank für Deinen erneuten Tipp. Da muss man erstmal drauf kommen! Was wäre die Ninox-Community ohne Dich :-)

    Beste Grüße und einen schönen Sonntag

    Manfred

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    klappt das auch, wenn man statt eines Datums nur die Jahreszahlen (z.B. 2015,2016,2017,usw) in der Tabelle Statistik hat?

    Wenn ich versuche, deine Formel zu modifizieren: 

    if Jahr > year(today()) - 3 then
    Jahr
    else
    year(date(1970, 1, 1))
    end

    und als Filter 1970 oder year(date(1970,1,1))

    eingebe, passiert nichts, d.h. es werden keine Jahre mit den entsprechenden Werten angezeigt?

    Geht dies nur mit Jahren? Wenn ja, was mache ich (wieder einmal mehr falsch)?

    Gruß

    Manfred

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred,

    das Jahrfeld ist ein Zahlenfeld, in diesem Fall:

    ---

    if Jahr > year(today()) - 3 then
    Jahr
    else
    1
    end

    ---

    und als Filter

    ---

    >1

    ---

    Leo

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke Leo und besten Gruß

    Manfred

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Bild noch mal als JPG

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ich würde bei Zusatzfelder so versuchen:

     

    Prämiensumme - Funktion:sum(Statistik[Jahr > year(today()) - 3].'Prämie')
    Gesamtreserve - Funktion:sum(Statistik[Jahr > year(today()) - 3].Reserve)
    SB-Gesamt - Funktion:sum(Statistik[Jahr > year(today()) - 3].SB)
    Gesamtnetto - Funktion:sum(Statistik[Jahr > year(today()) - 3].'Schd.-Netto')

     

    Leo

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    prima, so funktioniert es, wie ich es mir wünsche. Danke nochmals.

    Besten Gruß

    Manfred

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    March 2, 09:08 PM gehört zum Bild der Statistik!

    Hallo Leo,
    so funktioniert es mit der Anzeige wie gewünscht. Super.
    Nun habe ich allerdings ein aderes Problem, das ich zuvor nicht bedacht hatte. Du wirst gfs. erinnern (leztes Webinar), dass ich mit Birgers Hilfe eine neue (manuelle) Gesamtsumenzeile für meiner Statistik kreiert habe.
    D.h., die Grunddformel für die Erstellung einer Statistik lautet (in der Tabelle Vertrag):
    let my := this;
    delete (select Statistik);
    for i in DEKLARATION_TRANSPORT do
    let a := (create Statistik);
    a.(Jahr := i.Versicherungsjahr);
    a.(Vertrag := i.Vertrag.Vertragsnummer);
    a.('Prämie' := i.Netto_gesamt);
    a.(Vertrag2 := my)
    end;
    for i in SCHADEN do
    let b := (create Statistik);
    b.(Jahr := i.year(Schadentag));
    b.(Vertrag := i.Vertrag.Vertragsnummer);
    b.(Reserve := i.'Reserve €');
    b.('Schd.-Brutto' := i.'Gesamt brutto €');
    b.(SB := i.'SB €');
    b.('Schd.-Netto' := i.'Gesamt netto €');
    b.(Vertrag2 := my)
    end;
    Damit wird die (Hilfs)-Tabelle Statistik kreiert. Mit Deiner Hilfe (b.(Vertrag2:=my) konnte ich die Statistik in der Tabelle Vertrag anzeigen (um von dort aus das Drucklayout anzusteuern). Um die Gesamtsummeziele und insb. die bei den Quoten zu ermitteln, habe ich jeweils in der Tabelle Statistik die Hilfsfelder:
    Prämiensumme - Funktion:sum(Statistik.'Prämie')
    Gesamtreserve - Funktion:sum(Statistik.Reserve)
    SB-Gesamt - Funktion:sum(Statistik.SB)
    Gesamtnetto - Funktion:sum(Statistik.'Schd.-Netto')
    sowie die berechnenden Funktionsfelder:
    'Netto Quote %' - Funktion:round((Gesamtnetto * 100) / 'Prämiensumme', 2) und
    'Brutto Quote %' - Funktion:round((Gesamtreserve + Gesamtnetto) * 100 / 'Prämiensumme', 2)
    angelegt.
    Dies funktionierte soweit ja auch prima. Allerdings: Wenn die Tabellen Deklaration und Schäden Werte aus 3,5,5, und/oder mehr Jahren enthalten, werden die Ergebnisse in der unteren Summenzeile der Tabelle (über die vorgenannten Felder) ja stets mit den Summen aller Jahre gefüllt. Mit anderen Worten, die Darstellung von 3 bzw. 5 Jahren mittels Deiner Formel klappt zwar nun, die Summenzeile beinhaltet aber die Ergebnisse aller Jahre (je nachdem, wievile Jahre in den Tabellen Deklaration und Schaden erfast sind zusammen. Damit stimmt die Summenzeile dann nciht mehr mit meiner 3- bzw. 5-Jahresanzeige.
    Gibt es nun einen Weg, auch die Summenzeile analog (d.h dynamisch) auf drei oder fünf Jahre zu beschränken?
    Ganz schön fummelig.......
    Gruß
    Manfred

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 9Antworten
  • 2574Ansichten