Teilen über


Datensatzreferenzen und polymorphe Lookups in Canvas Apps verstehen

Wenn Sie in der Schule eine Forschungsarbeit geschrieben haben, haben Sie am Ende wahrscheinlich eine Liste Ihrer Referenzen angegeben. Sie haben keine Kopie des tatsächlich verwendeten Hintergrundmaterials beigefügt, sondern eher einen Weblink, Buchtitel und Autor oder andere Informationen, damit jemand die Originalquelle ausfindig machen kann. Sie haben verschiedene Arten von Quellen in einer einzigen Liste gemischt, Zeitungsartikel neben Audioaufnahmen, jede mit ihren eigenen spezifischen Details für eine korrekte Zitierung. Wikipedia-Artikel enthalten z.B. oft eine lange Liste von Referenzen.

In Canvas Apps arbeiten Sie oft mit Kopien von Datensätzen, die von Datenquellen heruntergeladen wurden. Sie verwenden die Funktionen LookUp und Filter und die Eigenschaft Selected vom Katalog Steuerelement, um den gewünschten Datensatz zu identifizieren. Alle Aufzeichnungen von Filter oder Ausgewählt haben denselben Tabellentyp, sodass Sie Felder mit einer einfachen .Feld Notation verwenden können. Diese Kopien enthalten oft Referenzinformationen, so dass Sie die Funktion Patch verwenden können, um die Originalquelle zu aktualisieren.

Canvas Apps unterstützen auch Referenzen aufzeichnen. Ä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. Ebenso wie bei Referenzen in Forschungsarbeiten können Sie Datensätze aus verschiedenen Tabellen in einer einzigen Spalte mischen.

Viele Operationen an Datensatzreferenzen sind mit der Arbeit mit Datensätzen identisch. Sie können Datensatzreferenzen miteinander und mit vollständigen Datensätzen vergleichen. Sie können den Wert einer Datensatzreferenz mit der Funktion Patch genau wie bei einem Lookup mit einem vollständigen Datensatz einstellen.

Es gibt einen wichtigen Unterschied in der Verwendung: Sie können nicht direkt auf die Felder einer Datensatzreferenz zugreifen, ohne vorher festzustellen, auf welche Tabelle sie sich bezieht. Der Grund dafür ist, dass Canvas Apps voraussetzen, dass alle Typen bekannt sind, wenn Sie Formeln schreiben. Da Sie den Typ eines Datensatzbezugs erst wissen, wenn die App läuft, können Sie die einfache Notation .field nicht direkt verwenden. Sie müssen den Tabellentyp zunächst dynamisch mit der IsType Funktion bestimmen und dann die .Feld Notation über das Ergebnis der AsType Funktion verwenden.

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

Hinweis

Sie können aus vielen verschiedenen Konnektoren wählen, um eine Verbindung mit verschiedenen Arten von Datenquellen für Canvas-Apps herzustellen. Wenn Sie jedoch mit Canvas-Apps in Power Apps Studio arbeiten, beziehen sich Spalten in Microsoft Dataverse auf Felder ähnlich wie bei allen anderen Datenquellen. Spalte wird nur verwendet, wenn auf eine Spalte in Dataverse verwiesen wird. Weitere Informationen: Dataverse Terminologieaktualisierungen

Polymorphe Lookups

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 sich nur auf einen Datensatz in Kontakte beziehen und kann nicht auf einen Datensatz verweisen in, sagen wir, der Tabelle Teams. Dieses letzte Detail ist wichtig, da Sie immer wissen, welche Spalten für die Suche verfügbar sind.

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

Canvas-Datensatzreferenzen wurden für die Arbeit mit polymorphen Lookups in Dataverse entwickelt. Sie können Datensatzreferenzen auch außerhalb dieses Kontexts verwenden, wodurch sich die beiden Konzepte unterscheiden.

Im nächsten Abschnitt beginnen Sie mit der Untersuchung dieser Konzepte, indem Sie mit dem Besitzer Lookup arbeiten.

Spalten eines Datensatzinhabers anzeigen

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

Um diese Spalte in der Tabelle Konto anzuzeigen:

  1. Melden Sie sich bei Power Apps an.

  2. Wählen Sie im linken Bereich Daten > Tabellen.

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

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

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

    Spalte Besitzer in der Tabelle Konto

Die Suchspalte kann auf einen Datensatz der Tabelle Teams oder der Tabelle Benutzer verweisen. Nicht jeder Datensatz in diesen Tabellen hat die Berechtigung, ein Besitzer zu sein. Überprüfen Sie die unterstützten Rollen, wenn ein Problem auftritt.

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

