MatrixBox verwenden (2. Teil)

Im ersten Teil ging es nur um die Darstellung der Benutzer und der Benutzerrollen und dessen Zuordnung zueinander. In diesem Teil des Tutorials werden wir die MatrixBox so erweitern, dass auch das Pflegen der Daten möglich ist. Wir haben somit zum Schluss die Möglichkeit, die bestehenden Benutzer zu bestehenden Benutzerrollen zuzuordnen.

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.

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.


 

Zurück zur Tutorialübersicht.