De functies AsType en IsType

Van toepassing op: Canvas-apps Modelgestuurde apps Power Platform CLI

Controleert een recordverwijzing voor een specifiek tabeltype (IsType) en behandelt de verwijzing als een specifiek type (AsType).

Notitie

PAC CLI pac power-fx-opdrachten ondersteunen IsType niet.

Omschrijving

Lees Recordverwijzingen en polymorfe zoekopdrachten voor een uitgebreidere introductie en meer details.

Een opzoekveld verwijst meestal naar records in een bepaalde tabel. Omdat het tabeltype goed ingeburgerd is, kunt u de velden van de opzoekactie openen met behulp van een eenvoudige puntnotatie. Bijvoorbeeld First( Accounts ).'Primaire contactpersoon'.'Volledige naam' gaat van de tabel Accounts naar de record Primaire contactpersoon in de tabel Contactpersonen en extraheert het veld Volledige naam.

Microsoft Dataverse ondersteunt ook polymorfe opzoekvelden, die kunnen verwijzen naar records uit een reeks tabellen, zoals in deze voorbeelden.

Opzoekveld Kan verwijzen naar
Eigenaar Gebruikers of Teams
Klanten Accounts of Contactpersonen
Betreft Accounts, Contactpersonen, Kennisartikelen, enzovoort.

Gebruik in canvas-appformules recordreferenties om met polymorfe zoekopdrachten te werken. Omdat een recordverwijzing naar verschillende tabellen kan verwijzen, weet u niet welke velden beschikbaar zijn wanneer u een formule schrijft. De notatie Record.Field is niet beschikbaar. Die formules moeten zich aanpassen aan de records die de app tegenkomt wanneer deze wordt uitgevoerd.

De functie IsType test of een recordverwijzing verwijst naar een specifiek tabeltype. De functie retourneert een booleaanse waarde: TRUE of FALSE.

De functie AsType behandelt een recordverwijzing als een specifiek tabeltype, soms aangeduid als casting. U kunt het resultaat gebruiken alsof het een record van de tabel is en opnieuw de notatie Record.Veld gebruiken om toegang te krijgen tot alle velden van deze record. Er treedt een fout op als de verwijzing niet van het specifieke type is.

Gebruik deze functies samen om eerst het tabeltype van een record te testen en behandel het dan als een record van dat type zodat de velden beschikbaar zijn:

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

U hebt deze functies alleen nodig als u de velden van een recordverwijzing wilt gebruiken. U kunt recordverwijzingen bijvoorbeeld gebruiken in de functie Filter zonder IsType of AsType:

Filter( Accounts, Owner = First( Users ) )

Evenzo kunt u recordverwijzingen gebruiken met de functie Patch:

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

Indien gebruikt in een recordcontext, zoals binnen een besturingselement Gallery of Edit form, moet u mogelijk de algemene ondubbelzinnigheidsoperator gebruiken om naar het tabeltype te verwijzen. Deze formule zou bijvoorbeeld effectief zijn voor een galerie waarin een lijst wordt weergegeven van contacten waarbij Bedrijfsnaam een zoekopdracht voor Klant:

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

Voor beide functies geeft u het type op via de naam van de gegevensbron die aan de tabel is gekoppeld. De formule werkt alleen als u ook een gegevensbron aan de app toevoegt voor alle typen die u wilt testen of casten. U moet bijvoorbeeld de tabel Gebruikers toevoegen als een gegevensbron als u IsType en AsType wilt gebruiken met een opzoekveld Eigenaar en records uit die tabel. U kunt alleen de gegevensbronnen toevoegen die u daadwerkelijk in uw app gebruikt. U hoeft niet alle tabellen toe te voegen waarnaar een opzoekactie zou kunnen verwijzen.

Als de recordverwijzing leeg is, retourneert IsType FALSE en retourneert AsTypeleeg. Alle velden van een lege record zijn leeg.

Syntaxis

AsType( RecordReference, TabelType )

  • RecordReference: vereist. Een recordverwijzing, vaak een opzoekveld dat kan verwijzen naar een record in meerdere tabellen.
  • TableType: vereist. De specifieke tabel waarnaar de record moet worden gecast.

IsType( RecordReference, TableType )

  • RecordReference: vereist. Een recordverwijzing, vaak een opzoekveld dat kan verwijzen naar een record in meerdere tabellen.
  • TableType: vereist. De specifieke tabel waarvoor u wilt testen.

Voorbeeld

Recordverwijzingen en polymorfe zoekopdrachten bevat uitgebreide voorbeelden.

  1. Maak een lege canvas-app voor tablets.

  2. Selecteer in het linkerdeelvenster de optie Gegevens>Gegevens toevoegen. Voeg vervolgens de tabellen Accounts en Contactpersonen toe.

    Lege app met twee gegevensbronnen: accounts en contactpersonen.

  3. Selecteer in het linkerdeelvenster + (Invoegen) >Lay-out>Lege verticale galerie.

    Een besturingselement Gallerie invoegen met een lege verticale lay-out.

  4. Selecteer Verbinding maken met gegevens en selecteer vervolgens Contactpersonen als de gegevensbron.

  5. Stel de lay-out van de galerie in op Titel en ondertitel.

    De lay-outkiezer in het eigenschappenvenster openen

    De lay-out instellen op Titel en ondertitel

  6. In het deelvenster Gegevens opent u de lijst Titel 1 en selecteert u Voor- en achternaam.

    Waarde van Titel instellen

  7. Selecteer het labelbesturingselement Subtitel 1.

    Waarde van subtitel instellen

  8. Stel de eigenschap Text van Subtitel 1 in op deze formule:

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

    Het scherm is nu compleet met accounts en contacten die in de galerie zijn vermengd

    De ondertitel in de galerie toont deze waarden:

    • "--" als Bedrijfsnaamleeg is.
    • "Account: " en dan het veld Accountnaam uit de tabel Accounts als het veld Bedrijfsnaam verwijst naar een account.
    • "Contactpersoon: " en dan het veld Volledige naam uit de tabel Contactpersonen als het veld Bedrijfsnaam verwijst naar een contactpersoon.

    Uw resultaten kunnen verschillen van die in dit onderwerp omdat er voorbeeldgegevens worden gebruikt die zijn gewijzigd om aanvullende soorten resultaten weer te geven.