In einem Steuerelement eines Katalogs angezeigte Konten

Wichtig

Im Verlauf dieses Themas zeigen die Grafiken einige Namen und andere Werte, die nicht Teil der Beispieldaten sind, die mit Dataverse geliefert werden. Die Schritte zeigen genau, wie Steuerelemente für ein bestimmtes Ergebnis konfiguriert werden, aber Ihre Erfahrung wird je nach den Daten für Ihre Organisation variieren.

Um den Besitzer jedes Kontos im Katalog anzuzeigen, könnten Sie versucht sein, die Formel ThisItem.Owner.Name zu verwenden. Aber das Feld Name in der Tabelle Team ist Teamname und das Feld Name in der Tabelle Benutzer ist der Vollständige 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 ib der Tabelle Konten variieren.

Sie benötigen eine Formel, die sich an diese Abweichung 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 diese drei Datenquellen zu Ihrer Apps hinzu:

Konten-, Teams- und Benutzertabellen im Datenbereich

Wenn diese Datenquellen vorhanden sind, verwenden Sie diese Formel, um entweder 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' )

In einem Steuerelement eines Katalogs angezeigte Konten mit angezeigtem Besitzerfeld

In dieser Formel ist der IsType Funktionstests das Feld Besitzer gegen die Tabelle Teams. Wenn es von diesem Tabellentyp ist, wird die Funktion AsType ihn zu einem Team Datensatz wandeln. An dieser Stelle können Sie auf alle Felder der Tabelle Team einschließlich den Teamnamen zugreifen, indem Sie die .Feld Notation verwenden. Wenn der IsType bestimmt, dass der Benutzer kein Datensatz in der Tabelle Teams ist, muss dieses Feld ein Datensatz in der Tabelle Benutzer sein, weil das Feld Besitzer erforderlich ist (kann nicht leer sein).

Um Felder einer Datensatzreferenz zu verwenden, müssen Sie zuerst die AsType Funktion nutzen, um sie in einen bestimmten Tabellentyp umzuwandeln. Sie können nicht direkt über das Feld Besitzer auf die Felder zugreifen, da das System nicht weiß, welchen Tabellentyp Sie verwenden möchten.

Die Funktion AsType gibt einen Fehler zurück, wenn das Feld Besitzer nicht mit dem angeforderten Tabellentyp übereinstimmt, also können Sie die Funktion ifError verwenden, um diese Formel zu vereinfachen. Schalten Sie zunächst die experimentelle Funktion Fehlermanagement auf Formel-Ebene ein:

Experimenteller Schalter zum Einschalten der Fehlerverwaltung auf Formelebene

Ersetzen Sie dann die vorherige Formel durch diese Formel:

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

Filter auf der Grundlage eines Besitzers

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

Fügen Sie ein Steuerelement Kombinationsfeld oberhalb des Katalogs 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

Um den Katalog nach einem bestimmten Benutzer aus diesem Kombinationsfeld zu filtern, setzen Sie die Eigenschaft Items der Galerie auf diese Formel:

Filter( Accounts, Owner = ComboBox1.Selected )

Gefilterte Kataloge basierend auf dem im Steuerelement des Kombinationsfelds festgelegten Wert

Wichtig

Die Anweisungen in diesem Thema sind korrekt, wenn Sie die Schritte genau befolgen. Jede Formel, die sich auf ein Steuerelement mit seinem Namen bezieht, 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 Namens des Steuerelements. Bestätigen Sie bei jeder Formel, die einen Fehler anzeigt, dass sie die korrekten Namen aller Steuerelemente enthält.

Sie brauchen IsType oder AsType nicht zu verwenden, weil Sie Datensatzverweise mit anderen Datensatzverweisen oder mit vollständigen Datensätzen vergleichen. Die App kennt den Tabellentyp ComboBox1.Selected, weil es von der Tabelle Benutzer abgeleitet ist. Konten, bei denen der Besitzer ein Team ist, entsprechen nicht dem Filterkriterium.

Sie können noch etwas ausgefallener werden, indem Sie die Filterung entweder durch einen Benutzer oder ein 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):

    • Visible: 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
    • Visible: Radio1.Selected.Value = "Teams"

    Je nach Zustand des Optionsfeld-Steuerelements zeigt die App nur jeweils ein Kombinationsfeld an. Da sie direkt übereinander angeordnet sind, erscheinen sie als dasselbe Steuerelement, das den Inhalt ändert.

  4. Schließlich setzen Sie die Eigenschaft Items des Steuerelements Galery auf diese Formel:

    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)
    )
    

    Gefilterter Katalog, der alle Datensätze oder einen bestimmten Benutzer oder ein bestimmtes Team anzeigt

