Freigeben über


Verstehen von Datensatzverweisen und polymorphen Nachschlagevorgängen in Canvas-Apps

Wenn Sie ein Forschungspapier in der Schule geschrieben haben, haben Sie wahrscheinlich eine Liste Ihrer Referenzen am Ende bereitgestellt. Sie haben keine Kopie des tatsächlich verwendeten Hintergrundmaterials, sondern einen Weblink, einen Buchtitel und einen Autor oder andere Informationen enthalten, damit jemand die ursprüngliche Quelle nachverfolgen konnte. Sie haben verschiedene Arten von Quellen in einer einzigen Liste, Zeitungsartikel neben Audioaufzeichnungen, mit jeweils eigenen spezifischen Details für ein richtiges Zitat gemischt. Wikipedia-Artikel enthalten z. B. häufig eine lange Liste von Referenzen.

In Canvas-Apps arbeiten Sie häufig mit Kopien von Datensätzen, die aus Datenquellen heruntergeladen wurden. Sie verwenden die Funktionen LookUp und Filter sowie die Eigenschaft Selected des Galerie-Steuerelements, um den spezifischen Datensatz zu identifizieren, den Sie wünschen. Alle Aufzeichnungen von Filter oder Ausgewählt haben denselben Tabellentyp, sodass Sie Felder mit einer einfachen .Feld Notation verwenden können. Diese Kopien enthalten häufig Referenzinformationen, sodass Sie die Patch-Funktion verwenden können, um die ursprüngliche Quelle zu aktualisieren.

Canvas-Apps unterstützen auch Datensatzverweise. Ähnlich wie eine Referenz auf ein Forschungspapier bezieht sich eine Datensatzreferenz auf einen Datensatz, ohne eine vollständige Kopie davon einzuschließen. Ein solcher Verweis kann auf einen Datensatz in einer beliebigen Tabelle verweisen. Wie Recherchepapierverweise können Sie Datensätze aus verschiedenen Tabellen in einer einzelnen Spalte kombinieren.

Viele Vorgänge für Datensatzverweise sind identisch mit dem Arbeiten mit Datensätzen. Sie können Datensatzverweise miteinander und mit vollständigen Datensätzen vergleichen. Sie können den Wert eines Datensatzverweises mit der Patch-Funktion genauso festlegen wie ein Nachschlagevorgang mit einem vollständigen Datensatz.

Es gibt einen wichtigen Verwendungsunterschied: Sie können nicht direkt auf die Felder eines Datensatzverweises zugreifen, ohne zuerst festzulegen, auf welche Tabelle sie verweist. Dies liegt daran, dass Canvas-Apps beim Schreiben von Formeln alle Typen kennen müssen. Da Sie den Typ eines Datensatzverweises erst kennen, wenn die App ausgeführt wird, können Sie die einfache Feldnotation nicht direkt verwenden. Sie müssen zuerst den Tabellentyp mit der IsType Funktion dynamisch bestimmen und dann die Feldnotation für das Ergebnis der AsType Funktion verwenden.

Der Tabellentyp bezieht sich auf das Schema jedes Datensatzes in einer Tabelle. Jede Tabelle verfügt über einen eindeutigen Satz von Feldern mit unterschiedlichen Namen und Datentypen. Jeder Datensatz der Tabelle erbt diese Struktur; Zwei Datensätze weisen denselben Tabellentyp auf, wenn sie aus derselben Tabelle stammen.

Hinweis

Sie können aus vielen verschiedenen Connectors wählen, um eine Verbindung mit verschiedenen Arten von Datenquellen für Canvas-Apps herzustellen. Beim Arbeiten mit Canvas-Apps in Power Apps Studio werden Spalten in Microsoft Dataverse jedoch als Felder bezeichnet, die allen anderen Datenquellen ähneln. Spalte wird nur verwendet, wenn sie sich auf eine Spalte innerhalb von Dataverse bezieht. Weitere Informationen: Dataverse Terminologieupdates

Polymorphes Nachschlagen

Microsoft Dataverse unterstützt Beziehungen zwischen Datensätzen. Jeder Datensatz in der Tabelle Firma hat eine Spalte für den Primären Kontakt, die eine Suchspalte für die Tabelle Kontakte darstellt. Die Suche kann nur auf einen Datensatz in "Kontakte" verweisen und kann nicht auf einen Datensatz in der Tabelle "Teams " verweisen. Dieses letzte Detail ist wichtig, da Sie immer wissen, welche Spalten für die Suche verfügbar sind.

