0

Anregung für Anwendungsliste STATISTIK

Mit Birger's Hilfe im Webinar vom 20.02. konnte ich mittels Button eine Tabelle "Statistik" summiert nach Jahren mit Werten aus unterschiedlichen Tabellen füllen.

Mit Leo's Hilfe konnte ich dann (Dank dafür an Beide) auch zwei Funktonsspalten bilden, in denen zu jedem Jahr eine Schadenquote (brutto und netto) ermittelt wurde. 

Ein Problem bleibt. Es stehen zwar für die Spalten Optioen, wie Erster, Letzter, Minimum, Maximum, Durchschnitt etc. zur Vergügung, für die Summenzeile ergeben jedoch alle Optionen im Falle der Quoten-Spalten völlig falsche Prozent-Werte. 

Da aber eine "vollständige" Statistik auch die Querschnitts-Quote für alle Jahre summiert anzeigen soll, wäre es schön, wenn man in der Summenzeile (im Beispiel für die Spalten Brutto- bzw. Netto-Quote) eine gesonderte Formel eingeben könnte, die folgendes erreicht:
round((sum(alle Nettoschäden/aller Jahre)+100/sum(alle Prämien/aller Jahre),2) - schematisch - siehe auch beigefügte   Grafik. 

Derzeit bleibt nur, die Statistik als csv oder EXEL-Tabelle zu expxortieren und dort weiterzubearbeiten und zu vervollständigen. Da aber Statitiken und Quotenrechnungen durchaus übliche Anwendungen für Datenbanken sind, wäre es schon wünschenswert (und ich meine auch im Interesse der Nur-Anwender [ohne weitere Programierkenntnisse], denen ja möglichst eine umfänglcihe und funktionsfähige Anwendung zur Verügung gestellt werden soll, auch sinnvoll), wenn man eine Statistik komplett in NINOX druckfertig generieren könnte.

Dies vielleicht als Anregung für eine künftige Version (es sei, denn in den Tiefen von NINOX gibt es auch dafür schon eine Lösung),

Beste Grüße

18 Antworten

null
    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Sorry, die Grafik hatte ich als PDF-Datei verscuht beizugügen! Hier nun das Ganz als JPG

    Gruß

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred, 

    Die gesamte Statistik kannst du schon heute komplett richtig und auch druckbar darstellen. Mal sehen ob ich das ganze hier richtig erklärt hinbekomme....:

    1. Die Tabelle Statistik hast du schon. Jetzt musst du noch eine Tabelle anlegen, sagen wir Daschboard. in der Tabelle Statistik gehst du bitte auf Felder bearbeiten -> mit einer Tabelle verknüpfen und ziehst die Tabelle Dashboard zu den Felder in Statistik. 

    2. Jetzt öffnest du die Tabelle Dashboard und erstellst einen neuen Datensatz. Dort solltest du eine leere Tabelle Statistik sehen. Jetzt legst du einen Button an und schreibst die Formel:

    ---

    delete (Statistik);

    let my:=this;

    for i in Transport_Deklaration do

    let a := (create Statistik);
    a.(Jahr := i.Versicherungsjahr);
    a.(Vertrag := i.Vertrag.Vertragsnummer);
    a.('Prämie' := i.Netto_gesamt);
    a.(Dashboard:=me);

    end;
    for i in 'Schäden' do
    let b := (create Statistik);
    b.(Jahr := i.year(Schadentag));
    b.(Vertrag := i.Vertrag.Vertragsnummer);
    b.(Reserve := i.'Reserve €');
    b.(Brutto := i.'Gesamt brutto €');
    b.(SB := i.'SB €');
    b.(Netto := i.'Gesamt netto €');
    b.(Dashboard:=my)
    end

    ---

    nach dem Klick auf Button solltest du die Statistik in deinem Datensatz sehen.

    3. Jetzt gibt es verschiedene Möglichkeiten die Daten darzustellen

    3.1. Du kannst mehrere Tabellenansichten erstellen, in diesem fall 3 Stück für 2018, 2019 und für die Gesamtüberblick. Die Formel für die Tabellenansichten wäre 

    für 2018:

    Statistik where Jahr=2018

    für 2019:

    Statistik where Jahr=2019

    für Gesamt:

    Statistik

    3.2. Du kannst für Gesamtstatistik einzelne Funktionsfelder anlegen und dort die Formeln anlegen. DieFormeln musste dann im bezug auf die Untertabelle Statistik auswählen.

    4. Dukannst jetzt in deinem Dashboard auch ein Drucklayout anlegen und dort die Untertabelle Statistik auch mehrmals anzeigen lassen, z.B. extra für Prämien, extra für Schäden, Gesamtstatistik, Jahresstatistik etc.

     

    Leo

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    besten Dank für Deine Hilfe.

    Ich hoffe, ich habe alles verstanden und kann Dir folgen. Ich werde morgen mal ein wenig basteln.Mal sehen, ob es klappt.

    Sollte ich „hängen“ würde ich mich noch mal melden.

    Dir erstmal einen schönen Abend und schönen Sonntag.

    Gruß Manfred

    Manfred

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    wenn ich es richtig verstehe, soll ich den Button im ersten Datensatz der neu zu erstellenden der Datei Dashboard (diese verknüpft mit der Tabelle Statistik) anlegen!? Dies habe ich gemacht und die Function:

    delete (Statistik);
    let my:=this;
    for i in Transport_Deklaration do
    let a := (create Statistik);
    a.(Jahr := i.Versicherungsjahr);
    a.(Vertrag := i.Vertrag.Vertragsnummer);
    a.('Prämie' := i.Netto_gesamt);
    a.(Dashboard:=my);
    end;
    for i in 'Schäden' 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.(Dashboard:=my)
    end

    eingetragen. Dazu Anm.: Es muß doch auch beim ersten b.(Dashboard:=my statt me) heißen, korrekt?

    die Feld-Namen "Brutto" und "Netto" habe ich korrigiert in 'Schd.-Brutto'und 'Schd.-Netto', wie sie in der Tabelle Statistik heißen. 

    Wenn ich jedoch im Datensatz der Tabelle Dashboard diese Function im Button eintrage, erhalte ich die Fehlermeldung "TypeError: undefined is not an object (evaluating 'nflags')?! Was möchte NINOX mir damit sagen?

    (Anm.: Gleiche Fehlermeldung erhalte ich übrigens, wenn ich das Skript mit Copy & Paste genauso eingebe, wie Du es geschrieben hattest. Dies nur für den Fall, dass ich einen Gedankenfehler gemacht haben sollte).

    Diese Fehlermdlung sagt mir nichts. Was nun? Weißt Du Rat?

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Wenn ich richtig interpretiere, befindet sich der Button (und auch die Formel) in der Tabelle Statistik und nicht in der Tabelle Dashboard.

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ergänzung: Was mir auffiel. Das Skript habe ich ja nahezu identisch in eimem Button in der Tabelle Vertrag, nur ohne die Variable my und Bezug auf Dashboard

    delete (select Statistik);
    for i in Transport_Deklaration do
    let a := (create Statistik);
    a.(Jahr := i.Versicherungsjahr);
    a.(Vertrag := i.Vertrag.Vertragsnummer);
    a.('Prämie' := i.Netto_gesamt)
    end;
    for i in 'Schäden' 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 €')
    end;
    openTable("Statistik", "(alle)")

    Dort zieht das Skript die Daten aus den Verküpfungen Transport_Deklaration und 'Schäden'.

    Dieser Feldbezug auf die Verknüpfungen fehlt ja, wenn ich das Skript in einem Button in der Tabelle Dashboard einbaue! Kann es ggfs. daran liegen?

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Überschneidung: Nein, den Button und das Skript habe ich schon - wie Du geschrieben hattest - im ersten blanko-Daensatz der Tabelle Dashboard eingebaut!

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Genau daran liegt es, habe ohne Datenmodel nicht sehen können. Ich würde vorschlagen, du vergiss es mit dem Dashboard und machst die Verknüpfung von Statistik zu Vertrag. 

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    dann bin ich aber doch wieder bei meinem Ausgangsthema, oder? Wenn ichden Button in der Tabelle Vertrag belasse und dann in die generierte (mit Daten gefüllte Tabelle Statistik) springe, bin ich wieder da wo ich herkomme.

    Wenn ich die Tabelle Statistik mit der Tabelle Vertrag verknüpfe (bzw. auch und/oder mit den Tabellen DEKLARATION_TRANSPORT oder SCHADEN), passiert nichts (es wird zwar keine Fehler angezeigt, die Tabelle wird aber auch nciht mit Sätzen gefüllt). Was mache ich nun flasch bzw. wo denke ich falsch?

    Bild = Skript in Button in Tabelle Statistik mit Bezug (Verkjüpfung) auf Tabellen Vertrag, DEKLRATION_TRANSPORT und SCHADEN

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred,

    Zuerst sollte der Button in der Tabelle Vertrag sein. Jete neu erstellete Zeile in der Tabelle Statistik sollte mit dem aktuellen  Datensatz der Tabelle Vertrag verknüpft werden:

    ---

    let my:=this
    delete (Statistik);
    for i in Transport_Deklaration do
    let a := (create Statistik);
    a.(Jahr := i.Versicherungsjahr);
    a.(Vertrag := i.Vertrag.Vertragsnummer);
    a.('Prämie' := i.Netto_gesamt);
    a.(Vertrag:=my);
    end;
    for i in 'Schäden' do
    let b := (create Statistik);
    b.(Jahr := i.year(Schadentag));
    b.(Vertrag := i.Vertrag.Vertragsnummer);
    b.(Reserve := i.'Reserve €');
    b.(Brutto := i.'Gesamt brutto €');
    b.(SB := i.'SB €');
    b.(Netto := i.'Gesamt netto €');
    b.(Vertrag:=my)
    end

    ---

    Leo

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    danke für Deine Mühe und Geduld.

    wenn ich das Skript so, wie du es schreibst (also mit der zusätzlichen Variablen "my" in den Button in der Tabelle Vertrag eingebe, erhalte ich folgende Statistik, d.h. anstelle der Vertragsnummer steht dort [object Object], was immer dies heißen soll.

     

    nehme ich die Ergänzugn um die zusätzliche Variable "my" wieder raus, erhalte ich meine "alte" Fassung mit Vertragsnummer.

     

    Was soll die Variable let my := this und die ergänzten Felder in der Auflistung a.(Vertrag := my) bzw. b.(Vertrag=my) bewirken. Wieso diese komische Anzeige [object Object].

    Irgendwo hakt es (wahrscheinlich, wie zumeist bei mir).... Was meinst Du mit "jede neu erstellete Zeile in der Tabelle Statistik sollte mit dem aktuellen Datensatz der Tabelle Vertrag verknüpft werden"? Ich habe eine Verknüpfung der Tabelle Statistik mit Vertrag

    Gruß

    Manfred

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred,

    wie heißt den die Verknüpfung zu der Tabelle Vertrag in der Tadelle Statistik?

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    kurioserweise steht dort Vertrag2 als Verknüpfung.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Dann sollten auch die Zeilen so heißen

    a.Vertrag2:=my 

    .

    .

    .

    b.Vertrab2:=my

     

    Leo

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke Leo,

    versuch ich so. Komme aber erst morgen dazu. Dir erst einmal einen schönen Abend.

    Gruß

    Manfred

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    so klappt es prima. Die Statistik wird nach Anklicken des Buttons im Datensatz des Vertrages angezeigt.

     

    Auch die Erstellung eines Drucklayouts klappt nun prinzipiell so, wie Du es beschrieben hast.

     

    Ich bekomme allerdings nun die Quotenberechung nicht hin. Wenn ich eine Funktionsspalte mit der Formel z.B. für die Nettoquote: round(('Schd.-Netto' * 100) / 'Prämie', 2 - dies sind ja die entsprechenden Felder aus der generierten Tabelle Statistik) eingebe, kommt immer kein Ergebnis (oder 0, oder infinity o.ä. dabei heraus, aber keine Quote).

    Gruppierung steht auf Jahr.

    Auch eine korrekte Gesamtquote für die letzte Zeile (die nicht aus Summe, Durchschnitt etc. der Einzelquoten besteht) bekomme ich nicht gebacken. Hier stoße ich an meine Grenzen.

    Wo ich nun Problem habe ist die Generierung der Brutto- bzw. Netto-Quote sowie einer Gesamtquote.

    Folgende Felder werden zur unmittelbaren Auswahl angezeigt:

     

    Hast Du dafür noch eine Lösung?

    Am Ende soll die Statistik ja aussehen:

    Jahr  Prämie  Reserve  Bez.-Brutto  SB  Bezahlt netto  Quote-Brutto  Quote-Netto

    Unten dann Summe und erneute (korrekte) Quotenberechnung aus den Summen.

    Dann wäre die Statistik perkfekt!

    GRuß

    Manfred

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred, ich bin die ganze Woche unterwegs und kann nicht so gut am Handy überprüfen, wo genau dein Problem liegt. Es fehlt bestimmt irgendwo eine Kleinigkeit. Kannst du dich damit am Mittwoch im webinar melden. Da findet Birger bestimmt sofort die Lösung

    • MReinert
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    werde ich machen. Dir wünsche ich eine gute erfolgreiche Woche.

    Gruß

    Manfred