Das Tabellenobjekt „Reward Level“ erstellen

Abgeschlossen

In der Tabelle „Reward Level“ werden verschiedene Belohnungsstufen und die Punkte gespeichert, die erforderlich sind, um eine Prämienstufe für Ihre Erweiterung zu erhalten.

Die Tabelle besteht aus zwei Feldern:

  • Level

  • Minimum Reward Points

In der Übung – Erstellen Sie Tabellenobjekts für Belohnungsstufen im vorherigen Modul, Sie haben diese Tabelle möglicherweise bereits erstellt. Hier gehen wir noch einmal darauf ein und stellen ausführliche Informationen zur Verfügung.

Erstellen Sie zunächst eine neue Tabelle, indem Sie die Schaltfläche Neue Datei auf der Seitenleiste von Visual Studio Code auswählen, um eine neue Seite in Ihrer Erweiterung einzurichten.

Screenshot der Schaltfläche „Neue Datei erstellen“

Stellen Sie sicher, dass der Dateiname mit .al endet. In diesem Beispiel können Sie den Namen RewardLevel.Table.al verwenden. Zwar kann eine .al-Datei mehrere Objekte enthalten, jedoch empfehlen wir, dass Sie nur ein Objekt für jede Datei verwenden. Nachdem die Datei erstellt wurde, öffnen Sie sie und Sie erstellen die Tabelle in der Datei.

Eine Erweiterung ist komplett in einem einzigen Ordner enthalten. Dieser Ordner enthält häufig mehrere Dateien, z. B. die Dateien App.json und launch.json, möglicherweise eine Bilddatei, die das Logo der Erweiterung darstellt, verschiedene Ordner für die Quelle: "\src", andere Ressourcen; "\res" und einen Testordner: "\test" folder. Die Erweiterung muss keiner flachen Struktur folgen, was bedeutet, dass je nach Anzahl der Anwendungsdateien mehr Ordner in den Ordnern „src“ oder „Test“ verwendet werden können, um Objekte basierend auf ihren Funktionen zu gruppieren, was hilfreich sein kann, um die Verwaltung eines großen .al-Projekts zu erleichtern.

Jeder Dateiname hat für den Dateityp Objektnamen mit nur den Zeichen [A-Za-z0-9], Objekttyp und Punkt al. In Ihrer Erweiterung kann der Name jedes neuen Anwendungsobjekts (Tabelle, Seite, Codeunit) ein Präfix oder Suffix umfassen.

Weitere Informationen zur Ordnerstruktur und Dateibenennung finden Sie unter Bewährte Methoden für AL.

Der folgende Code fügt eine neue Tabelle mit dem Namen 50100 „Reward Level“ zum Speichern von Informationen zur Belohnungsstufe hinzu, die vom Benutzer eingerichtet wurden.

table 50100 "Reward Level"
{
    Caption = 'Reward Level';
    TableType = Normal;
    DataClassification = CustomerContent;

    fields
    {
        field(1; Level; Text[20])
        {
            Caption = 'Level';
            DataClassification = CustomerContent;
        }

        field(2; "Minimum Reward Points"; Integer)
        {
            Caption = 'Minimum Reward Points';
            DataClassification = CustomerContent;
            MinValue = 0;
            NotBlank = true;

            trigger OnValidate();
            var
                RewardLevel: Record "Reward Level";
                tempPoints: Integer;
            begin
                tempPoints := "Minimum Reward Points";
                RewardLevel.SetRange("Minimum Reward Points", tempPoints);
                if not RewardLevel.IsEmpty then
                    Error('Minimum Reward Points must be unique');
            end;
        }
    }

    keys
    {
        key(PK; Level)
        {
            Clustered = true;
        }
        key("Minimum Reward Points"; "Minimum Reward Points") { }
    }

    trigger OnInsert();
    begin

        Validate("Minimum Reward Points");
    end;

    trigger OnModify();
    begin
        Validate("Minimum Reward Points");
    end;
} 

Durch Eingabe der Verknüpfung ttable wird das Grundlayout für ein Tabellenobjekt erstellt, wenn Sie die Erweiterung AL Language in Visual Studio Code verwenden, aber in diesem Fall können Sie den vorhergehenden Code kopieren und in die Datei **RewardLevel.Table.al ** einfügen.

In den folgenden Abschnitten werfen wir einen genaueren Blick auf die verschiedenen Elemente der Tabelle.