Dataverse unterstützt auch polymorphe Nachschlagevorgänge, die auf einen Datensatz aus einer beliebigen Tabelle in einem Satz verweisen können. Beispielsweise kann die Spalte "Besitzer " auf einen Datensatz in der Tabelle " Benutzer " oder in der Tabelle "Teams" verweisen. Die gleiche Nachschlagespalte in verschiedenen Datensätzen kann auf Datensätze in verschiedenen Tabellen verweisen. In diesem Fall wissen Sie nicht immer, welche Spalten verfügbar sind.

Canvas-Datensatzreferenzen wurden entwickelt, um mit polymorphen Nachschlagewerten in Dataverse zu arbeiten. Sie können auch Datensatzverweise außerhalb dieses Kontexts verwenden, wodurch sich die beiden Konzepte unterscheiden.

Im nächsten Abschnitt beginnen Sie, diese Konzepte zu erkunden, indem Sie mit der Besitzersuche arbeiten.

Anzeigen der Spalten eines Datensatzinhabers

Jede Tabelle in Dataverse enthält eine Spalte "Besitzer ". Diese Spalte kann nicht entfernt werden, Sie können keine weitere hinzufügen und erfordert immer einen Wert.

So zeigen Sie diese Spalte in der Tabelle "Konto " an:

  1. Melden Sie sich bei Power Apps an.

  2. Wählen Sie in der linken Bereichsleiste ">" aus.

  3. Wählen Sie in der Liste der Tabellen "Konto" aus.

  4. Öffnen Sie in der oberen rechten Ecke die Filterliste (die standardmäßig auf "Standard " festgelegt ist), und wählen Sie dann "Alle" aus.

  5. Scrollen Sie nach unten, bis die Spalte "Besitzer" angezeigt wird.

    Spalte

Diese Nachschlagespalte kann auf einen Datensatz aus der Tabelle "Teams " oder der Tabelle " Benutzer " verweisen. Nicht jeder Datensatz in diesen Tabellen verfügt über die Berechtigung zum Besitzer; Überprüfen Sie die unterstützten Rollen, wenn ein Problem auftritt.

Diese Grafik zeigt einen einfachen Katalog von Konten, in dem die Tabelle "Konten " der App als Datenquelle hinzugefügt wurde:

Konten, die in einem Galerie-Steuerelement angezeigt werden.

Von Bedeutung

In diesem Thema zeigen die Grafiken einige Namen und andere Werte an, die nicht Teil der Beispieldaten sind, die mit Dataverse ausgeliefert werden. Die Schritte veranschaulichen genau, wie Steuerelemente für ein bestimmtes Ergebnis konfiguriert werden, ihre Erfahrung hängt jedoch von den Daten für Ihre Organisation ab.

Um den Besitzer jedes Kontos in der Galerie anzuzeigen, könnten Sie versucht sein, die Formel ThisItem.Owner.Name zu verwenden. Das Feld "Name" in der Tabelle "Team " lautet jedoch "Teamname", und das Feld "Name" in der Tabelle " Benutzer " lautet "Vollständiger Name". Die App kann nicht wissen, mit welcher Art von Suche Sie arbeiten, bis Sie die App ausführen, und sie kann zwischen den Datensätzen in der Tabelle Konten variieren.

Sie benötigen eine Formel, die sich an diese Varianz anpassen kann. Sie müssen auch die Datenquellen für die Tabellentypen hinzufügen, die Besitzer sein könnten (in diesem Fall Benutzer und Teams). Fügen Sie Ihrer App diese drei Datenquellen hinzu:

Tabellen

Mit diesen vorhandenen Datenquellen verwenden Sie diese Formel, um den Namen eines Benutzers oder eines Teams anzuzeigen:

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Konten, die in einem Galerie-Steuerelement angezeigt werden, wobei das Feld

In dieser Formel testet die IsType-Funktion das Feld "Besitzer" anhand der Tabelle "Teams ". Wenn es sich um diesen Tabellentyp handelt, konvertiert die AsType-Funktion ihn in einen Teamdatensatz. An diesem Punkt können Sie auf alle Felder der Teams-Tabelle zugreifen, einschließlich Teamname, mithilfe der . Feldnotation . Wenn IsType feststellt, dass der Besitzer kein Datensatz in der Tabelle "Teams " ist, muss dieses Feld ein Datensatz in der Tabelle " Benutzer " sein, da das Feld "Besitzer " erforderlich ist (darf nicht leer sein).

