Freigeben über


AsType und IsType Funktionen

Funktion Gilt für:
AsType Canvas-Apps Copilot Studio Modellgesteuerte Apps Power Platform CLI Dataverse Funktionen Power Pages
IsType Canvas-Apps Copilot Studio Modellgesteuerte Apps Dataverse-Funktionen Power Pages

Überprüft, ob ein Datensatzverweis ein bestimmter Tabellentyp (IsType) ist und den Verweis als dieser Typ (AsType) behandelt.

Anmerkung

PAC CLI pac power-fx-Befehle unterstützen IsTypenicht .

Beschreibung

Die AsType Funktionen IsType können verwendet werden, um Datensatzverweise (z. B. polymorphe Nachschlagevorgänge in Dataverse) und dynamische Werte in typografische Werte zu konvertieren, die direkt verwendet werden können.

Referenzen aufzeichnen

Lesen Sie Grundlegendes zu Datensatzreferenzen und polymorphen Suchvorgängen für eine breitere Einführung und weitere Details.

Ein Nachschlagefeld bezieht sich normalerweise auf Datensätze in einer bestimmten Tabelle. Da der Tabellentyp gut etabliert ist, greifen Sie mit einer einfachen Punktnotation auf die Felder der Suche zu. Beispielsweise führt First( Kunden). Primärer Kontakt. Vollständiger Name von der Tabelle Kunden zum Primären Kontaktdatensatz in der Tabelle Kontakte und extrahiert das Feld Vollständiger Name.

Microsoft Dataverse unterstützt auch polymorphe Nachschlagefelder, die auf Datensätze aus einer Reihe von Tabellen verweisen können, wie in diesen Beispielen.

Nachschlagefeld Kann sich beziehen auf
Bes. Users oder Teams
Kunde Accounts oder Contacts
Betreff Konten, Kontakte, Wissensartikel usw.

Verwenden Sie in Canvas-App-Formeln Datensatzreferenzen, um mit polymorphen Suchen zu arbeiten. Da ein Datensatzverweis auf verschiedene Tabellen verweisen kann, können Sie nicht wissen, welche Felder zur Laufzeit verfügbar sind, wenn Sie eine Formel schreiben. Die Notation Record.Field ist nicht verfügbar. Diese Formeln müssen sich an die Datensätze anpassen, auf die die App bei der Ausführung trifft.

Die IsType Funktion überprüft, ob ein Datensatzverweis auf einen bestimmten Tabellentyp verweist. Die Funktion gibt einen Booleschen Wert „TRUE“ oder „FALSE“ zurück.

Die AsType Funktion behandelt einen Datensatzverweis als einen bestimmten Tabellentyp, auch als Umwandlung bezeichnet. Sie verwenden das Ergebnis, als ob es sich um einen Datensatz der Tabelle handelt, und verwenden Sie die Record.Field-Notation , um auf alle Felder dieses Datensatzes zuzugreifen. Wenn der Verweis nicht vom spezifischen Typ ist, tritt ein Fehler auf.

Verwenden Sie diese Funktionen zusammen, um zuerst den Tabellentyp eines Datensatzes zu überprüfen und dann als Datensatz dieses Typs zu behandeln, damit die Felder verfügbar sind:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

Sie benötigen diese Funktionen nur, wenn Sie auf die Felder eines Datensatzverweises zugreifen. Beispielsweise verwenden Sie Datensatzverweise in der Filterfunktion ohne IsType oder AsType:

Filter( Accounts, Owner = First( Users ) )

Ebenso können Sie Datensatzreferenzen mit der Patch-Funktion verwenden:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

Wenn Sie diese Funktionen in einem Datensatzkontext verwenden, z. B. innerhalb eines Katalog - oder Bearbeitungsformularsteuerelements , benötigen Sie möglicherweise den globalen Mehrdeutigkeitsoperator , um auf den Tabellentyp zu verweisen. Diese Formel funktioniert z. B. für einen Katalog, in dem eine Liste der Kontakte angezeigt wird, bei denen "Firmenname " eine Kundensuche ist:

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Geben Sie für beide Funktionen den Typ mithilfe des Namens der Datenquelle an, die mit der Tabelle verbunden ist. Damit die Formel funktioniert, fügen Sie der App eine Datenquelle für alle Typen hinzu, die Sie überprüfen oder umwandeln möchten. Fügen Sie beispielsweise die Tabelle "Benutzer" als Datenquelle hinzu, wenn Sie eine Besitzersuche und Datensätze aus dieser Tabelle verwenden IsTypeAsType möchten. Fügen Sie nur die Datenquellen hinzu, die Sie in Ihrer App verwenden; Sie müssen nicht alle Tabellen hinzufügen, auf die ein Nachschlagevorgang verweisen kann.

Wenn der Datensatzverweis leer ist, IsType wird FALSE zurückgegeben und AsTypeein Leerzeichen zurückgegeben. Alle Felder eines leeren Datensatzes sind ebenfalls leer.

Dynamische Werte

Wichtig

