Hallo Andreas,
in Deiner Datenquelle fehlt noch die ID der Rolle. Denn die filterExpression versucht ja die RecipientRole der Datenquelle mit der RecipientRole aus der SPSActivityClassBase abzugleichen.
Versuche doch mal folgendes:
Nimm in Deine Datenquelle die acc.RecipientRole mit auf und füge diese auch in die GroupBy Klausel mit ein. Also etwa so:
Code: Select all
SELECT
COUNT (acc.ID) AS Anzahl,
acc.RecipientRole,
sec.Name
FROM SPSActivityClassBase acc
INNER JOIN SPSScRoleClassBase scr ON scr.ID = acc.RecipientRole
INNER JOIN SPSSecurityClassRole sec ON sec.[Expression-ObjectID] = scr.[Expression-ObjectID]
INNER JOIN SPSCommonClassBase ccb ON acc.[Expression-ObjectID] = ccb.[Expression-ObjectID]
WHERE ccb.State != 204 -- Closed
AND NOT (UsedInTypeSPSActivityTypeIncident IS NULL)
AND sec.Name IN ([i]Diverse Rollen[/i])
GROUP BY sec.Name, acc.RecipientRole
ORDER BY Anzahl DESC
Im JavaScript Teil der filterExpression nutzt Du dann das Konstrukt:
Code: Select all
return selectedItem.$value ? "[RecipientRole] = '" + selectedItem.$value.RecipientRole + "' AND UsedInTypeSPSActivityTypeIncident is not null AND T(SPSCommonClassBase).State <> 204" : null;
Hier müsste dann die Einschränkung auf die Incidents ebenfalls wieder rein.
Übrigens kannst Du Dir beim Testen das Ergebnis des selectedItem auch per alert ausgeben lassen. Dann wird es ein wenig logischer wie die Abfrage mit dem Ergebnis aussehen muss. Füge dazu einfach in der filterExpression das JavaScript
Code: Select all
alert (JSON.stringify(selectedItem.$value));
mit ein. Damit zeigt der Alert Dir das ausgewählte Objekt an. Beim Debuggen sehr praktisch.
Viele Grüße
Frank