Um felder eines Datensatzverweises zu verwenden, müssen Sie zunächst die AsType-Funktion verwenden, um sie in einen bestimmten Tabellentyp zu umwandeln. Sie können nicht direkt über das Feld "Besitzer " auf Felder zugreifen, da das System nicht weiß, welchen Tabellentyp Sie verwenden möchten.

Die AsType-Funktion gibt einen Fehler zurück, wenn das Feld "Besitzer " nicht mit dem angeforderten Tabellentyp übereinstimmt, sodass Sie die IfError-Funktion verwenden können, um diese Formel zu vereinfachen. Aktivieren Sie zunächst die experimentelle Fehlerverwaltung auf Formelebene:

Experimenteller Schalter zum Aktivieren der Fehlerverwaltung auf Formelebene.

Ersetzen Sie dann die vorherige Formel durch folgendes:

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Filtern basierend auf einem Besitzer

Herzlichen Glückwunsch - Sie haben den schwierigsten Aspekt der Arbeit mit einer Plattenreferenz abgeschlossen. Andere Anwendungsfälle sind einfacher, da sie nicht auf Felder des Datensatzes zugreifen. Nehmen Sie die Filterung als ein Beispiel, die Sie in diesem Abschnitt erkunden.

Fügen Sie oberhalb der Galerie ein Kombinationsfeld-Steuerelement hinzu und legen Sie diese Eigenschaften des neuen Steuerelements fest:

  • Items: Users
  • SelectMultiple: false

Steuerelement für Kombinationsfeld über Katalog mit der Items-Eigenschaft auf Benutzer eingestellt hinzugefügt

Wenn Sie den Katalog nach einem bestimmten Benutzer filtern möchten, der aus diesem Kombinationsfeld ausgewählt wurde, legen Sie die Eigenschaft "Elemente " des Katalogs auf diese Formel fest:

Filter( Accounts, Owner = ComboBox1.Selected )

Gefilterte Galerie basierend auf dem im Steuerelement für das Kombinationsfeld festgelegten Wert.

Von Bedeutung

Die Anweisungen in diesem Thema sind genau, wenn Sie die Schritte genau ausführen. Jede Formel, die auf ein Steuerelement mit seinem Namen verweist, schlägt jedoch fehl, wenn das Steuerelement einen anderen Namen hat. Wenn Sie ein Steuerelement desselben Typs löschen und hinzufügen, ändert sich die Zahl am Ende des Steuerelementnamens. Vergewissern Sie sich bei jeder Formel, die einen Fehler anzeigt, dass sie die richtigen Namen aller Steuerelemente enthält.

Sie müssen IsType oder AsType nicht verwenden, da Sie Datensatzverweise mit anderen Datensatzverweisen oder vollständigen Datensätzen vergleichen. Die App kennt den Tabellentyp "ComboBox1.Selected ", da sie von der Tabelle "Users " abgeleitet ist. Konten, für die der Besitzer ein Team ist, stimmen nicht mit dem Filterkriterium überein.

Sie können es etwas ausgefeilter gestalten, indem Sie die Filterung nach entweder einem Benutzer oder einem Team unterstützen.

  1. Machen Sie etwas Platz am oberen Rand des Bildschirms, indem Sie die Größe der Galerie ändern und das Kombinationsfeld verschieben, fügen Sie ein Optionsfeld Steuerelement über dem Katalog ein und stellen Sie dann diese Eigenschaften für das neue Steuerelement ein:

    • Items: [ "All", "Users", "Teams" ]
    • Layout: Layout.Horizontal
  2. Stellen Sie für das Steuerelement Kombinationsfeld diese Eigenschaft ein (wenn das Kombinationsfeld verschwindet, wählen Sie Benutzer im Optionsfeld-Steuerelement):

    • Sichtbar: Radio1.Selected.Value = "Users"
  3. Kopieren und fügen Sie das Steuerelement Kombinationsfeld ein, verschieben Sie die Kopie direkt über das Original und legen Sie dann diese Eigenschaften für die Kopie fest:

    • Items: Teams
    • Sichtbar: Radio1.Selected.Value = "Teams"

    Je nach Zustand des Optionsfeld-Steuerelements zeigt die App nur jeweils ein Kombinationsfeld an. Da sie sich direkt übereinander befinden, scheinen sie dasselbe Steuerelement zu sein, das den Inhalt ändert.

  4. Legen Sie schließlich die Items-Eigenschaft des Gallery-Steuerelements auf diese Formel fest:

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

    Gefilterte Galerie, die alle Datensätze oder einen bestimmten Benutzer oder ein bestimmtes Team anzeigt.