Mit diesen Änderungen können Sie alle Datensätze anzeigen oder sie entweder nach 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 Werte der Optionsfeld-Schaltflächen vergleicht, ist eine Konstante über alle Datensätze hinweg und wird ausgewertet, bevor der Rest des Filters auf Dataverse gesetzt wird.

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

Filtern nach Besitzertyp durch Verwendung von IsType

Aktualisieren Sie den Besitzer mit Patch

Sie können das Feld Besitzer auf die gleiche Weise aktualisieren wie jeden anderen Lookup. So setzen Sie den Besitzer des aktuell ausgewählten Kontos auf das erste Team:

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

Dieser Ansatz unterscheidet sich nicht von einem normalen Lookup, da die App den Typ First( Teams ) kennt. Wenn Sie stattdessen den ersten Benutzer wünschen, ersetzen Sie diesen Teil durch First( User ). Die Funktion Patch weiß, dass das Feld Besitzer auf einen dieser beiden Tabellentypen festgelegt werden kann.

Um diese Funktion der App hinzuzufügen:

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

  2. Wählen Sie im Auslassungspunkte-Menü Kopieren Sie diese Elemente.

    Kopie von mehreren Steuerelementen über die Strukturansicht

  3. Wählen Sie im selben Menü Einfügen.

    Einfügen mehrerer Steuerelemente über die Strukturansicht

  4. Verschieben Sie die kopierten Steuerelemente auf die rechte Seite des Katalogs.

    Kopierte Steuerelemente auf die rechte Seite des Katalogs verschoben

  5. Wählen Sie das kopierte Steuerelement Optionsfeld, und ändern Sie dann diese Eigenschaften:

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

    Entfernt die gesamte Auswahl aus dem Optionsfeld-Steuerelement

  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()
    )
    

    Standardeigenschaft für das Kombinationsfeld Benutzer festgelegt

  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()
    )
    

    Standardeigenschaft für das Kombinationsfeld Teams festgelegt

  11. Fügen Sie ein Steuerelement Schaltfläche ein, verschieben Sie es unter das Steuerelement Kombinationsfeld und setzen Sie dann die Eigenschaft der Schaltfläche Text auf "Patch Owner".

  12. Legen Sie die Eigenschaft OnSelect der Schaltfläche auf die folgende 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 den gleichen Steuerelementen können Sie den Besitzer des Kontos auf ein beliebiges Team oder einen beliebigen Benutzer setzen, indem Sie die Schaltfläche wählen:

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

Den Besitzer mit Hilfe eines Formulars anzeigen

Sie können ein Feld Besitzer innerhalb eines Formulars 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 Steuerelement Formular bearbeiten ein, ändern Sie seine Größe und verschieben Sie es dann in die untere rechte Ecke.

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

    Steuerelement Formular, das zusätzliche Felder mit Leerwerten anzeigt

  3. Setzen Sie die Eigenschaft Element des Formulars auf Gallery1.Selected.

    Steuerelement des Formulars, das zusätzliche Felder anzeigt, die aus dem ausgewählten Element im Katalog ausgefüllt wurden

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

  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 Besitzer in einem Steuerelement einer Beschriftung zeigt

Für jede Auswahl im Katalog werden weitere Felder des Kontos, einschließlich des Besitzers des Datensatzes, im Formular angezeigt. Wenn Sie den Besitzer über die Schaltfläche Patch ändern, wird diese Änderung auch im Steuerelement des Formulars angezeigt.

Animation, die das Steuerelement des Formulars zeigt, das auf Änderungen im Katalog reagiert

Spalten eines Kunden anzeigen

In Dataverse ist die Spalte Kunde suchen eine weitere polymorphe Suche, die sehr ähnlich ist zu Besitzer.

Besitzer ist auf einen pro Tabelle beschränkt, aber Tabellen können null, eins oder mehr Kunde Suchspalten enthalten. Die Systemtabelle Kontakte enthält die Spalte Firmenname, bei dem es sich um eine Nachschlagespalte für Kunden handelt.

Kontakttabelle mit Spalte Firmenname als nicht erforderlicher Datentyp Kunde

Sie können weitere Kunden Suchspalten in einer Tabelle durch Auswahl des Kunde Datentyps für eine neue Spalte hinzufügen.

