[gelöst] FlowField / Tabellensortierung

3. August 2015 09:14

Hallo miteinander,

1. Thematik
ich möchte mir Daten aus verschiedenen Tabellen innerhalb einer Tree-Ansicht anzeigen lassen. Hierzu habe ich eine neue Tabelle angelegt, welche sich nach meiner Logik beim betätigen einer Page-Action mit Daten füllt. Soweit so gut. Nun möchte ich für jeden Datensatz innerhalb der Tree-Ansicht in einer Factbox Informationen aus derselben Tabelle anzeigen. Die Datensätze unterscheiden sich in Projekte, Projektaufgaben und Projektzeilen. Für die Projektzeilen sind mir die Kosten bekannt und schon in der Tabelle eingepflegt. Für die Projektaufgaben und das Projekt möchte ich nun die Gesamtkosten berechnen, welche sich aus der Zeilen zusammensetzen. Diese sollen innerhalb der Factbox angezeigt werden.

Ich dachte bei den Projektaufgaben an ein FlowField, welches zur Laufzeit die Summe der Projektzeilen (nur solche die zur Projektaufgabe gehören) bildet.
- 1.Frage: Macht es Sinn ein FlowField auf die gleiche Tabelle zu beziehen?
- 2.Frage: Wie kann ich das FlowField einrichten damit es funktioniert? (Bin noch ein Anfänger ;))Habe hier schon einen Versuch unternommen, der mir einen SQL-Fehler geliefert hat: "Ungültiger Spaltenname "Total Task Cost"

2. Thematik
Innerhalb der Tree-Ansicht führe ich ein "FINDSET" aus, welches mir die Datensätze in der Reihenfolge liefert, wie sie in der Datenbank stehen. Diese Reihenfolge ist für meine Zwecke nicht die richtige, da die Datensätze im OnAfterGetRecord-Trigger eingerückt werden. Ich benötige erst ein Projekt (Indentation 0), dann dazu passend die Projektaufgaben (Indentation 1), daraufhin alle Projektzeilen zur Aufgabe (Indentation 2), anschließend die Projektzeilen zur nächsten Projektaufgabe usw. Beim Befüllen der Tabelle wird auch genau diese Reihenfolge eingehalten. Die Datenbank sortiert sich allerdings leider neu. Daher habe ich eine neue Spalte eingerichtet, welche eine laufende Nummer vergibt. Ich möchte die Tabelle nun anhand dieser Spalte sortieren, damit mein Resultat des "FINDSET" in der richtigen Reihenfolge steht. Hat jemand einen Tipp wie ich die Sortierung anhand dieser Spalte ändern kann? Bin hier schon über Datenbank- und Spaltensortierung im SQL Management Studio gestolpert und nicht fündig geworden.

Vielen Dank im Voraus!
Zuletzt geändert von pax am 15. August 2015 10:31, insgesamt 1-mal geändert.

Re: FlowField / Tabellensortierung

12. August 2015 08:54

Servus,


Zu 1:
Ob es Sinn macht oder nicht… ggf. hätte man beim Aufbau eine bessere Tabellenstruktur wählen sollen(Projektkopf -> Projektaufgaben -> Projektzeilen). Nun ist es aber so. Dein Flowfield muss den gleichen Datentyp haben wie das Feld, dass du aufsummieren möchtest. Zusätzlich muss in deiner Tabelle ein Key existieren, der das zu summierende Feld als SumIndexField enthält. Dann musst du dem Flowfield als Calcformula SUM und deine entsprechenden Filter geben. Bitte beachte, dass du mit einem Flowfield nicht ein anderen Flowfield aufsummieren kannst.

Zu 2:
Du musst hier einen neuen Schlüssel anlegen mit deinem Feld. Tabelle im Designer öffnen, Ansicht -> Keys und dann eine neue Zeile mit deinem Lfd. Nr. Feld. Im Programmcode musst du dann mit DeineRecordVariable.SETCURRENTKEY(DeinFeld) die Sortierung umsetzen. Wenn du nicht explizit eine Sortierung nutzt, wird immer der Primärschlüssel gezogen.

Re: FlowField / Tabellensortierung

15. August 2015 09:13

Danke für deine Antwort. Meine Tree-Ansicht funktioniert mittlerweile wie gewünscht.

Zu 1:
Bei den FlowFields besteht noch das Problem, dass ich in der Sum-Formel als Filter ein Option-Feld abfragen möchte und dieser zwei von drei möglichen Option-Werten akzeptieren soll. Zunächst hatte ich hier 2 Konstanten im Filter abgefragt, das führt allerdings zu Problemen, weil ich das Feld "Typ" erst auf den Wert der einen Konstante lege und dann auf den der zweiten. Gibt es hier die Möglichkeit eine ODER-Verknüpfung einzubauen?

Hat sich erledigt. Habe nun ein Option-Feld als FlowFilter eingerichtet und diesen in die Summen-Formel eingefügt. Funktioniert wie gewünscht. :)