Hallo
Ich habe einen Report der die Umsatzentwicklung von Warengruppen darstellt. Pro Warengruppe gibt es mehrere Informationszeilen, die jeweils 1. Zeile enthält die Umsätze in 12 Spalten für 1 Jahr. Die Entwicklung über das Jahr, möchte ich in einem Balkendiagramm darstellen, für jede Warengruppe im Gruppenfuß.
Ich habe keine Idee, wie ich das hinbekommen könnte. Anscheinend ist es nicht möglich ein Diagramm über die Spalten einer Zeile zu erstellen. Wenn ich die Chartvariablen selbst deklariere mit LlDefineChartFieldExt() und LlPrintDeclareChartRow(LL_DECLARECHARTROW_FOR_OBJECTS) funktioniert das für ein Diagramm über alles am Ende des Reports einwandfrei. Die Werte für die WG Diagramme werden ebenfalls übergeben, die sind aber immer leer.
Kann mir jemand einen Denkanstoß geben? Vielen Dank schon mal.
ppreuschoff
(combit Support - Patrick Preuschoff)
2
Hallo Lothar,
herzlich Willkommen im List & Label-Forum
Ist Ihre Anforderung vielleicht schon mit einem gruppierten Balkendiagramm und Reihendefinitionen umzusetzen?
Danke für den Hinweis. Aber eine solche Darstellung ist leider nicht möglich, da die Anzahl der Warengruppen in der Regel zwischen 10 und 20 liegt. Das lässt sich nicht mehr sinnvoll in einem Gesamtdiagramm darstellen.
Sie könnten doch pro Warengruppe ein Diagramm erstellen? Das könnte ja eben im Gruppenfuss passieren. Ansonsten müssten Sie Ihre Datenstruktur einmal genauer erklären, vielleicht haben wir das auch noch nicht so ganz verstanden .
Genau das möchte und genau das funktioniert nicht Ich verwende zum Druck die Delphi Komponente ohne Datenanbindung. Im OnDefineFields Event werden die Felder bereitgestellt bestehend aus Wwarengruppen ID, Zeilen ID und 12 Wertfeldern. Pro Warengruppe werden 9 unterschiedliche Zeilen bereitgestellt.
WG ZID Wert1 Wert2 .... Wert12
100 1
100 2
....
101 1
101 2
...
In der letzten Zeile der Warengruppe stehen die Werte für das Diagramm. Die werden als Chartfelder bereitgestellt.
ll10.LlDefineChartFieldStart;
for i := 1 to 12 do begin
ll10.LlDefineChartFieldExt('Zeitraum', IntToStr(i), LL_NUMERIC); //Spalte
ll10.LlDefineChartFieldExt('Beschriftung', DM.PrintData.Spalte[i], LL_TEXT); //Beschriftung der ll10.LlDefineChartFieldExt('Wert', CurrToStr(DM.PrintDs.Fields[i + 1].AsCurrency - DM.PrintDs.Fields[i + 16].AsCurrency), LL_NUMERIC);
ll10.llDefineChartFieldExt('Anteil', CurrToStr(DM.PrintDs.Fields[i + 16].AsCurrency), LL_NUMERIC);
ll10.LlPrintDeclareChartRow(LL_DECLARECHARTROW_FOR_TABLECOLUMNS);
end;
Wenn ich das Diagramm in eine Datenzeile setze, funktioniert das einwandfrei. Nur eben im Gruppenfuß nicht.
ppreuschoff
(combit Support - Patrick Preuschoff)
6
Funktioniert es möglicherweise schon ein Diagramm in den Gruppenfuß zu integrieren, wenn statt “LlDefineChartFieldExt” “LlDefineFieldExt” verwendet wird?
Ansonsten sollten Sie uns vielleicht mal ein komplettes Codebeispiel via Supportcase bereitstellen. Das Reihenchart würde dann funktionieren, wenn die einzelnen Felder als eigene Spalten vorhanden sind. Sie würden also eher sowas wie
for i := 1 to 12 do begin
ll10.LlDefineFieldExt('Zeitraum'+IntToStr(i),CurrToStr(DM.PrintDs.Fields[i + 1].AsCurrency - DM.PrintDs.Fields[i + 16].AsCurrency), LL_NUMERIC); //Spalte
ll10.LlDefineFieldExt('Beschriftung'+IntToStr(i), DM.PrintData.Spalte[i], LL_TEXT);
end;
verwenden und dann im Chart 12 Reihen mit “Beschriftung1” usw. vs. “Zeitraum1” usw. anlegen. So sollte das dann funktionieren.
Die Darstellung als Reihendiagramm hat funktioniert, allerdings sieht das unschön aus. Aus Zeitgründen lasse ich die Diagrammausgabe vorerst in einer Datenzeile. Wenn alles andere fertig ist, werde ich mich damit nochmal beschäftigen. Danke erstmal