Mit diesen Änderungen können Sie alle Datensätze anzeigen oder sie basierend auf einem Benutzer oder einem Team filtern:

Animation, die verschiedene gefilterte Ergebnisse basierend auf dem Steuerelement und den Kombinationsfeldern zeigt

Die Formel ist vollständig delegierbar. Der Teil, der die Optionsfeldwerte vergleicht, ist eine Konstante über alle Datensätze hinweg und wird ausgewertet, bevor der Rest des Filters an Dataverse gesendet wird.

Wenn Sie nach dem Typ des Besitzers filtern möchten, können Sie die IsType-Funktion verwenden, dies ist jedoch noch nicht delegierbar.

Filtern Nach Besitzertyp mithilfe von IsType.

Aktualisieren Sie den Besitzer mit Patch

Sie können das Feld "Besitzer " auf die gleiche Weise wie alle anderen Nachschlagevorgänge aktualisieren. Um den Besitzer des aktuell ausgewählten Kontos auf das erste Team zu setzen:

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

Dieser Ansatz unterscheidet sich nicht von einer normalen Suche, da die App den Typ von First( Teams ) kennt. Wenn Sie stattdessen den ersten Benutzer verwenden möchten, ersetzen Sie diesen Teil durch "First( Users)". Die Patch-Funktion weiß, dass das Feld "Besitzer " auf einen dieser beiden Tabellentypen festgelegt werden kann.

So fügen Sie diese Funktion der App hinzu:

  1. Wählen Sie im Bereich Baumansicht gleichzeitig das Steuerelement Optionsfeld und die beiden Steuerelemente Kombinationsfeld aus.

  2. Wählen Sie im Ellipsenmenü die Option "Diese Elemente kopieren" aus.

    Kopieren mehrerer Steuerelemente mithilfe der Strukturansicht.

  3. Wählen Sie im gleichen Menü "Einfügen" aus.

    Einfügen mehrerer Steuerelemente mithilfe der Strukturansicht.

  4. Verschieben Sie die kopierten Steuerelemente rechts neben der Galerie.

    Kopierte Steuerelemente nach rechts von der Galerie verschoben.

  5. Wählen Sie das kopierte Radiobutton aus, und ändern Sie dann die folgenden Eigenschaften:

    • Artikel: [ "Users", "Teams" ]
    • Standardwert: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    Die Auswahl

  6. Wählen Sie im Optionsfeld Steuerelement Benutzer, so dass das Steuerelement Kombinationsfeld, das die Benutzer auflistet, sichtbar ist.

  7. Wählen Sie das sichtbare Steuerelement Combobox und setzen Sie dann die Eigenschaft DefaultSelectedItems auf diese Formel:

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Standardeinstellungen für die Benutzer-Combo-Box.

  8. Wählen Sie im Bereich Optionsfeld Steuerelement Teams, so dass das Steuerelement Kombinationsfeld, das die Teams auflistet, sichtbar ist.

  9. Wählen Sie das Steuerelement Optionsfeld, um die Auswahl aus dem jetzt nicht mehr sichtbaren Combo-Box Steuerelement für Benutzer zu entfernen.

  10. Wählen Sie das sichtbare Kombinationsfeld Steuerelement für Teams, und setzen Sie dann dessen Eigenschaft DefaultSelectedItems auf diese Formel:

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Standardeigenschaftssatz für das Kombinationsfeld

  11. Fügen Sie ein Schaltflächen-Steuerelement ein, verschieben Sie es unter dem Kombinationsfeld-Steuerelement , und legen Sie dann die Texteigenschaft der Schaltfläche auf "Patch Owner".

  12. Legen Sie die OnSelect-Eigenschaft der Schaltfläche auf diese Formel fest:

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Formel auf Schaltfläche-Steuerelement eingestellt

Die kopierten Steuerelemente Optionsfeld und Kombinationsfeld zeigen den Besitzer für das aktuell ausgewählte Konto im Katalog an. Mit denselben Steuerelementen können Sie den Besitzer des Kontos auf ein beliebiges Team oder einen beliebigen Benutzer festlegen, indem Sie die Schaltfläche auswählen:

