Mit 1:n-Beziehungen arbeiten
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.
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.
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.
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.
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.
Anstatt die Lookup()-Formel zu verwenden, können Sie die Punktnotation verwenden und auf ThisItem.Location.Address
verweisen.
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.
Zugehörige Zeilen hinzufügen und aktualisieren
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.
Die erweiterten Eigenschaften des Dropdown-Steuerelements zeigen, wie die Eigenschaft Items eingerichtet ist.
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.
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.