Mit 1:n-Beziehungen arbeiten

Abgeschlossen

Eins-zu-viele-Beziehungen sind die häufigsten Dataverse-Beziehungen, mit denen Sie arbeiten werden. In dieser Lerneinheit wird das Szenario mit der Lösung zu den freigegebenen Arbeitsbereichen (Hot Desking) in Contoso weiter behandelt. Die folgenden Beispiele verwenden die Beziehung zwischen den Standort‑ und Schreibtischtabellen, um die Arbeit mit Beziehungen in einer Canvas-App zu erklären. Das folgende Diagramm visualisiert die Beziehung und die entsprechenden Daten.

Diagramm der 1:n-Beziehung mit dem Standortdatensatz auf der Seite „Eins“ und mehreren Schreibtischdatensätzen auf der Seite „Viele“ der Beziehung

Wenn Sie einem Benutzer die Möglichkeit geben möchten, einen Standort auszuwählen und die Schreibtische dieses Standorts in einem darunter angeordneten Katalog anzuzeigen, können Sie einen Bildschirm erstellen, der dem folgenden Beispiel ähnelt.

Screenshot einer beispielhaften Benutzeroberfläche mit der ausgewählten Dropdownliste Standort 1 gefolgt von einer Liste der Schreibtische am ausgewählten Standort

Wie bei den meisten Datenquellen können Sie mit der Filter()-Funktion die Schreibtische so filtern, dass nur die Schreibtische für den ausgewählten Standort angezeigt werden. Ihre Fomel würde ähnlich dem folgenden Beispiel angezeigt werden.

Screenshot einer Formel, die im vorangegangenen Beispiel eine Datenquelle einrichtet

Weil Sie mit einer Dataverse-1:n-Beziehung arbeiten, können Sie stattdessen die Punktnotation verwenden, um auf die Schreibtische des Standorts zu verweisen, indem Sie Control.Selected.Desks verwenden, wie in der folgenden Formel gezeigt.

Screenshot der alternativen Formel für die Items-Eigenschaft des Schreibtischkatalogs

In diesem Beispiel erzeugen beide Formeln dieselbe Liste von Schreibtischen mit Bezug zum ausgewählten Standort. Die Punktnotation zu verwenden, ist einfacher und prägnanter, als die Filter()-Funktion zu verwenden.

Wenn Sie mit der Punktnotationssyntax in einer 1:n-Beziehung navigieren, erhalten Sie standardmäßig alle zugehörigen Datensätze. Mithilfe eines Filters können Sie weitere Kriterien auf die zugehörigen Zeilen anwenden. Der folgende Ausdruck verwendet die 1:n-Beziehung und filtert die Ergebnisse nach dem aktiven Status.

Filter(FilterLocation_1.Selected.Desks, Status= 'Status (Desks)'.Active)

Zudem können Sie die Beziehung ab der Schreibtischzeile verwenden. Betrachten Sie ein Beispiel, in dem Sie im Katalog die Standortadresse für jeden Schreibtisch anzeigen möchten. Möglicherweise sind Sie damit vertraut, eine Suche zum Abrufen des Standortdatensatzes zu verwenden und anschließend auf die Adressspalte als Eigenschaft zuzugreifen.

Screenshot einer Formel, die der Text-Eigenschaft eines Steuerelements zugewiesen ist

Anstatt die Lookup()-Formel zu verwenden, können Sie die Punktnotation verwenden und auf ThisItem.Location.Address verweisen.

Screenshot der vereinfachten Formel zur Zuweisung der Schreibtisch-Standortadresse

Sie sind nicht auf eine Ebene der Beziehungsnavigation beschränkt. Wenn Sie zum Beispiel einen Standort mit einem zugehörigen Hauptkontakt haben und die Spalte mit dem vollständigen Namen anzeigen möchten, können Sie die folgende Formel erstellen:

ThisItem.Location.'Primary Contact'.'Full Name'

Durch die Verwendung der Punktnotation können Sie verwandte Daten schnell einbeziehen, unabhängig davon, von welcher Seite der Beziehung Sie starten.

