Aggregation von Zeichenketten außerhalb von Tabellen

Hi zusammen,

ich müsste in einem Textfeld oder in Datenzeilen einer freien Tabelle eine Auflistung von Werten eines Feldes machen.

Als Beispiel, die Daten sehen u.A. so aus:

{
	"Rechnung": {
		"Lieferung": {
			"Lieferscheine": [
				{
					"LieferscheinInhalt": "test1"
				},
				{
					"LieferscheinInhalt": "test2"
				},
				{
					"LieferscheinInhalt": "test3"
				}
			]
		}
	},
	"Kunden": [
		{
			"KundenName": "Franz"
		},
		{
			"KundenName": "Mark"
		},
		{
			"KundenName": "Ben"
		}
	]
}

In meinem Textfeld hätte ich nun gerne stehen:

test1, test2, test3
Neue Zeile:
Franz, Mark, Ben

Das bekäme ich zwar mit einer Tabelle EINER Datenquelle hin, indem ich die Datenzeile unterdrücke und in der Fußzeile Join$(Lieferscheine.LieferscheinInhalt) benutze.
Allerdings müsste ich über mherere Zeilen separat mehrere Felder verschiedener Datenquellen auflisten, was dann nicht mehr geht.

Eine Benutzervariable mit der Join$() Funktion klappt nicht, hier werden keine Daten ausgegeben.
Eine Tabelle mit der gleichen Fußzeile und SetVar() funktioniert mit GetVar() nur solange in einem Textfield bis man die Tabelle auf “Darstellung: Nie anzeigen” setzt. Danach wird auch mit GetVar im Textfield nichts mehr ausgegeben.

Summenvariable nehmen nur Nummerntypen, damit ging leider gar nichts.

Eigentlich dachte ich das wäre einfach und ich mache dafür 2 Benutzervariablen mit je der Join-Funktion auf die jeweiligen Felder. Zeigt lieder nichts an.

Gibts eine andere Möglichkeit mehrere Werte eines Feldes außerhalb der Tabelle mit deren Datenquelle darzustellen?

Hi Tim,

der Weg über SetVar()/GetVar() sollte der richtige Weg sein. Wichtig ist, die Tabelleninhalte nicht via Darstellungsbedingung auszublenden, sondern über die Zeilenoptionen und “Datenzeilen unterdrücken” die eigentliche Ausgabe der Inhalte zu unterdrücken. Im Hintergrund läuft List & Label dann aber dennoch durch die Felder durch. Folgendes sollte also zum Erfolg führen:

  1. Datenzeilen unterdrücken = Ja
  2. In der Fußzeile die Inhalte via SetVar() gepaart mit Join$() sammeln. Wichtig: bei SetVar() den dritten optionalen Parameter auf false setzen, um eine Ausgabe des Inhalts zu vermeiden
  3. Im Textobjekt via GetVar() die Inhalte wieder abfragen

Danke, das klappt.

Habe leider nochmal den gleichen Fall, allerdings mit stärker verschachtelteren Daten.

{
	"Warengruppe": {
		"Name": "TestWarengruppe",
		"Artikel": [
			{
				"Id": "10",
				"Artikeltyp": {
					"Bezeichnung": "Bauelement"
				}
			},
			{
				"Id": "20",
				"Artikeltyp": {
					"Bezeichnung": "Werkstoff"
				}
			},
			{
				"Id": "30",
				"Artikeltyp": {
					"Bezeichnung": "Verbrauchsgut"
				}
			}
		]
	}
}

Bekomme ich hier irgendwie die "Bezeichnung"en vom “Artikeltyp” heraus?

Also dass wieder herauskommt:
“Bauelement; Werkstoff; Verbrauchsgut”

Probiere gerade mit Gruppierung von Gruppenfuß oder Daten zusammenhalten unterschiedlicher Tabellen. Leider noch kein erfolg.

Ich habe es hinbekommen und in euerer WebDemo im Dashboard-Bericht nochmal nachgestellt.

Da passt noch etwas nicht wie man offiziell auf die Daten zugreifen darf.

Habe einen Berichtscontainer mit mehreren relationalen Tabellen erstellt, bis zur letzten Tabelle Order Details.

Ich muss eine Datenzeile in jede Tabelle schreiben und diese unterdrücken damit die Daten bis zur Employee Tabelle kommen.

In der Fußzeile der Employee habe ich dann die Join Funktion benutzt:

Join$(Order_Details.ProductID@Products.ProductID:ProductName)

Das funktionier, aber ich weis nicht warum, da ich in der Fußzeile offiziell keinen Zugriff auf Order_Details direkt habe.
Weder in der Datenquelle noch im Formelassistent wird mir Order_Details vorgeschlagen.
Der Text dieser Datenquelle ist im Formelassistent auch nicht blau hinterlegt, was zeigt, dass hier eine Datenquelle genutzt wird.

Trotzdem wird hier alles ausgegeben:
grafik

Ist das noch eine Diskrepanz zwischen Web und Desktop Reporting?

PS:
hier würde ich mir Summenvariablen für Zeichenketten wünschen.
Das ist ganz schön viel Workaround um eine Schleife um einen Datnsatz nachzubilden :eyes:

Hi Tim,

hier gibt es tatsächlich noch einen Unterschied zwischen Desktop Designer und Web Report Designer. Unsere Entwicklungsabteilung schaut sich das bereits an. Vielen Dank, dass du uns darauf aufmerksam gemacht hast. Es sollte im WRD natürlich auch so sein, dass man in der Fußzeile der ParentTable die Felder der ChildTable(s) zur Auswahl hat, um eben genau solche Aggegationen durchführen zu können.

Wünsche, Ideen und Anregungen können gerne im IdeaPlace hinterlegt werden.

Grüße
Chris

1 Like