Animation, die den Patch des Besitzers mit entweder einem Benutzer oder einem Team zeigt

Anzeige des Besitzers durch Verwendung eines Formulars

Sie können ein Besitzerfeld in einem Formular anzeigen, indem Sie eine benutzerdefinierte Karte hinzufügen. Zum jetzigen Zeitpunkt können Sie den Wert des Felds nicht mit einem Steuerelement ändern.

  1. Fügen Sie ein Bearbeitungsformular-Steuerelement ein, und ändern Sie dann die Größe, und verschieben Sie es in die untere rechte Ecke.

  2. Öffnen Sie auf der Registerkarte "Eigenschaften " auf der rechten Seite des Bildschirms die Liste der Datenquellen , und wählen Sie dann "Konten" aus.

    Formularsteuerelement mit zusätzlichen Feldern mit leeren Werten.

  3. Legen Sie die Item-Eigenschaft des Formulars auf Gallery1.Selected.

    Formularsteuerelement mit zusätzlichen Feldern, die aus dem ausgewählten Element im Katalog aufgefüllt wurden.

  4. Wählen Sie auf der Registerkarte "Eigenschaften " auf der rechten Seite des Bildschirms "Felder bearbeiten" aus.

  5. Wählen Sie im Bereich Felder die Auslassungspunkte und wählen Sie dann Hinzufügen einer benutzerdefinierten Karte.

    Befehl zum Hinzufügen einer benutzerdefinierten Karte.

    Die neue Karte erscheint unten im Steuerelement des Formulars.

  6. Ändern Sie die Größe der Karte nach Bedarf, um den gesamten Text anzuzeigen.

    Eingefügte benutzerdefinierte Karte, leer.

  7. Fügen Sie ein Steuerelement Beschriftung in die benutzerdefinierte Karte ein und setzen Sie dann die Eigenschaft Text der Beschriftung auf die Formel, die Sie in dem Katalog verwendet haben:

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    Benutzerdefinierte Karte, die das Feld 'Eigentümer' in einem Bezeichnungssteuerelement anzeigt.

Für jede Auswahl im Katalog werden weitere Felder des Kontos, einschließlich des Besitzers des Datensatzes, im Formular angezeigt. Wenn Sie den Besitzer mithilfe der Schaltfläche " Patch " ändern, zeigt das Formularsteuerelement auch diese Änderung an.

Animation, die zeigt, dass das Formularsteuerelement auf Änderungen im Katalog reagiert.

Spalten eines Kunden anzeigen

In Dataverse ist die Suchspalte Customer ein weiteres polymorphes Suchfeld, das dem Owner sehr ähnlich ist.

Owner ist auf einen pro Tabelle beschränkt, aber Tabellen können null, eins oder mehr Customer-Suchspalten enthalten. Die Tabelle " Kontakte "-System enthält die Spalte " Firmenname ", bei der es sich um eine Spalte " Kundensuche " handelt.

Die Kontakttabelle zeigt die Spalte

Sie können einer Tabelle weitere Kunden-Nachschlagespalten hinzufügen, indem Sie den Datentyp "Kunde" für eine neue Spalte auswählen.

Kundendatentyp aus der Liste der Datentypen beim Erstellen einer Spalte.

Ein Kunden-Nachschlagefeld kann auf einen Datensatz aus der Tabelle "Konten" oder der Tabelle "Kontakte" verweisen. Sie verwenden die IsType- und AsType-Funktionen mit diesen Tabellen, daher ist es jetzt ein guter Zeitpunkt, sie als Datenquellen hinzuzufügen (Sie können Teams und Benutzer beibehalten).

Konten-, Teams-, Benutzer- und Kontakttabellen im Datenbereich.

Die Behandlung der Felder "Kunde " und "Besitzer " ist so ähnlich, dass Sie die App buchstäblich kopieren können (Datei>speichern unter und dann einen anderen Namen angeben) und diese einfachen Ersetzungen vornehmen:

Standort Beispiel Owner Kundenbeispiel
Überall Owner "Kundenname"
Überall Benutzer Konten
Verlauf Mannschaften Kontakte
Items-Eigenschaft der Galerie Konten Kontakte
Items-Eigenschaft des Formulars Konten Kontakte
Das erste Argument von Patch
in der OnSelect-Eigenschaft der Schaltfläche
Konten Kontakte
Die Items-Eigenschaft des Filterradios [ "Alle", "Benutzer", "Teams" ] [ "Alle", "Konten", "Kontakte" ]
Patchen von Optionsfeld Items Eigenschaft [ "Benutzer", "Teams" ] [ "Konten", "Kontakte" ]
Visible-Eigenschaft des Kombinationsfelds "Benutzer" und "Teams" "Konten" und "Kontakte"

