Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
Melden Sie sich bei Power Apps an.
Wählen Sie in der linken Bereichsleiste ">" aus.
Wählen Sie in der Liste der Tabellen "Konto" aus.
Öffnen Sie in der oberen rechten Ecke die Filterliste (die standardmäßig auf "Standard " festgelegt ist), und wählen Sie dann "Alle" aus.
Scrollen Sie nach unten, bis die Spalte "Besitzer" angezeigt wird.
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:
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:
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' )
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:
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
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 )
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.
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):
-
Sichtbar:
Radio1.Selected.Value = "Users"
-
Sichtbar:
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.
-
Items:
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) )
Mit diesen Änderungen können Sie alle Datensätze anzeigen oder sie basierend auf einem Benutzer oder einem Team filtern:
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.
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:
Wählen Sie im Bereich Baumansicht gleichzeitig das Steuerelement Optionsfeld und die beiden Steuerelemente Kombinationsfeld aus.
Wählen Sie im Ellipsenmenü die Option "Diese Elemente kopieren" aus.
Wählen Sie im gleichen Menü "Einfügen" aus.
Verschieben Sie die kopierten Steuerelemente rechts neben der Galerie.
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" )
- Artikel:
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 Schaltflächen-Steuerelement ein, verschieben Sie es unter dem Kombinationsfeld-Steuerelement , und legen Sie dann die Texteigenschaft der Schaltfläche auf
"Patch Owner".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 ) } )
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:
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.
Fügen Sie ein Bearbeitungsformular-Steuerelement ein, und ändern Sie dann die Größe, und verschieben Sie es in die untere rechte Ecke.
Öffnen Sie auf der Registerkarte "Eigenschaften " auf der rechten Seite des Bildschirms die Liste der Datenquellen , und wählen Sie dann "Konten" aus.
Legen Sie die Item-Eigenschaft des Formulars auf
Gallery1.Selected.
Wählen Sie auf der Registerkarte "Eigenschaften " auf der rechten Seite des Bildschirms "Felder bearbeiten" aus.
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 mithilfe der Schaltfläche " Patch " ändern, zeigt das Formularsteuerelement auch diese Änderung an.
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.
Sie können einer Tabelle weitere Kunden-Nachschlagespalten hinzufügen, indem Sie den Datentyp "Kunde" für eine neue Spalte auswählen.
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).
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)
)
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 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.
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'
)
Mit diesen Änderungen können Sie das Feld " Firmenname " in der Tabelle " Kontakte " anzeigen und ändern.
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:
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',
""
)
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
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.
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").
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.
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 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:
Fügen Sie einen anderen Bildschirm hinzu.
Fügen Sie ein Katalogsteuerelement ein, ändern Sie dessen Größe, und verschieben Sie es dann auf die linke Seite des Bildschirms.
Legen Sie auf der Registerkarte "Eigenschaften" rechts auf dem Bildschirm die Elemente der Galerie auf "Konten" fest.
Legen Sie das Layout des Katalogs auf "Titel" fest, und legen Sie dann das Titelfeld auf "Kontoname" fest.
Fügen Sie einen zweiten Katalog hinzu, ändern Sie dessen Größe, und verschieben Sie ihn dann auf die rechte Seite des Bildschirms.
Legen Sie die Eigenschaft Items der neuen Galerie auf
Gallery2.Selected.Faxesfest.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 Faxe für dieses Konto angezeigt.
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.
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.
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.
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 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"
)
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.
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.
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:
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.