Die Struktur einer Tabelle besteht aus vier Abschnitten:

  • Metadatenabschnitt – Der erste Block enthält Metadaten für die Gesamttabelle:

      table 50100 "Reward Level"
      {
          Caption = 'Reward Level';
          TableType = Normal;
          DataClassification = CustomerContent;
    

    In diesem Beispiel wurde der Tabelle die Nummer 50100 zugewiesen, und der Name und der Untertitel lautet „Reward Level“. Durch Drücken der Tastenkombination STRG+Leertaste starten Sie IntelliSense und können dann andere Eigenschaften auswählen, falls Sie diese verwenden müssen. In diesem Beispiel ist die Eigenschaft TableType auf Normal gesetzt. Diese Einstellung ist nicht erforderlich, da Normal der Standardwert der Eigenschaft TableType ist.

    Die Eigenschaft Caption legt die Textzeichenfolge fest, die mit dem Objekt, dem Steuerelement oder einem anderen Element in der Benutzeroberfläche für die aktuelle Sprache angezeigt wird. Eine Beschriftung ist der Text, mit dem die Identität eines Steuerelements angezeigt wird, z. B. in der Beschriftungsleiste einer Seite oder einer Beschriftung für ein anderes Steuerelement.

    Die Eigenschaft DataClassification legt die Klassifizierung der Daten in der Tabelle oder im Feld fest. Die Datenklassifizierung kann verwendet werden, um die Sicherheits-, Compliance- und Datenschutzanforderungen sowie die Prozesse zum Sammeln, Speichern und Verwenden persönlicher Informationen einer Person einzuhalten.

  • Abschnitt „Felder“ – In diesem zweiten Abschnitt werden die Datenelemente, aus denen die Tabelle besteht, ihre Namen und die Art der Daten beschrieben, die sie speichern können.

      fields
          {
              field(1; Level; Text[20])
              {
                  Caption = 'Level';
                  DataClassification = CustomerContent;
              }
    
              field(2; "Minimum Reward Points"; Integer)
              {
                  Caption = 'Minimum Reward Points';
                  DataClassification = CustomerContent;
                  MinValue = 0;
                  NotBlank = true;
    
                  trigger OnValidate();
                  var
                      tempPoints: Integer;
                      RewardLevel: Record "Reward Level";
                  begin
                      tempPoints := "Minimum Reward Points";
                      RewardLevel.SetRange("Minimum Reward Points", tempPoints);
                      if not RewardLevel.IsEmpty then
                          Error('Minimum Reward Points must be unique');
                  end;
              }
          }
    
    • Dieses Beispiel enthält zwei Felder mit jeweils einer Nummer, einem Namen und einem Datentyp. Wenn ein Feld Eigenschaften besitzt, können diese zwischen den geschweiften Klammern gesetzt werden { }.

    • Das Feld Minimum Reward Point besitzt auch den Trigger OnValidate. Dieser Trigger wird nach dem Standardüberprüfungsverhalten ausgeführt, wenn Daten in ein Feld eingegeben werden. Während des Standardüberprüfungsverhaltens prüft das System, ob der Datentyp des eingegebenen Werts mit dem für das Feld definierten Datentyp übereinstimmt. Außerdem wird überprüft, ob der Typ den in diesem Feld festgelegten Eigenschaftsbeschränkungen entspricht, bevor die Prüfung erfolgt. Eine Fehlermeldung wird angezeigt, wenn im Triggercode ein Fehler auftritt. Wenn ein Fehler auftritt, wird der Benutzereintrag nicht in die Datenbank geschrieben.

  • Abschnitt „Schlüssel“ – Der dritte Abschnitt enthält die Definitionen der Schlüssel, die die Tabelle unterstützen muss.

          keys
          {
              key(PK; Level)
              {
                  Clustered = true;
              }
              key("Minimum Reward Points"; "Minimum Reward Points") { }
          }
    
    • Dieses Beispiel enthält zwei Schlüssel: PK und Minimum Reward Points. Der erste Schlüssel in dieser Liste ist immer der Primärschlüssel und die anderen Schlüssel sind Sekundärschlüssel. Der Primärschlüssel bestimmt, was einen Datensatz eindeutig macht. Schlüssel können aus mehreren Feldern bestehen. Sie können den Namen des Schlüssels definieren.

    • Der Primärschlüssel bestimmt die logische Reihenfolge, in der Datensätze gespeichert werden, unabhängig von ihrer physischen Platzierung. Logischerweise werden Datensätze nacheinander in aufsteigender Reihenfolge gespeichert und nach dem Primärschlüssel sortiert. Vor dem Hinzufügen eines neuen Datensatzes zu einer Tabelle prüft SQL Server, ob die Informationen in den Primärschlüsselfeldern des Datensatzes eindeutig sind, und fügt den Datensatz erst dann an der richtigen logischen Position ein. Datensätze werden dynamisch sortiert, sodass die Datenbank immer strukturell korrekt ist. Dieser Ansatz ermöglicht eine schnelle Datenmanipulation und -abfrage.

  • Abschnitt „Trigger“ – Im vierten Abschnitt werden die Trigger und der Code beschrieben, die für die Tabelle ausgeführt werden können.

          trigger OnInsert();
          begin
    
              Validate("Minimum Reward Points");
          end;
    
          trigger OnModify();
          begin
              Validate("Minimum Reward Points");
          end;
    

    Wenn in diesem Beispiel ein Vorgang zum Einfügen oder Ändern in der Tabelle auftritt, muss die Funktion Validate des Felds Minimum Rewards Points ausgeführt werden. Die Funktion Validate ruft den Trigger OnValidate eines Felds auf.

Nachdem Sie die Reward-Level-Tabelle erstellt haben, stellen Sie sicher, dass Sie sie speichern, indem Sie auf die Tastenkombination STRG+S drücken.

Hinweis

Im Visual Studio Code können Sie die Option Automatisch speichern aktivieren.

Screenshot der Option „Automatisch speichern“ unter „Datei“