Anleitung

Da Benutzerrechte pro Mandant definiert werden können, müssen wir auch hierzu etwas passendes programmieren. Vergrößere dein Formular in der Höhe und verschiebe die MatrixBox nach unten, sodass mehr Freiraum oberhalb der MatrixBox entsteht. Platziere dort eine TextBox mit einem dazugehörigen Label. Erstelle über „Ansicht“ - „C/AL Globals“ eine neue globale Variable mit der Bezeichnung „ShowCompany“ (DataType = Text, Length = 30). Diese neue Variable ist in der „SourceExpr“-Eigenschaft der neuen TextBox einzutragen und die Eigenschaft „TableRelation“ muss noch mit dem Wert „Company“ (Tabellen-ID: 2000000006) gefüllt werden. Damit beim Auswählen eines Mandanten auch nur die passenden Benutzerrechte angezeigt werden, musst du noch in den „OnAfterGetRecord“-Trigger der MatrxiBox die folgende Programmierzeile schreiben:

InGroup:=MemberOf.GET(CurrForm.MatrixBox.MatrixRec."User ID", "Role ID", ShowCompany);

In diesem Trigger stehen schon drei Programmierzeilen aus dem ersten Teil des Tutorials und müssen jetzt gelöscht werden.

Fertige neue Form zur Darstellung einer Matrix

Kommen wir nun zu der eigentlichen Pflegemöglichkeit. Gehe in den „OnValidate“-Trigger der TextBox (die, die in der MatrixBox ist) und lege dort eine lokale Variable mit der Bezeichnung „MemberOf“ und vom Typ „Record“ und Subtype „Member Of“ (Tabellen-ID: 2000000003) an. Im Trigger dann müssen die folgenden Programmierzeilen geschrieben werden:

IF InGroup THEN BEGIN
	MemberOf.INIT;
	MemberOf."User ID":=CurrForm.MatrixBox.MatrixRec."User ID";
	MemberOf."Role ID":="Role ID";
	MemberOf.Company:=ShowCompany;
	MemberOf.INSERT;
END ELSE
	IF MemberOf.GET(CurrForm.MatrixBox.MatrixRec."User ID", "Role ID", ShowCompany) THEN
		MemberOf.DELETE;

Wird ein Häkchen gesetzt, was in der ersten Programmierzeile geprüft wird, wird ein neuer Datensatz erzeugt und somit die Zuordnung des Benutzers zu der Benutzerrolle hergestellt. Wenn jedoch das Häkchen entfernt wird, wird der passende Datensatz gelöscht.