Die einfachste Methode zum Einrichten der 1:n-Beziehung ist, die zugehörige Zeile mit einem Bearbeitungsformular zu erstellen oder zu aktualisieren. Wenn Sie die Nachschlagespalte zum Formular hinzufügen, verwendet sie die Choices()-Funktion, um dem Benutzer mögliche Werte anzuzeigen. Das folgende Beispiel zeigt den Vorgang des Hinzufügens einer Schreibtischzeile, in der die Suchspalte für den Standort zum Formular hinzugefügt wird.

Screenshot eines Bearbeitungsformulars für den Schreibtischdatensatz mit der Standortsuche als Dropdown-Steuerelement

Die erweiterten Eigenschaften des Dropdown-Steuerelements zeigen, wie die Eigenschaft Items eingerichtet ist.

Screenshot der erweiterten Eigenschaften des für die Standortsuchspalte verwendeten Dropdown-Steuerelements

Wenn Sie die Choices()-Funktion verwenden, müssen Sie die Suchtabelle nicht mehr als weitere Datenquelle hinzufügen. Das Ergebnis der Choices()-Funktion ist eine Tabelle, sodass Sie weitere Filter‑ und Sortierfunktionen hinzufügen können, wie im Folgenden beschrieben:

Filter(Choices([@Desks].contoso_Location), Status='Status (Locations)'.Active)

Wenn Sie bereits über den Suchwert, den Sie festlegen wollten, verfügen (z. B. beim Erstellen eines Desk-Datensatzes vom Standortbildschirm), können Sie die Eigenschaft DefaultSelectedItems auf den Wert der Datenkarte und dann die Eigenschaft Visible der Datenkarte auf Aus stellen. Diese Einstellung ermöglicht, dass der Standardwert beim Aufrufen der Funktion SubmitForm() übergeben wird.

Screenshot des Ausdrucks, der den Standardwert für den Standort in der Dropdownliste festlegt

Wenn Sie die Patch()-Funktion verwenden, um eine Nachschlagespalte festzulegen, legen Sie den Wert der Spalte auf einen Datensatz aus der Primärtabelle fest. Das folgende Beispiel zeigt das Herstellen einer Beziehung zwischen einer Schreibtischzeile und einer primären Standortzeile, die aktuell in der Standort-Dropdownliste ausgewählt ist.

Patch(Desks, ThisItem, {Location:FilterLocation_1.Selected})

Sie können das gleiche Ergebnis auch mit der Relate()-Funktion erzielen. Der erste Parameter ist die Liste der Reihen (Schreibtische), die sich auf die Hauptreihe (Standort) beziehen, und der zweite Parameter ist die Reihe (Schreibtisch), die dieser Liste hinzugefügt oder verbunden werden sollen.

Relate(FilterLocation_1.Selected.Desks,ThisItem)

Auf ähnliche Weise können Sie die Unrelate()-Funktion verwenden, um die Zuordnung der Zeilen aufzuheben, indem Sie zum Beispiel ThisItem (Desk) von den Schreibtischen entfernen, die dem ausgewählten Standort „FilterLocation_1.Selected“ zugeordnet sind.

Unrelate(FilterLocation_1.Selected.Desks,ThisItem)

Denken Sie beim Verwenden der Unrelate()-Funktion daran, dass sie den Wert der primären Suche für den zugehörigen Datensatz auf Keinen (oder null) gesetzt haben. Vermeiden Sie verwaiste Zeilen, da die App die Zeile eventuell nicht ohne die primäre Zuordnung anzeigen kann. Wenn im Contoso-Beispiel die Liste der Schreibtische nur in Bezug auf den Standort angezeigt wird, ist jeder Schreibtisch ohne Standort verwaist und kann nicht mehr mithilfe der App aufgerufen werden. Diese Situation kann auch als Nebeneffekt des Löschens der primären Zeile auftreten, wenn die Eigenschaft zum Beziehungsverhalten so eingerichtet ist, dass die Verknüpfung zu verwandten Zeilen entfernt wird.