Verteiler in Kontaktübersicht anzeigen?

Hi,
ist es möglich die verschiedenen Module in Ansichten zu verknüpfen?
Aktuell würde ich gerne die Kontaktübersicht um eine Spalte ergänzen, die einen bestimmten Verteiler anzeigt, so dass sich über alle Kontakte sehen kann, wer den Eintrag hat und wer nicht.

Ja das geht. :white_check_mark: - Aber Achtung: es wird technisch! :nerd_face:

Grundidee: wir definieren eine Datenbanksicht, die die Verteilermitgliedschaften jedes Kontakts Komma-separierter Liste zusammensammelt und sie in ein Zeichenfeld stopft und verknüpfen eine darauf basierende Ansicht dann 1:1 mit den Kontakten, so dass wir die Spalte dann in der Übersichtsliste einblenden können.

Los geht’s:

Beenden Sie combit CRM.

Fügen Sie im SQL Server Management Studio in einem neuen auf Ihrer Solutiondatenbank basierenden Abfragefenster folgenden Code ein…

CREATE OR ALTER FUNCTION [dbo].[cmbt_fct_GetSubscribedDistributionLists](@ContactID [uniqueidentifier])
RETURNS nvarchar(4000)
AS 
BEGIN

    DECLARE @sCsv nvarchar(4000);
    
	set @sCsv = ''

    select @sCsv = @sCsv + CASE WHEN count(*) > 1 THEN cast(count(*) as nvarchar(255)) ELSE '' END + DL."DistributionListName" + ', '
    from "DistributionListAssignments" DA join "DistributionLists" DL on DA.DistributionListID = DL.ID
    where DA.ContactID = @ContactID
    group by DL."DistributionListName";

    --remove final ", "
    if (Right(@sCsv, 2) = ', ')
        select @sCsv = substring(@sCsv,1,Len(@sCsv)-1)
	if (Len(@sCsv) = 0)
		set @sCsv = null

    return @sCsv
END
GO

CREATE OR ALTER VIEW [dbo].[SubscribedDistributionLists] AS select "Contacts"."ID", dbo.cmbt_fct_GetSubscribedDistributionLists(Contacts.ID) as "DistributionLists" from "Contacts"
GO

…und führen ihn aus.

Dann starten Sie combit CRM und legen eine neue Ansicht basierend auf der soeben erzeugten Datenbanksicht an:
image

Ich habe die Ansicht exemplarisch einmal „VerteilerMitgliedschaftenInfo“ genannt:


(und noch die ID als „Datenbank-ID“ und als Schlüsselfeld definiert, Sie könnten hier außerdem auch gleich noch einen deutschsprachigen Aliasnamen für das „DistributionLists“-Feld vergeben, ich hab es mir jetzt gespart.)

Danach erstellen Sie in den Ansichteneigenschaften von „Kontakte“ eine neue 1:1 Relation, welche vom Feld ID aus „Kontakte“ auf das Feld ID von „VerteilerMitgliedschaftenInfo“ zeigt:

Speichern Sie die Solution.

Dann platzieren Sie in der Übersichtsliste von „Kontakte“ das soeben gewonnene relationale Feld:

Fertig! :white_check_mark: :muscle: :slight_smile:

Sie könnten nun in der Übersichtsliste auch mal schnell filtern:

Einschränkungen/Beachtenswert: Das Zusammensammeln der kommaseparierten Liste geschieht on-the-fly dann wenn das Feld angezeigt werden muss, d.h. es kann bei vielen Verteilermitgliedschaften möglicherweise etwas dauern und die Darstellung dann etwas zäh werden. Es ist also vielleicht - je Datenbankserver und Datenmengen - nicht immer perfekt super-performant.

Gleichnamige Verteilerlisten werden zu großer Verwirrung führen, ebenso wie Verteilernamen, die ein Komma enthalten. Beides sollten Sie unbedingt vermeiden, wenn Sie diese neue Spalte verwirrungsfrei nutzen wollen.

Das Filtern in diesem Zeichenfeld mit „enthält“ hat seine Grenzen, wenn ein Verteilername in einem anderen Verteilernamen voll enthalten ist („Karte“ ist auch in „WeihnachtsKARTE“ enthalten und trifft also auch alle Kontakte, die nur im „Weihnachtskarte“-Verteiler sind. Kann gewollt sein, oder auch nicht.) Wenn es „drauf ankommt“, sollten Sie das Filtern immer über die eigentliche, reguläre Verteilerzuordnung und entsprechenden Solutionfunktionen durchführen, nicht über dieses Anzeige-Hilfsfeld!

Viel Spaß!

:person_raising_hand:

Disclaimer: Alle Angaben ungetestet und ohne Gewähr! :innocent: Irrtümer und Fehler bleiben ausdrücklich vorbehalten, die Angaben erfolgen ohne Gewähr und enthalten keine Zusicherung. Die Angaben stellen nur Beschreibungen dar und enthalten keine Garantie der Beschaffenheit der Produkte.

Vielen Dank für die Rückmeldung, aber nach „Beenden Sie combit CRM“ bin ich leider schon ausgestiegen. Das SQL Server Management Studio habe ich gefunden, wo aber der Code einzutragen ist, da bauen sich Fragezeichen auf… Wir haben demnächst noch einen Workshop, vielleicht kann ich das da platzieren. Aber schon mal gut zu wissen, dass es geht.

Falls ich an der richtigen Stelle im SQL Server Management Studio bin - das hier ist die Antwort auf das Ausführen der Abfrage:

Nachricht 262, Stufe 14, Status 18, Prozedur cmbt_fct_GetSubscribedDistributionLists, Zeile 1 [Batchstartzeile 0]
Die CREATE FUNCTION-Berechtigung wurde in der master-Datenbank verweigert.
Nachricht 208, Stufe 16, Status 1, Prozedur SubscribedDistributionLists, Zeile 2 [Batchstartzeile 23]
Ungültiger Objektname „Contacts“.

Sie müssen in der Auswahlliste links oben für das Abfragefenster Ihre Solution-Datenbank auswählen (anstatt „master“):

PS: Bitte bei solchen Änderungen immer an eine aktuelle Sicherung denken. Ich schreib das nur der guten Ordnung halber.

Danke - darauf habe ich laut System leider keinen Zugriff bzw. die Fehlermeldung ist die gleiche.
Herr Schillinger konnte aber helfen und hat das Feld integriert. Vielen Dank.