Ein dynamischer Wert aus einer Web-API oder der [ParseJSON-Funktion ] muss in einen bestimmten typierten Wert konvertiert werden, bevor Sie ihn in Power Fx verwenden können. Hier sind einige Optionen:

  1. Geben Sie das Feld implizit an der Stelle ein, an der Sie es verwenden. Ein Objekt wird beispielsweise in eine Zahl konvertiert, wenn Sie es mit dem + Operator verwenden, wenn es in eine Zahl konvertiert werden kann. Diese Option kann zu unerwarteten Konvertierungen führen und datensätze und Tabellen als Ganzes nicht konvertieren.
  2. Typisieren Sie explizit jedes Feld einzeln mit Dezimal, Text, DateTime, GUID und anderen Typkonstruktorfunktionen. Diese Option ist die invasivste Methode für Ihre Formeln, da Sie jedes Feld separat ausführen müssen.
  3. Geben Sie JSON explizit mit dem zweiten Argument der ParseJSON-Funktion ein. Diese Option ist einfach und verhindert, dass der dynamische Wert benötigt wird.
  4. Geben Sie einen dynamischen Wert explizit mithilfe der AsType Funktion ein. Sie können den Typ auch überprüfen, bevor Sie die Konvertierung mit der IsType Funktion ausprobieren.

Syntax

AsType( RecordReference, TableType )

  • RecordReference: erforderlich. Ein Datensatzverweis, häufig ein Nachschlagefeld, das auf einen Datensatz in mehreren Tabellen verweist.
  • Tabellentyp – Erforderlich. Die spezifische Tabelle zum Umwandeln des Datensatzes in.

AsType( DynamicValue, TypeSpecification )

  • DynamicValue – Erforderlich. Ein dynamischer Wert aus der ParseJSON-Funktion oder dem API-Aufruf.
  • TypeSpecification: erforderlich. Ein Typname oder eine Typspezifikation, die Sie mit der Type-Funktion definieren.

IsType( RecordReference, TableType )

  • RecordReference: erforderlich. Eine Datensatzreferenz, oft ein Nachschlagefeld, das auf einen Datensatz in einer von mehreren Tabellen verweisen kann.
  • Tabellentyp – Erforderlich. Die spezifische Tabelle, auf die getestet werden soll.

IsType( DynamicValue, TypeSpecification )

  • DynamicValue – Erforderlich. Ein dynamischer Wert aus der ParseJSON-Funktion oder einem API-Aufruf.
  • TypeSpecification: erforderlich. Ein Typname oder eine Typspezifikation, die mit der Type-Funktion definiert wird.

Beispiele

Referenzen aufzeichnen

Grundlegendes zu Datensatzreferenzen und polymorphen Suchvorgängen enthält umfangreiche Beispiele.

  1. Erstellen Sie eine leere Canvas-App für Tablets.

  2. Wählen Sie im linken Bereich "Daten hinzufügen">Daten aus, und fügen Sie dann "Konten " und "Kontakte "-Tabellen hinzu.

    Leere App mit zwei Datenquellen: Konten und Kontakte

  3. Wählen Sie + im linken Bereich ">>" (Einfügen) aus.

    Einfügen eines Gallery-Steuerelements mit Leerzeichen vertikal-Layout

  4. Wählen Sie Mit Daten verbinden und wählen Sie dann Kontakte als Datenquelle.

  5. Legen Sie das Kataloglayout auf Titel und Untertitel fest.

    Öffnen der Layoutauswahl im Eigenschaftenbereich

    Festlegen des Layouts auf Titel und Untertitel

  6. Öffnen Sie im Bereich Daten die Liste Title1 und wählen Sie dann Vollständiger Name aus.

    Titelwert einstellen

  7. Wählen Sie das Label-Steuerelement Subtitle1 aus.

    Untertitelwert einstellen

  8. Legen Sie die Text-Eigenschaft von Subtitle1 auf diese Formel fest:

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

    Der Bildschirm ist nun vollständig und zeigt Konten und Kontakte an, die im Katalog gemischt sind

    Der Untertitel im Katalog zeigt diese Werte:

    • "--" wenn 'Name des Unternehmens'leer ist.
    • "Konto: " und das Feld " Kontoname " aus der Tabelle "Konten ", wenn sich das Feld "Firmenname " auf ein Konto bezieht.
    • "Kontakt: " und das Feld "Vollständiger Name " aus der Tabelle " Kontakte ", wenn sich das Feld "Firmenname " auf einen Kontakt bezieht.

    Ihre Ergebnisse können unterschiedlich sein, da die Beispieldaten geändert werden können, um weitere Arten von Ergebnissen anzuzeigen.

Dynamische Werte

Die folgenden Beispiele zeigen einen einfachen JSON-Eintrag, AsTypeder auf verschiedene Arten von ParseJSON und IsType in der Pac CLI Power Fx REPL interpretiert wird.

In diesem ersten Beispiel werden keine Typinformationen für ParseJSON bereitgestellt, sodass ein dynamischer Wert zurückgegeben wird.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>

Das Feld wird implizit in eine Zahl konvertiert, wenn es in einem numerischen Kontext verwendet wird.

>> 1 + rec.a
2

Alternativ wird in diesem Beispiel der Datensatz mit dem zweiten Argument von ParseJSON explizit in einen typisierten Power Fx-Datensatz konvertiert.

>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}

And another alternative, this example explicitly converts the record to a typed Power Fx record using AsType.

>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

Wenn Sie nicht sicher sind, testet dieses Beispiel den Typ vor dem Konvertieren mit der IsType Funktion.

>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true