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:
Melden Sie sich bei Power Apps an.
Wählen Sie im linken Bereich Daten > Tabellen.
Wählen Sie in der Liste der Tabellen Konto.
Öffnen Sie in der oberen rechten Ecke die Filterliste (die standardmäßig auf Standard eingestellt ist) und wählen Sie dann Alle.
Scrollen Sie nach unten, bis die Spalte Besitzer angezeigt wird.
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:
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:
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 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:
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
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 )
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.
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
- Items:
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"
- Visible:
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.
- Items:
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) )
Mit diesen Änderungen können Sie alle Datensätze anzeigen oder sie entweder nach einem Benutzer oder einem Team filtern:
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.
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:
Wählen Sie im Bereich Baumansicht gleichzeitig das Steuerelement Optionsfeld und die beiden Steuerelemente Kombinationsfeld aus.
Wählen Sie im Auslassungspunkte-Menü Kopieren Sie diese Elemente.
Wählen Sie im selben Menü Einfügen.
Verschieben Sie die kopierten Steuerelemente auf die rechte Seite des Katalogs.
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" )
- Elemente:
Wählen Sie im Optionsfeld Steuerelement Benutzer, so dass das Steuerelement Kombinationsfeld, das die Benutzer auflistet, sichtbar ist.
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() )
Wählen Sie im Bereich Optionsfeld Steuerelement Teams, so dass das Steuerelement Kombinationsfeld, das die Teams auflistet, sichtbar ist.
Wählen Sie das Steuerelement Optionsfeld, um die Auswahl aus dem jetzt nicht mehr sichtbaren Combo-Box Steuerelement für Benutzer zu entfernen.
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() )
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"
.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 ) } )
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:
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.
Fügen Sie ein Steuerelement Formular bearbeiten ein, ändern Sie seine Größe und verschieben Sie es dann in die untere rechte Ecke.
Öffnen Sie auf der Registerkarte Eigenschaften auf der rechten Seite des Bildschirms die Liste Datenquelle und wählen Sie dann Konten.
Setzen Sie die Eigenschaft Element des Formulars auf
Gallery1.Selected
.Wählen Sie auf der Registerkarte Eigenschaften auf der rechten Seite des Bildschirms Felder bearbeiten.
Wählen Sie im Bereich Felder die Auslassungspunkte und wählen Sie dann Hinzufügen einer benutzerdefinierten Karte.
Die neue Karte erscheint unten im Steuerelement des Formulars.
Ändern Sie die Größe der Karte nach Bedarf, um den gesamten Text anzuzeigen.
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' )
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.
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.
Sie können weitere Kunden Suchspalten in einer Tabelle durch Auswahl des Kunde Datentyps für eine neue Spalte hinzufügen.
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).
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)
)
Zwei wichtige Unterschiede zwischen Kunde und Besitzer erfordern eine Aktualisierung der Formeln innerhalb des Katalogs und des Formulars:
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.
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'
)
Mit diesen Änderungen können Sie das Feld Name der Firma in der Tabelle Kontakte ändern.
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:
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',
""
)
Nachdem Sie diese Änderungen vorgenommen haben, arbeiten Sie mit der Nachschlagefunktion Regarding genauso wie mit den Nachschlagefunktionen Owner und Customer.
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.
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).
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.
Wenn Sie die Beziehungen für die Tabelle Konten zeigen, werden alle Tabellen, die eine Quelle von einem Betreff Suchfeld sein könnten, angezeigt.
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:
Fügen Sie einen weiteren Bildschirm hinzu.
Fügen Sie ein Steuerelement des Katalogs ein, ändern Sie seine Größe und verschieben Sie es dann auf die linke Seite des Bildschirms.
Setzen Sie auf dem Register Eigenschaften auf der rechten Seite des Bildschirms Items auf Konten.
Setzen Sie das Layout des Katalogs auf Titel, und setzen Sie dann das Titelfeld auf Kontoname.
Fügen Sie einen zweiten Katalog hinzu, ändern Sie seine Größe und verschieben Sie ihn dann auf die rechte Seite des Bildschirms.
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.
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).
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.
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.
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
.
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.
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"
)
.
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"
)
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.
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.
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:
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).