Kundendatentyp aus der Liste der Datentypen beim Erstellen einer Spalte

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

Konten-, Teams, Benutzer und Kontakttaellen im Datenbereich

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

Location Owner Beispiel Customer Muster
Verlauf Besitzer "Debitorenname"
Verlauf Benutzer Firmen
Verlauf Teams Kontakte
Katalog Items Eigenschaft Firmen Kontakte
Eigenschaft des Formulars Items Firmen Kontakte
Das erste Argument von Patch
in der Eigenschaft der Schaltfläche Auf Auswählen
Firmen Kontakte
Eigenschaft des Filter-Radios Items [ "All", "Users", "Teams" ] [ "All", "Accounts", "Contacts" ]
Patchen von Optionsfeld Items Eigenschaft [ "Users", "Teams" ] [ "Accounts", "Contacts" ]
Eigenschaft der Combobox Visible "Benutzer" und "Teams" "Accounts" und "Contacts"

Der neue Katalog sollte z.B. diese Eigenschaft Items haben:

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 abgeleitet von der App des Besitzers mit einfachen Änderungen

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 auf diese Tabellentypen mit Namen verweisen. Verwenden Sie anstelle von Accounts [@Accounts]; anstelle von Contacts verwenden Sie [@Contacts]. Durch die Verwendung der globalen Mehrdeutigkeitsverwendung, stellen Sie sicher, dass Sie sich auf den Tabellentyp im IsType und AsType beziehen. Dieses Problem besteht nur im Datensatzkontext der Katalog- und form-Steuerelemente.

  2. Das Feld Besitzer muss einen Wert haben, aber Kunde Felder können Leerzeichen sein. Um das richtige Ergebnis ohne Typbezeichnung anzuzeigen, testen Sie für diesen Fall mit der Funktion 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-Beschriftungs in der Katalog

Mit diesen Änderungen können Sie das Feld Name der Firma in der Tabelle Kontakte ändern.

Animation, die zeigt, wie die Auswahl eines Kontakts die anderen Steuerelemente und das Formular verändert

Informationen zu Nachschlagespalten

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

Sie können einfach mit der Tabelle Faxe beginnen. Diese Tabelle Faxe hat beispielsweise ein polymorphes Nachschlagefeld Bezüglich, das auf Konten, Kontakte und andere Tabellen verweisen kann. Sie können die App für Kunden nehmen und sie für Faxe modifizieren.

Location Customer Muster Faxes Muster
Verlauf "Debitorenname" Betreff
Katalog Items Eigenschaft Kontakte Faxe
Eigenschaft des Formulars Items Kontakte Faxe
Das erste Argument von Patch
in der Eigenschaft der Schaltfläche Auf Auswählen
Kontakte Faxe

Auch hier müssen Sie eine Datenquelle hinzufügen: dieses Mal für Faxes. Klicken Sie auf der Registerkarte Ansicht auf Datenquellen:

Datenbereiche zeigen Konten, Teams, Benutzer und Kontakte und Faxtabellen an

Ein wichtiger Unterschied für Regarding besteht darin, dass es nicht auf Accounts und Contacts beschränkt ist. Die Liste der Tabellen ist mit benutzerdefinierten Tabellen erweiterbar. Die meisten Apps können diesen Punkt ohne Änderung berücksichtigen, aber Sie müssen die Formel für das Label in Katalog und 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 die Auswahl eines Elements im Katalog die anderen Steuerelemente und das Formular verändert

Verstehen in Bezug auf Beziehungen

Regarding 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.

Gehen wir zurück und schauen wir uns die Tabellendefinitionen an. In Dataverse Tabellen wie Faxe, Aufgaben, E-Mails, Notizen, Telefonanrufe, Briefe und Chats werden diese als Aktivitäten festgelegt. Sie können auch Ihre eigenen benutzerdefinierten Aktivitätentabellen erstelle. Wenn Sie eine Aktivitätstabelle anzeigen oder erstellen, erscheinen ihre Einstellungen unter Weitere Einstellungen.

Einstellung der Aktivitätstabelle beim Erstellen einer Tabelle

Andere Tabellen können mit einer Aktivitätstabelle verknüpft werden, wenn sie als Aktivitätsaufgabe in den Tabelleneinstellungen aktiviert werden. Konten, Kontakte, und viele andere Standardtabellen werden so bezeichnet (wieder unter Weitere Einstellungen).

Einstellung der Aktivitätstabelle beim Erstellen einer Tabelle

