Page Summen von Repeater-Datensätzen darstellen

6. Juni 2017 10:08

Hallo,
ich möchte gerne die Datensätze in einer Page zusätzliche als Summendatensätze (gruppiert) darstellen!

Es sollten wenn möglich in der gleichen Page mehrere Gruppendetails dargestellt werden.
Z.B. Gruppiert nach Verbr. Boden
Gruppiert nach Verbr. Boden und Verbr. Holz

Die Page ist ein Listenpage und ist aktuell nur mit einer Repeater-Gruppe befüllt. Wobei die Daten mittels einer Funktion eingelesen werden.

Wie könnte ich das lösen.

Besten Dank und lg
stony
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Page Summen von Repeater-Datensätzen darstellen

6. Juni 2017 16:17

Hi stony,

ich denke, du kannst das Ganze mittels Intentation lösen.

https://blogs.msdn.microsoft.com/nav/2010/10/20/some-tips-about-creating-tree-view-in-list-pages/

Re: Page Summen von Repeater-Datensätzen darstellen

9. Juni 2017 14:52

Hi,

die Gruppierungen müssen ggf. mit in die Tabelle eingefügt werden. Daher bietet es sich an die Pagetabelle temporär zu verwenden. (Propertie: SourceTableTemporary = Yes)
Wichtig ist es zu wissen, dass bei Verwendung von Einrückungen keine Spaltensortierung mehr möglich ist. Das müsste dann ggf. auch Programmiert werden, indem die Tabelle für jede Sortierung neu gefüllt wird. (z.B. über Actions: Sortieren nach Holz, Sortieren Nach Böden, ...)

Kleines Beispiel für eine einfache Einrückung:
Für die Überschrift (Gruppe: "Verwendung") gehe ich aus Performancegründen* durch eine separate Tabelle (die in meinem Fall eh schon da ist).
Nur auch Datensätze mit der jeweiligen Verwendung vorhanden sind, wird die Überschrift und gleich darunter die zugehörigen Datensätze eingefügt.
Um es mir bei der Sortierung etwas einfacher zu machen, werden die Datensätze beim Anlegen durchgezählt (Feld: "Sorting Order"). Dieses Feld nutze ich am Ende für die Sortierreihenfolge. (Rec.SETCURRENTKEY("Sorting Order");)
Bei den Datensätzen (Entries) wird die Einrückung auf 1 gestellt (Feld: "Intendation"). Bei der Überschrift ist das ja nicht nötig, da der Standardwert des Intendationfeldes schon 0 beträgt.

*Wenn du keine Tabelle für die Codes aus "Verb. Böden" und "Verb. Holz" hast, dann musst du die Daten sammeln. Bei einer großen Datenmenge kann das aber dauern, da würde ich schon fast von dem Vorhaben abraten.

SendHistory ist der Record und Rec ist die TEMPORÄRE SourceTable der Page
Code:
//SORT RECORD
SendHistory.SETCURRENTKEY(Usage,"Sending Date");
SendHistory.ASCENDING(FALSE);

//COPY REC TO TEMPREC
SortOrderCount := 0;
DocumentUsage.RESET;
IF DocumentUsage.FINDSET THEN REPEAT
  SendHistory.SETRANGE(Usage,DocumentUsage."Document Usage");
  IF NOT SendHistory.ISEMPTY THEN BEGIN
    //--INSERT GROUP>-----------------------------
    IF NOT SkipGrouping THEN BEGIN
      Rec.INIT;
      Rec.Usage := DocumentUsage."Document Usage";
      Rec."Sorting Order" := SortOrderCount;
      SortOrderCount += 1;
      Rec.INSERT(TRUE); //TRUE = Generates Primary Key: GUID
    END;
    //--INSERT ENTRIES>---------------------------
    IF SendHistory.FINDSET THEN REPEAT
      Rec := SendHistory;
      Rec.Indentation := 1;
      Rec."Sorting Order" := SortOrderCount;
      SortOrderCount += 1;
      Rec.INSERT(FALSE);
    UNTIL SendHistory.NEXT = 0;
  END;
UNTIL DocumentUsage.NEXT = 0;

Rec.RESET;
Rec.SETCURRENTKEY("Sorting Order");

Microsoft.Dynamics.Nav.Client_2017-06-09_14-21-43.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.