Auswertung erstellen
Hallo zusammen,
ich möchte gerne pro Vertragspartner eine Reklamationsauswertung für die einzelnen Jahre erstellen. Es soll dann als übersicht für alle Auftraggeber in einem FX dargestellt werden, so das man nur noch das Jahr wählt. Möglichst mit einem aktuellen Trent für das Aktuelle Jahr.
Hab in der DB mal alles weg gelassen und nur die zur verfügung stehenden Bezugsfelder mit den Verknüpfungen hier dargestellt.
Vielleicht könnt Ihr mir helfen
12 Antworten
-
für Vertragspartner Paul wäre das das Ergebnis wobei der Trent irgendwie datumsabhängig sein müßte von mir aus auf Monate als Bezug. Hab aber null Ahnung wie.
Die einzelnen Vertragspartner haben viele Aufträge. Aber nur wenn man weis wo was schief läuft kann man es auch versuchen zu ändern. Nur das Bauchgefühl ist für Gespräche nicht hilfreich.Daher ist so eine Auswertung sehr praktisch.
-
bin ein bisschen weiter... aber nicht wirklich da wo ich hin möchte.
sind ganz viele Fragezeichen im Kopf.
Wie bekomm ich den Zeitlichen Kontext hin.
let me := this;
let aa := ((select Abrechnungen) order by 'Abrechnung vom')['Aufträge' = me];
first(aa.'Abrechnung vom') = 1. Auslieferung- Erste Auslieferung im Jahr 2021 - Reklamation im Jahr 2022 muss im Jahr 2021 in die Quote einfließen.
Wie bekomm ich alles in ein FX als Übersicht angezeigt, wobei die Vertragspartner nicht "fest verankert sein sollen im script mit Nr=x" so das neue Partner automatisch in der liste erscheinen.
Kann man einen Trent für jeden Vertragspartner mit einfügen??
-
bin eindeutig zu blöd
wollt einen neuen ansatz nachgehen und die werte pro vertragspartner in eine hilfstabelle schreiben. Das mit den fx feldern, nimmt eindeutig zu viel leistung in anspruch. bekomm es aber nicht hin. vor allem müsste ja pro vertragspartner das ganze nach jahren geschrieben werden, damit ich in der ansicht am ende filtern kann.
delete (select Hilfstabelle); for i in select 'Aufträge' where Vertragspartner.Nr = Vertragspartner.Nr do let erste_anfahrt := ((select Abrechnungen) order by 'Abrechnung vom')['Aufträge'.Vertragspartner.Nr = 'Aufträge'.Vertragspartner.Nr].first('Abrechnung vom'); let anzahl_fahrten_Kunden := cnt((select 'Aufträge')[Vertragspartner.Nr = i.Nr].'ges Ausgeliefert'); let Rekla := cnt(select 'Aufträge' where Vertragspartner = i.Nr and 'davon Reklamationen' > 0); let rekla_anfahrt := sum((select 'Aufträge' where Vertragspartner = i.Nr and 'davon Reklamationen' > 0).'davon Reklamationen'); let rekla_anfahrt_ausgabe := rekla_anfahrt / Rekla; let quote := Rekla / anzahl_fahrten_Kunden * 100; let new := i.(create Hilfstabelle); new.(ID := i.Nr); new.('ges gefahrene Küchen' := i.anzahl_fahrten_Kunden); new.(Reklamationen := i.Rekla); new.(Quote := i.quote); new.('Durschnitt der Reklaanfahrten' := i.rekla_anfahrt_ausgabe); new.('anzahl Reklafahrten' := i.rekla_anfahrt); new.(Firma := i.Name) end
-
könnt ihr mir helfen?
mit : ((select Abrechnungen) order by year('Abrechnung vom')).year('Abrechnung vom') bekomm ich alle Jahreszahlen.
die müsten mit dem datum der ersten Abrechnung pro Auftrag verglichen werden um alle zu Daten für diesem Jahr zu ermitteln. Schluss endlich soll das ganze in eine Tabelle geschrieben werden wo dann raus kommt
zb. Vertragspartner Müller
2020 / 100 aufträge / davon 20 rekalmationen / ......
2021 / 200 aufträge / davon 60 rekalmationen / ......
-
Moin Michi ,
ich mache mal einen Versuch dir zu helfen .
Nun habe ich mir deine DB jetzt mal angeschaut.
So auf die Schnelle sehe ich folgendes:
An einigen Stellen kannst du select Abfragen weglassen, da du direkt über die existierenden Verknüpfungen die Daten holen kannst, das ist Performancemäßig besser.
z.B. 'ges Ausgeliefert' kannst du darauf reduzieren:let me := this; cnt(me.Abrechnungen)
Welches Vorgen/Struktur Datentechnisch am besten ist kann ich noch nicht überblicken.
Ich verstehe z.B noch nicht wie du die Reklamationen berechnest, also die Formel lese ich, aber den Sinn dahinter verstehe ich nicht. Woran erkennst du aus den Daten die du hast, ob es eine Reklamation zu einen Auftrag gibt?
-
Würde es gern direkt schreiben lassen. Nur hab ich null Ahnung wie man das umsetzen kann.
Array1 müsten die Nr von allen Vertragspartnern für das entsprechende jahr werden
Array2 müsten die Jahreszahlen werdenDas ganze müste dann in eine schleife um es für die enthaltenen Jahre und Kunden zu durchlaufen.
Am ende sollen die werte in die Hilfstabelle geschrieben werden.Irgendwie so vielleicht in der Richtung. Hab null Ahnung
'Anzahl der gefahrenen Küchen' := 0;
let Array1 := split("Array von Nr", ",");
let Array2 := split("Array von Nr", ",");
for i in range(0, cnt(Array1)) do
let aa := trim(item(Array1, i));
'Anzahl der gefahrenen Küchen' := 'Anzahl der gefahrenen Küchen' + cnt((select Abrechnungen)[Nr = aa]
-
Ein letzter Versuch,
Kann mir wirklich keiner helfen das um zu setzen? Hab echt keine Ahnung wie man es macht. Selbst bei der Auswertung an sich ist mir der Post https://forum.ninox.de/t/35h7c8p/median-als-globale-funktion aufgefallen. Sorry für meine Unwissenheit, doch ich mußte es googeln und hab festgestellt das dies eigentlich die noch bessere Variante ist um "Ausreißer die es immer gibt" zu vernachlässigen. Gern würde ich auch was zahlen für, aber bin halt auch nur nen kleiner wicht, der wenigsten ninox durchsetzen konnte. Sorry aber ich stehe auf Auswertung die was bringen, nicht nur immer was was kommt rüber bei einem Auftrag. Viel wichtiger ist mir wie oft fährt man hin... da verbrennt man geld und ansehen. Ist aber leider wohl nur meine meinung. Doch bei so vielen Aufträge pro Auftraggeber ist bauchgefüh das falsche Instrument.
-
Moin Michi ,
hier ein reduzierter Vorschlag um dir eine gewisse Auswertung zu ermöglichen.
Erstelle diesem Code in einem Button in der Tabelle Aufträge:
do as server for i in select 'Aufträge' do if cnt(i.Abrechnungen) > 0 then i.(gesAusgeliefert_Z := 1); i.('davon Rekalamtionen_Z' := cnt(i.Abrechnungen) - 1) else i.('davon Rekalamtionen_Z' := 0) end end end
und 2 neuen Zahlenfeldern (siehe Screenshot)
Dann wird in jedem Auftrag anhand der Anzahl der Einträge in der Untertabelle Abrechung ausgewertet, ob / wieviele Reklamationen es gibt. und diese Werte in die Uahlenfelder geschrieben. (wegen der großen Datenmengen besser noch ein do as server drum packen)
Dmit kannst du in der Tabellenansicht der Tabelle Aufträge z.B. sortieren nach "davon Reklamationen_Z" und hast schon einen deutlichen Überblick wo es sich lohnt nachzuhaken...
Ich denke das hilft dir deinem Wunsch näherzukommen.
VG Ronald
Content aside
- vor 2 JahrenZuletzt aktiv
- 12Antworten
- 128Ansichten
-
2
Folge bereits