Alle Aktivitätstabellen und Aktivitäts-Aufgaben-Tabellen haben eine implizite Beziehung. 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 das alles?

  • Beim Schreiben von Formeln müssen Sie berücksichtigen, dass die Liste der Aktivitätstabellen nicht festgelegt ist, und Sie können Ihre eigenen erstellen. Die Formel muss eine Aktivitätstabelle angemessen verarbeiten, die Sie nicht erwartet haben.
  • Aktivitätsaufgaben und Aktivitäten stehen in einer Eins-zu-viele-Beziehung. Sie können ganz einfach alle Faxe anfordern, die sich auf ein Konto beziehen.

Um dieses Konzept in der App zu untersuchen:

  1. Fügen Sie einen weiteren Bildschirm hinzu.

    Einen leeren Bildschirm einfügen

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

  3. Setzen Sie auf dem Register Eigenschaften auf der rechten Seite des Bildschirms Items auf Konten.

    Elemente zu Konten im Eigenschaftenbereich festlegen

  4. Setzen Sie das Layout des Katalogs auf Titel, und setzen Sie dann das Titelfeld auf Kontoname.

    Layout auf Titel setzen für Steuerelemente des Katalogs im Eigenschaftenbereich

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

  6. Setzen Sie die Eigenschaft Items des neuen Katalogs auf Gallery2.Selected.Faxes.

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

    Legen Sie die Items-Eigenschaft des Katalogs fest, der Faxe anzeigt

  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).

    Titel auf Betreff-Feld setzen

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

Animation, die die Auswahl im Katalog der Konten zeigt, der die Liste der Faxe steuert

Aktivitätstabelle

Wie im vorigen 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 Faxe, E-Mail-Nachrichten, Telefonanrufe und andere Interaktionen.

Für das letztere Szenario verwenden Sie die Aktivität Tabelle. 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 mit der Aktivitätstabelle

Die Tabelle Aktivität ist etwas Besonderes. Immer wenn Sie einen Datensatz zur Tabelle Faxe hinzufügen, erstellt das System auch einen Datensatz in der Tabelle Aktivität mit den Spalten, die allen Aktivitätstabellen gemeinsam sind. Von diesen Spalten ist Thema eine der interessantesten.

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

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

Aufzeichnungen kommen von der Aktivität Tabelle, aber Sie können trotzdem die IsType Funktion nutzen, um zu erkennen, um welche Art von Aktivität es sich handelt. Bevor Sie IsType mit einem Tabellentyp verwenden, müssen Sie erneut die erforderliche Datenquelle hinzufügen.

Datenbereich mit allen Tabellen, 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"
)

Texteigenschaft auf Formel setzen, um Informationen für Faxe, Telefonanrufe und andere Aktivitäten anzuzeigen.

Sie können auch AsType verwenden, um auf die Felder des spezifischen Typs zuzugreifen. Diese Formel bestimmt beispielsweise die Art jeder Aktivität und zeigt bei Telefonanrufen die Telefonnummer und die Anrufrichtung aus der Telefonnummern Tabelle:

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 mehr Informationen für einen Telefonanruf

Als Ergebnis zeigt die App eine vollständige Liste der Aktivitäten an. Das Feld Subject erscheint für alle Arten von Aktivitäten, unabhängig davon, ob sie in der Formel berücksichtigt werden oder nicht. Für Ihnen bekannte Aktivitätstypen können Sie deren Typennamen und typspezifische Informationen zu jeder Aktivität anzeigen lassen.

Ausgefüllter Bildschirm mit Informationen zu verschiedenen 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 Anhänge aktivieren.

Aktivieren von Anhängen und Notizen beim Erstellen einer Tabelle

Wenn Sie das Kontrollkästchen zum Aktivieren von Anhängen aktivieren, erstellen Sie eine Betreff Beziehung zu den Anmerkungen Tabelle, wie diese Grafik für die Konten Tabelle:

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

Zum Zeitpunkt dieses Schreibens ist die Betreff Suche nicht verfügbar für die Tabelle Anmerkungen. Sie können nicht basierend auf der Betreff Spalte lesen oder filtern, und Sie können die Spalte nicht mithilfe von 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 Relate verwenden, um eine Notiz zur Tabelle Notes eines Datensatzes hinzuzufügen, aber die Notiz muß, wie in diesem Beispiel, zuerst angelegt werden:

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

Aktivitätsparteien

Zum Zeitpunkt dieses Artikels unterstützen Canvas Apps keine Aktivitätsparteien.

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).