Der neue Katalog sollte z. B. über diese Eigenschaft "Items " verfügen:

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

Kunden-App, die von der Besitzer-App abgeleitet wurde, wobei einfache Änderungen angewendet wurden.

Zwei wichtige Unterschiede zwischen Kunde und Besitzer erfordern eine Aktualisierung der Formeln innerhalb des Katalogs und des Formulars:

  1. Eins-zu-viele-Beziehungen zwischen Konten und Kontakten haben Vorrang, wenn Sie diese Tabellentypen namentlich ansprechen. Anstelle von Konten verwenden Sie [@Accounts]; anstelle von Kontakten verwenden Sie [@Contacts]. Mithilfe des globalen Mehrdeutigkeitsoperators stellen Sie sicher, dass Sie auf den Tabellentyp in IsType und AsType verweisen. Dieses Problem besteht nur im Datensatzkontext der Katalog- und form-Steuerelemente.

  2. Das Feld "Besitzer " muss einen Wert aufweisen, aber Kundenfelder können leer sein. Um das richtige Ergebnis ohne Typnamen anzuzeigen, testen Sie diesen Fall mit der IsBlank-Funktion, und zeigen Sie stattdessen eine leere Textzeichenfolge an.

Beide Änderungen sind in derselben Formel enthalten, die sowohl in der benutzerdefinierten Karte im Formular als auch in der Eigenschaft Text des Steuerelements Beschriftung des Katalogs erscheint:

