SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Dynamische Kreuztabelle als Data view o.ä.?

Unbeantwortet Dieser Beitrag hat 8 Antworten

Ohne Rang
126 Beiträge
JasGo erstellt 11 Jan. 2010 15:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe hier eine lange SP-Liste mit allerlei Verknüpfungen auf andere Listen, wie eine schöne kleine Datenbank aufgebaut. Die Liste sieht etwas so aus:

Kategorie Land
Alpha USA
Alpha USA
Alpha Russland
Beta Russland
Beta Belgien
Gamma Belgien
Gamma Belgien

Hieraus möchte ich  einen View erzeugen, der mir in einer Spalte alle Kategorien distinct anzeigt, dazu pro Land eine Spalte und in der Kreuzung der Spalten einen Wert (boolean oder Anzahl), sofern die Kombination mehr als 1x existiert:

Kategorie USA Russland Belgien
Alpha 2 1  
Beta   1 1
Gamma     2

Mit einer Verknüpfung zu Access und in Access ist dies kein Problem, nur bekomme ich keine LIVE-Verknüpfung zurück in Sharepoint - oder? Exportieren Richtung SP würde bedeuten, daß alles wieder statisch und neu veröffentlicht würde...

Seht Ihr eine Möglichkeit, das im SP Designer "zusammenzuklicken"? Letztlich ist es nur eine einzige Liste, auf die ich zugreife, aber ich habe keine Idee, wie man das ohne eine gescheite SQL-Abfrage lösen könnte. Mit Gruppierung und Anzahl anzeigen habe ich bereits herumexperimentiert, aber es scheitert ja schon an den Länderwerten, die statt in der y-Achse in der x-Achse angezeigt werden sollen...

Ideen?

Danke!

Jasgo

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Jan. 2010 15:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mit einer SPD-Datenansicht läßt sich das bestimmt machen, aber sicher nicht durch einfaches "zusammenklicken". Es ist ein ziemliches Gefrickel, sollte sich aber mit XSLT lösen lassen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
126 Beiträge
JasGo Als Antwort am 11 Jan. 2010 15:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hmm, danke für die Antwort, ich bin inzwischen auf Lösungen für Pivot-Tabellen gestoßen, die entweder Excel-Services oder ein kommerzielles Webpart erfordern, was mir insgesamt ziemlich überdimensioniert vorkommt... 

Bei XSLT bin ich immer noch ziemlich hilflos, auch wenn das eine oder andere Gefrickel schon gelungen ist. Wie würdest Du anfangen?

Danke + Gruß,

jasgo

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Jan. 2010 16:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Naja, ich kann Dir natürlich keine fertige Lösung nennen, aber hier das ungefähre Vorgehen:

Baue eine Tabelle auf mit einer Spalte für die Kategorien und jeweils einer Spalte für ein Land. Dazu gehst Du einfach alle Datensätze durch (xsl:for-each). Du prüfst, ob es das jeweilige Land noch nicht gibt, d.h. es gibt kein preceding-sibling mit dem selben Namen, und wenn nicht erzeuge die Spalte.
Dann gehst Du wieder alle Datensätze durch und erzeugst genauso die Zeilen für die Kategorien. In einer inneren Schleife füllst Du die Saplten jeder Zeile mit count(//Rows/Row[@Land='USA' and @Kategorie=$aktuelleKategorie])

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
126 Beiträge
JasGo Als Antwort am 12 Jan. 2010 09:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

HI Andi,

danke, damit werde ich mich wohl beschäftigen müssen ;-)

jasgo

Ohne Rang
126 Beiträge
JasGo Als Antwort am 14 Jan. 2010 18:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Andi, Du bist mein Held ;-)

Die XSLT Vorgehensweise hat uns auf den richtigen Weg geführt und ich habe eine Menge über XSLT gelernt. Dein vorgeschlagener Weg hat funktioniert, bei über 1000 Datensätzen, wo bei jeder Zeile ein for-each durch alle Daten lief, jedoch die Ladezeit ins Unendliche bis zum Timeout verlängert. Mit den gewonnenen Kenntnissen konnten wir die Schleifen jedoch anhand unserer Referenztabellen optimieren (mit einer verknüpften Datenquelle inkl. der Referenztabellen Land, Kategorie), so daß pro Zeile nur noch wenige Datensätze durchlaufen werden und nur der count() noch etwas Performance frisst. Am meisten Zeit hat dabei noch das Verstehen der Syntax bei predicates in Verbindung mit Attributen gekostet. 

Danke!

jasgo

Ohne Rang
391 Beiträge
Frank Daske Als Antwort am 11 Jan. 2010 17:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mit Listen wirds über XSLT arg kompliziert. Mach doch das Pivot in der Datenbank und verbinde diese externen Daten dann mit einer SharePoint Liste, z.B. mit

http://www.layer2.de/de/produkte/Seiten/SharePoint-Business-Data-List-Connector.aspx

oder anderen Tools. Die aktualisieren im Hintergrund, nicht ganz Realtime - aber fast.

 

Ohne Rang
126 Beiträge
JasGo Als Antwort am 12 Jan. 2010 09:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Frank, das  Ausgangsdatenmaterial sind ja nunmal eine Listen, die in SP gepflegt werden - da kann ich sie nicht einfach in eine DB auslagern. Oder verstehe ich da etwas falsch?

jasgo

Ohne Rang
391 Beiträge
Frank Daske Als Antwort am 12 Jan. 2010 09:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nix falsch verstanden, den SharePoint Business Data List Connector kann man verwenden, um externe Datenquellen (z.B. Datenbanken) direkt mit SharePoint Listen zu verbinden.

Wenn die Listen in SharePoint direkt liegen müssen, dann hilft vielleicht dieser Beitrag von John Ross. Er zeigt, wie Excel Services in SharePoint für Pivots benutzt werden können.

http://www.endusersharepoint.com/2009/04/02/create-a-pivot-table-from-a-sharepoint-list-and-display-it-in-sharepoint/