If( IsBlank( ThisItem.'Company Name' ), "",
    IsType( ThisItem.'Company Name', Accounts ),
        "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Update to Text-Eigenschaft des Steuerelements für Untertitel-Beschriftung im Katalog

Mit diesen Änderungen können Sie das Feld " Firmenname " in der Tabelle " Kontakte " anzeigen und ändern.

Animation, die zeigt, wie das Auswählen eines Kontakts die anderen Steuerelemente und das Formular ändert.

Informationen zu Nachschlagespalten

Die Betreff Suchspalte unterscheidet sich ein wenig von denen, die Sie bereits in diesem Thema bearbeitet haben. Sie beginnen mit dem Anwenden der Muster, die in diesem Thema weiter oben beschrieben wurden, und dann lernen Sie weitere Tricks kennen.

Sie können einfach mit der Tabelle "Faxes " beginnen. Diese Tabelle hat eine polymorphe Regarding-Nachschlagespalte, die auf Konten, Kontakte und andere Tabellen verweisen kann. Sie können die App für Kunden nehmen und sie für Faxe modifizieren.

Standort Kundenbeispiel Faxbeispiel
Überall "Kundenname" Bezug
Items-Eigenschaft der Galerie Kontakte Faxe
Items-Eigenschaft des Formulars Kontakte Faxe
Das erste Argument von Patch
in der OnSelect-Eigenschaft der Schaltfläche
Kontakte Faxe

Auch hier müssen Sie eine Datenquelle hinzufügen: dieses Mal für Faxe. Wählen Sie auf der Registerkarte " Ansicht " die Option "Datenquellen" aus:

Datenbereich mit Den Tabellen

Ein wichtiger Unterschied bei "Regarding" besteht darin, dass es nicht auf Konten und Kontakte beschränkt ist. Tatsächlich ist die Liste der Tabellen mit benutzerdefinierten Tabellen erweiterbar. Die meisten Apps können diesen Punkt ohne Änderung aufnehmen, aber Sie müssen die Formel für die Beschriftung im Katalog und im Formular aktualisieren:

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

Aktualisierte Text-Eigenschaft für das Steuerelement Untertitel für Nachschlagen

Nachdem Sie diese Änderungen vorgenommen haben, arbeiten Sie mit der Nachschlagefunktion Regarding genauso wie mit den Nachschlagefunktionen Owner und Customer.

Animation, die zeigt, wie das Auswählen eines Elements im Katalog die anderen Steuerelemente und das Formular ändert.

Verstehen in Bezug auf Beziehungen

Bezug unterscheidet sich von Owner und Customer, da Ersteres eine 1:m-Beziehung beinhaltet. Per Definition erlaubt Ihnen eine umgekehrte Eins-zu-viele-Beziehung das Schreiben von First( Accounts ).Faxes.

Lassen Sie uns zurückgehen und die Tabellendefinitionen ansehen. In Dataverse werden Tabellen wie Faxe, Aufgaben, E-Mails, Notizen, Telefonanrufe, Briefe und Chats als Aktivitäten festgelegt. Sie können auch eigene benutzerdefinierte Aktivitätstabellen erstellen. Wenn Sie eine Aktivitätstabelle anzeigen oder erstellen, werden die zugehörigen Einstellungen unter "Weitere Einstellungen" angezeigt.

Einstellung der Aktivitätstabelle beim Erstellen einer Tabelle.

Andere Tabellen können mit einer Aktivitätstabelle verknüpft sein, wenn sie in den Einstellungen der Tabelle als Aktivitätsaufgabe aktiviert sind. Konten, Kontakte und viele andere Standardtabellen sind so festgelegt (wieder, unter "Weitere Einstellungen").

Einstellung der Aktivitätsaufgabe beim Erstellen einer Tabelle.

Alle Aktivitätstabellen und Aktivitätsaufgabentabellen weisen eine konkludente Beziehung auf. Wenn Sie den Filter ändern auf Alle wählen Sie oben auf dem Bildschirm die Faxe Tabelle, und wählen Sie dann die Registerkarte Beziehungen, alle Tabellen, die ein Ziel von einer Betreff Suche sein könnte.

Beziehungen der Faxe-Tabelle mit Bezug auf viele-zu-eins Beziehungen

Wenn Sie die Beziehungen für die Tabelle Konten zeigen, werden alle Tabellen, die eine Quelle von einem Betreff Suchfeld sein könnten, angezeigt.

Beziehungen der Konto-Tabelle mit Bezug auf viele-zu-eins Beziehungen

Was bedeutet alles?

  • Wenn Sie Formeln schreiben, müssen Sie berücksichtigen, dass die Liste der Aktivitätstabellen nicht fest ist und Sie Ihre eigenen erstellen können. Die Formel muss eine Aktivitätstabelle korrekt verarbeiten, die Sie nicht erwartet haben würden.
  • Aktivitätsaufgaben und Aktivitäten stehen in einer Eins-zu-viele-Beziehung. Sie können ganz einfach nach allen Faxen fragen, die sich auf ein Konto beziehen.

So erkunden Sie dieses Konzept in der App:

  1. Fügen Sie einen anderen Bildschirm hinzu.

    Fügen Sie einen leeren Bildschirm ein.

  2. Fügen Sie ein Katalogsteuerelement ein, ändern Sie dessen Größe, und verschieben Sie es dann auf die linke Seite des Bildschirms.

  3. Legen Sie auf der Registerkarte "Eigenschaften" rechts auf dem Bildschirm die Elemente der Galerie auf "Konten" fest.

    Elemente im Eigenschaftenbereich auf Konten setzen.

  4. Legen Sie das Layout des Katalogs auf "Titel" fest, und legen Sie dann das Titelfeld auf "Kontoname" fest.

    Setzen Sie das Layout für das Galerie-Steuerelement im Eigenschaftenbereich auf

  5. Fügen Sie einen zweiten Katalog hinzu, ändern Sie dessen Größe, und verschieben Sie ihn dann auf die rechte Seite des Bildschirms.

  6. Legen Sie die Eigenschaft Items der neuen Galerie auf Gallery2.Selected.Faxes fest.

    Dieser Schritt gibt die gefilterte Liste der Faxe für ein bestimmtes Konto zurück.

    Legen Sie die Eigenschaft

  7. Setzen Sie das Layout des Katalogs auf Titel und Untertitel, und setzen Sie dann das Titelfeld so, dass das Feld Thema angezeigt wird (das klein geschrieben sein kann Thema).

    Legen Sie den Titel auf das Feld

Wenn Sie ein Element in der Liste der Konten auswählen, werden in der Liste der Faxe nur Faxe für dieses Konto angezeigt.

Animation, die die Auswahl in der Konto-Galerie zeigt und dadurch die Liste der Faxe beeinflusst.

Aktivitätstabelle

Wie im vorherigen Abschnitt beschrieben, können Sie alle Faxe für ein Konto anzeigen. Sie können jedoch auch alle Aktivitäten für ein Konto anzeigen, einschließlich Faxen, E-Mail-Nachrichten, Telefonanrufen und anderen Interaktionen.

Für dieses Szenario verwenden Sie die Tabelle "Aktivität ". Sie können diese Tabelle anzeigen, indem Sie "Alle " in der oberen rechten Ecke aktivieren, um den Filter aus der Liste der Tabellen zu entfernen.

Liste der Tabellen, die die Aktivitätstabelle anzeigen.

Die Tabelle "Aktivität" ist speziell. Wenn Sie der Tabelle "Faxes " einen Datensatz hinzufügen, erstellt das System auch einen Datensatz in der Tabelle " Aktivität " mit den Spalten, die in allen Aktivitätstabellen gemeinsam sind. Von diesen Spalten ist Subject einer der interessantesten.

Sie können alle Aktivitäten anzeigen, indem Sie nur eine Zeile im vorherigen Beispiel ändern. Ersetzen Sie Gallery2.Selected.Faxes durch Gallery2.Selected.Activities.

Änderung der Items-Eigenschaft für den zweiten Katalog, Wechsel von Faxen zu Aktivitäten

Datensätze stammen aus der Tabelle "Aktivität ", aber Sie können trotzdem die IsType-Funktion verwenden, um zu ermitteln, welche Art von Aktivität sie sind. Bevor Sie IsType mit einem Tabellentyp verwenden, müssen Sie die Datenquelle hinzufügen.

Der Datenbereich zeigt alle Tabellen an, die für die IsType-Funktion erforderlich sind.

Durch Verwendung dieser Formel können Sie den Datensatztyp in einem Beschriftung-Steuerelement innerhalb des Katalogs anzeigen:

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Legen Sie die Texteigenschaft auf Formel fest, um Informationen für Faxe, Telefonanrufe und andere Aktivitäten anzuzeigen.

Sie können auch AsType verwenden, um auf die Felder des jeweiligen Typs zuzugreifen. Diese Formel bestimmt z. B. den Typ jeder Aktivität und zeigt für Telefonanrufe die Telefonnummer und Anrufrichtung aus der Tabelle " Telefonnummern " an:

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Erweiterte Texteigenschaft mit weiteren Informationen für einen Telefonanruf.

Daher zeigt die App eine vollständige Liste der Aktivitäten an. Das Feld "Betreff " wird für alle Arten von Aktivitäten angezeigt, unabhängig davon, ob die Formel sie berücksichtigt. Für Arten von Aktivitäten, die Sie kennen, können Sie deren Typnamen und typspezifische Informationen zu den einzelnen Aktivitäten anzeigen.

Abgeschlossener Bildschirm mit Informationen für verschiedene Arten von Aktivitäten.

Notizentabelle

Bisher basierten alle Betreff Beispiele auf Aktivitäten, aber die Anmerkungen Tabelle stellt einen anderen Fall dar.

Wenn Sie eine Tabelle erstellen, können Sie Anlagen aktivieren.

Aktivieren von Anlagen und Notizen beim Erstellen einer Tabelle.

Wenn Sie das Kontrollkästchen für Anhänge auswählen, erstellen Sie eine Regarding-Beziehung zu der Tabelle "Notizen", wie diese Grafik für die Tabelle "Konten" zeigt:

Beziehungen der Konto-Tabelle mit Bezug auf eine-zu-vielen Beziehungen

Abgesehen von diesem Unterschied verwenden Sie den Regarding Lookup auf die gleiche Weise, wie Sie Aktivitäten verwenden. Tabellen, die für Anhänge aktiviert sind, haben eine 1:n-Beziehung zu Anmerkungen, wie in diesem Beispiel:

First( Accounts ).Notes

Hinweis

Derzeit ist die Nachschlagefunktion Regarding für die Tabelle "Notizen" nicht verfügbar. Sie können die Spalte nicht basierend auf der Spalte Regarding lesen oder filtern, und Sie können die Spalte nicht mithilfe des Patch festlegen.

Die umgekehrte Notizen Eins-zu-viele-Beziehung ist jedoch verfügbar, so dass Sie eine Liste von Notizen nach einem Datensatz filtern können, der für Anhänge aktiviert ist. Sie können auch die Funktion "Beziehung" verwenden, um der Notizentabelle eines Datensatzes eine Notiz hinzuzufügen, aber die Notiz muss zuerst erstellt werden, wie im folgenden Beispiel gezeigt:

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

Aktivitätsparteien

Zum Zeitpunkt der Erstellung dieses Textes unterstützen Canvas-Apps keine Aktivitätsgruppen.