Delen via


Recordverwijzingen en polymorfe zoekopdrachten in canvas-apps

Bij het schrijven van een onderzoekswerkstuk op school voegde u waarschijnlijk aan het eind een lijst met uw verwijzingen toe. U voegde geen kopie toe van het daadwerkelijke achtergrondmateriaal dat u hebt gebruikt, maar eerder een webkoppeling, boektitel en auteur of andere informatie zodat iemand de oorspronkelijke bron kon achterhalen. U gebruikte verschillende typen bronnen in een enkele lijst, krantenartikelen naast audio-opnamen, elk met hun eigen specifieke details voor een correcte bronvermelding. Zo bevatten bijvoorbeeld Wikipedia-artikelen vaak een lange lijst met verwijzingen.

In canvas-apps wordt vaak gewerkt met kopieën van records die zijn gedownload vanuit gegevensbronnen. U gebruikt de functies LookUp en Filter, en van het besturingselement Galerij gebruikt u de eigenschap Selected om een gewenst specifiek record te identificeren. Alle records van Filter of Geselecteerd zijn van hetzelfde tabeltype, dus u kunt velden met een eenvoudige .Veld-notatie gebruiken. Deze kopieën bevatten vaak verwijzingsinformatie zodat u de functie Patch kunt gebruiken om de oorspronkelijke bron bij te werken.

Canvas-apps ondersteunen ook recordverwijzingen. Net als een verwijzing in een onderzoekswerkstuk verwijst een recordverwijzing naar een record zonder een volledige kopie ervan op te nemen. Zo'n verwijzing kan verwijzen naar een record in elke tabel. Net als verwijzingen naar onderzoeksverslagen kunt u records uit verschillende tabellen in één kolom combineren.

Veel bewerkingen op recordverwijzingen zijn identiek aan het werken met records. U kunt recordverwijzingen met elkaar en met volledige records vergelijken. U kunt de waarde van een recordverwijzing instellen met de functie Patch, net zoals u een zoekopdracht zou uitvoeren met een volledige record.

Er is één belangrijk gebruiksverschil: u kunt de velden van een recordverwijzing niet rechtstreeks openen zonder eerst vast te stellen naar welke tabel deze verwijzen. Dit komt omdat canvas-apps vereisen dat alle typen bekend zijn wanneer u formules schrijft. Omdat u het type recordverwijzing pas weet wanneer de app actief is, kunt u de eenvoudige .Veld-notatie niet direct gebruiken. U moet eerst dynamisch het tabeltype bepalen met de functie IsType en vervolgens de .Veld-notatie gebruiken voor het resultaat van de functie AsType.

Tabeltype: verwijst naar het schema van elke record in een tabel. Elke tabel heeft een unieke set velden met verschillende namen en gegevenstypen. Elke record van de tabel neemt die structuur over. Twee records hebben hetzelfde tabeltype als ze uit dezelfde tabel komen.

Notitie

U kunt uit veel verschillende connectors kiezen om verbinding te maken met verschillende typen gegevensbronnen voor canvas-apps. Wanneer u echter met canvas-apps binnen Power Apps Studio werkt, wordt naar kolommen in Microsoft Dataverse verwezen als velden vergelijkbaar met alle andere gegevensbronnen. Kolom wordt alleen gebruikt bij verwijzing naar een kolom binnen Dataverse. Meer informatie: Gewijzigde terminologie in Dataverse

Polymorfe zoekopdrachten

Microsoft Dataverse ondersteunt relaties tussen records. Elke record in de tabel Accounts heeft een opzoekkolom met de naam Primaire contactpersoon. Dit is een zoekopdracht naar de tabel Contactpersonen. De zoekopdracht kan alleen verwijzen naar een record in Contactpersonen en kan niet verwijzen naar een record in bijvoorbeeld de tabel Teams. Dat laatste detail is belangrijk omdat u altijd weet welke kolommen beschikbaar zijn voor de zoekopdracht.

Dataverse ondersteunt ook polymorfe zoekopdrachten die kunnen verwijzen naar een record uit elke tabel in een set. Bijvoorbeeld de kolom Eigenaar kan verwijzen naar een record in de tabel Gebruikers of de tabel Teams. Dezelfde opzoekkolom in verschillende records kan verwijzen naar records in verschillende tabellen. In dit geval weet u niet altijd welke kolommen beschikbaar zullen zijn.

Canvas-recordverwijzingen zijn ontworpen voor het werken met polymorfe zoekopdrachten in Dataverse. U kunt ook buiten deze context recordverwijzingen gebruiken, hetgeen het verschil tussen de twee concepten aangeeft.

In de volgende sectie gaat u deze concepten verkennen door te werken met de zoekopdracht Eigenaar.

De kolommen van een recordeigenaar weergeven

Elke tabel in Dataverse omvat een Eigenaar-kolom. Deze kolom kan niet worden verwijderd, u kunt geen andere kolom toevoegen en er is altijd een waarde vereist.

Ga als volgt te werk om die kolom in de tabel Account weer te geven:

  1. Meld u aan bij Power Apps.

  2. Selecteer op de balk van het linkerdeelvenster Gegevens > Tabellen.

  3. Selecteer Account in de lijst met tabellen.

  4. Open in de rechterbovenhoek de filterlijst (die standaard is ingesteld op Standaard) en selecteer vervolgens Alles.

  5. Schuif naar beneden tot de kolom Eigenaar verschijnt.

    Kolom Eigenaar in tabel Account

Deze opzoekkolom kan verwijzen naar een record in de tabel Teams of de tabel Gebruikers. Niet elke record in deze tabellen heeft toestemming om een Eigenaar te zijn. Controleer de ondersteunde rollen als u een probleem tegenkomt.

Deze afbeelding toont een eenvoudige galerie van Accounts, waarin de tabel Accounts als gegevensbron is toegevoegd aan de app:

Accounts weergegeven in een besturingselement Galerie

Belangrijk

In dit onderwerp bevatten de afbeeldingen enkele namen en andere waarden die geen deel uitmaken van de voorbeeldgegevens die worden meegeleverd met Dataverse. De stappen laten op nauwkeurige wijze zien hoe u bedieningselementen voor een bepaald resultaat configureert, maar uw ervaring zal variëren op basis van de gegevens voor uw organisatie.

Als ude eigenaar van elk account in de galerie wilt laten zien, komt u misschien in de verleiding om de formule ThisItem.Owner.Name te gebruiken. Het naamveld in de tabel Team is Teamnaam en het naamveld in de tabel Gebruiker is Volledige naam. De app kan pas weten met welk type zoekopdracht u werkt als u de app uitvoert, en dit kan variëren tussen records in de tabel Accounts.

U hebt een formule nodig die zich aan deze variantie kan aanpassen. U moet ook de gegevensbronnen toevoegen voor de tabeltypen die Eigenaar kunnen zijn (in dit geval Gebruikers en Teams). Voeg deze drie gegevensbronnen toe aan uw app:

Tabellen Accounts, Teams en Gebruikers in het gegevensdeelvenster

Als deze gegevensbronnen aanwezig zijn, gebruikt u deze formule om de naam van een gebruiker of een team weer te geven:

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

Accounts die worden weergegeven in een besturingselement Galerie met het veld Eigenaar weergegeven

In deze formule wordt met de functie IsType het veld Eigenaar getest ten opzichte van de tabel Teams. Als het veld van dat tabeltype is, wordt het met de functie AsType geconverteerd naar Team-record. Op dit punt hebt u toegang tot alle velden van de tabel Teams, zoals Teamnaam, met de .Veld-notatie. Als IsType bepaalt dat de Eigenaar geen record in de tabel Teams is, moet dat veld een record zijn in de tabel Gebruikers omdat het veld Eigenaar vereist is (kan niet leeg zijn).

Als u velden van een recordverwijzing wilt gebruiken, moet u eerst de functie AsType gebruiken om de velden naar een specifiek tabeltype te converteren. U kunt velden niet rechtstreeks openen vanuit het veld Eigenaar omdat het systeem niet weet welk tabeltype u wilt gebruiken.

Met de functie AsType wordt een fout geretourneerd als het veld Eigenaar niet overeenkomt met het tabeltype dat wordt aangevraagd. U kunt dus de functie IfError gebruiken om deze formule te vereenvoudigen. Schakel eerst de experimentele functie Foutbeheer op formuleniveau in:

Experimentele schakeloptie om foutbeheer op formuleniveau in te schakelen

Vervang vervolgens de vorige formule door deze:

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

Filter op basis van een eigenaar

Gefeliciteerd, u hebt het moeilijkste aspect van het werken met een recordverwijzing voltooid. Andere gebruiksscenario's zijn eenvoudiger omdat ze geen toegang hebben tot velden van de record. Neem als voorbeeld filtering, dat u in deze sectie gaat onderzoeken.

Voeg een besturingselement Keuzelijst met invoervak toe boven de galerie en stel deze eigenschappen van het nieuwe besturingselement in:

  • Items: Users
  • SelectMultiple: false

Besturingselement Keuzelijst met invoervak toegevoegd boven galerie met eigenschap Items ingesteld op Users

Als u de galerie wilt filteren op een specifieke gebruiker die wordt geselecteerd via deze keuzelijst met invoervak, stelt u eigenschap Items van de galerie in op deze formule:

Filter( Accounts, Owner = ComboBox1.Selected )

Gefilterde galerie op basis van waarde die is ingesteld in de keuzelijst met invoervak

Belangrijk

De instructies in dit onderwerp zijn nauwkeurig als u de stappen precies volgt. Elke formule die naar een besturingselement verwijst met de naam mislukt echter als het besturingselement een andere naam heeft. Als u een besturingselement van hetzelfde type verwijdert en toevoegt, verandert het nummer aan het einde van de naam van het besturingselement. Controleer voor elke formule die een fout vertoont of deze de juiste namen van alle besturingselementen bevat.

U hoeft IsType of AsType niet te gebruiken omdat u recordverwijzingen vergelijkt met andere recordverwijzingen of met volledige records. De app kent het tabeltype van ComboBox1.Selected omdat het is afgeleid van de tabel Gebruikers. Accounts waarvan de eigenaar een team is, komen niet overeen met het filtercriterium.

U kunt het wat ingewikkelder maken door filtering door een gebruiker of een team te ondersteunen.

  1. Maak ruimte aan de bovenkant van het scherm door het formaat van de galerie te wijzigen en de keuzelijst met invoervak te verplaatsen, een besturingselement Keuzerondjes in te voegen boven de galerie en deze eigenschappen in te stellen voor het nieuwe besturingselement:

    • Items: [ "All", "Users", "Teams" ]
    • Layout: Layout.Horizontal
  2. Stel voor het besturingselement Keuzelijst met invoervak deze eigenschap in (als de keuzelijst met invoervak verdwijnt, selecteert u Users in het besturingselement Keuzerondjes):

    • Visible: Radio1.Selected.Value = "Users"
  3. Kopieer en plak het besturingselement Keuzelijst met invoervak, plaats de kopie direct over het origineel en stel vervolgens deze eigenschappen in voor de kopie:

    • Items: Teams
    • Visible: Radio1.Selected.Value = "Teams"

    In de app wordt slechts één keuzelijst tegelijk weergegeven, afhankelijk van de status van het besturingselement Keuzerondjes. Omdat ze direct over elkaar heen zijn geplaatst, lijken ze hetzelfde besturingselement te zijn dat van inhoud verandert.

  4. Stel tot slot de eigenschap Items van het besturingselement Galerie in op deze formule:

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

    Gefilterde galerie met alle records of een specifieke gebruiker of team

Met deze wijzigingen kunt u alle records weergeven of filteren op basis van een gebruiker of een team:

Animatie met verschillende gefilterde resultaten op basis van het besturingselement Keuzerondjes en de keuzelijsten met invoervak

De formule is volledig delegeerbaar. Het gedeelte dat de waarden van de keuzerondjes vergelijkt, is een constante in alle records en wordt geëvalueerd voordat de rest van het filter naar Dataverse wordt verzonden.

Als u wilt filteren op het type eigenaar, kunt u de functie IsType gebruiken, maar het is nog niet delegeerbaar.

Filteren op type eigenaar met IsType

De eigenaar bijwerken met Patch

U kunt het veld Eigenaar op dezelfde manier bijwerken als elke andere zoekopdracht. U kunt als volgt de eigenaar van het momenteel geselecteerde account instellen op het eerste team:

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

Deze aanpak verschilt niet van een normale zoekopdracht omdat de app het type van First( Teams ) weet. Als u in plaats daarvan de eerste gebruiker wilt, vervangt u dat gedeelte door First( Users ). De functie Patch weet dat het veld Eigenaar kan worden ingesteld op een van deze twee tabeltypen.

U kunt deze mogelijkheid als volgt toevoegen aan de app:

  1. Selecteer in het deelvenster Structuurweergave tegelijkertijd het besturingselement Keuzerondjes en de twee besturingselementen Keuzelijst met invoervak.

  2. Selecteer in het beletseltekenmenu de optie Deze items kopiëren.

    Meerdere besturingselementen kopiëren met behulp van de structuurweergave

  3. Selecteer in hetzelfde menu de optie Plakken.

    Meerdere besturingselementen plakken met behulp van de structuurweergave

  4. Verplaats de gekopieerde besturingselementen naar de rechterkant van de galerie.

    Gekopieerde besturingselementen naar de rechterkant van de galerie verplaatst

  5. Selecteer het gekopieerde besturingselement Keuzerondjes en wijzig vervolgens de eigenschappen:

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

    De keuze Alles is uit het besturingselement Keuzerondjes verwijderd

  6. Selecteer in het besturingselement Keuzerondjes de optie Users zodat het besturingselement Keuzelijst met invoervak dat gebruikers bevat zichtbaar is.

  7. Selecteer het zichtbare besturingselement Keuzelijst met invoervak en stel vervolgens de eigenschap DefaultSelectedItems in op deze formule:

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Standaardeigenschap ingesteld voor de keuzelijst met invoervak Users

  8. Selecteer in het besturingselement Keuzerondjes de optie Teams zodat het besturingselement Keuzelijst met invoervak dat teams bevat zichtbaar is.

  9. Selecteer het besturingselement Keuzerondjes om de selectie weg te halen van het nu onzichtbare besturingselement Keuzelijst met invoervak voor gebruikers.

  10. Selecteer het zichtbare besturingselement Keuzelijst met invoervak voor teams en stel vervolgens de eigenschap DefaultSelectedItems hiervan in op deze formule:

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Standaardeigenschap ingesteld voor de keuzelijst met invoervak Teams

  11. Voeg een besturingselement Knop in, plaats dit onder het besturingselement Keuzelijst met invoervak en stel vervolgens de eigenschap Text van de knop in op "Patch Owner".

  12. Stel de eigenschap OnSelect van de knop in op deze formule:

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Formule ingesteld op besturingselement Knop

De gekopieerde besturingselementen Keuzerondjes en Keuzelijst met invoervak geven de eigenaar van het momenteel geselecteerde account aan in de galerie. Met dezelfde besturingselementen kunt u de eigenaar van het account instellen op elk team of elke gebruiker door de knop te selecteren:

Animatie van instellen van eigenaar met gebruiker of team

De eigenaar weeergeven door middel van een formulier

U kunt een veld Eigenaar binnen een formulier weergeven door een aangepaste kaart toe te voegen. Op het moment van schrijven kunt u de waarde van het veld niet wijzigen met een besturingselement Formulier.

  1. Voeg een besturingselement Formulier bewerken in en verplaats het naar de rechterbenedenhoek.

  2. Open op het tabblad Eigenschappen aan de rechterkant van het scherm de lijst Gegevensbron en selecteer vervolgens Accounts.

    Besturingselement Formulier met extra velden met lege waarden

  3. Stel de eigenschap Item van het formulier in op Gallery1.Selected.

    Besturingselement Formulier met velden toont die zijn gevuld vanuit het geselecteerde item in de galerie

  4. Selecteer op het tabblad Eigenschappen aan de rechterkant van het scherm de optie Velden bewerken.

  5. Selecteer in het deelvenster Velden het beletselteken en selecteer vervolgens Een aangepaste kaart toevoegen.

    Opdracht voor het toevoegen van een aangepaste kaart

    De nieuwe kaart verschijnt onder aan het besturingselement Formulier.

  6. Wijzig zo nodig het formaat van de kaart zodat alle tekst wordt weergegeven.

    Aangepaste kaart ingevoegd, leeg

  7. Voeg een besturingselement Label in de aangepaste kaart in en stel vervolgens de eigenschap Text van de label in op de formule die u in de galerie hebt gebruikt:

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

    Aangepaste kaart met het veld Eigenaar in een besturingselement Label

Voor elke selectie in de galerie worden er meer velden van het account, inclusief de eigenaar van de record, weergegeven in het formulier. Als u de eigenaar wijzigt met behulp van de knop Patch, toont het besturingselement Formulier die wijziging eveneens.

Animatie met het besturingselement Formulier dat reageert op veranderingen in de galere

De kolommen van een klant weergeven

In Dataverse is de opzoekkolom Klant een andere polymorfe zoekopdracht die erg lijkt op Eigenaar.

Eigenaar is beperkt tot één per tabel, maar tabellen kunnen nul, één of meer opzoekkolommen voor Klant bevatten. De systeemtabel Contactpersonen de kolom Bedrijfsnaam en dat is een opzoekkolom voor Klant.

Tabel met contactpersonen waarin de kolom Bedrijfsnaam wordt weergegeven als een gegevenstype Klant dat niet vereist is

U kunt meer Klant-opzoekkolommen toevoegen aan een tabel door het gegevenstype Klant voor een nieuwe kolom te selecteren.

Het gegevenstype Klant uit de lijst met gegevenstypen bij het maken van een kolom

Een Klant-opzoekveld kan verwijzen naar een record van de tabel Accounts of de tabel Contactpersonen. U gebruikt de functies IsType en AsType functies met deze tabellen. Het is dus nu een goed moment om deze toe te voegen als gegevensbronnen (u kunt Teams en Gebruikers laten staan).

Tabellen Accounts, Teams, Gebruikers en Contactpersonen in het deelvenster Gegevens

De behandeling van de velden Klant en Eigenaar is zo vergelijkbaar dat u de app letterlijk kunt kopiëren (Bestand > Opslaan als en vervolgens een andere naam opgeven) en deze eenvoudige vervangingen kunt uitvoeren:

Location Voorbeeld van Eigenaar Voorbeeld van Klant
Overal Eigenaar 'Klantnaam'
Overal Gebruikers Accounts
Overal Teams Contactpersonen
Eigenschap Items van galerie Accounts Contactpersonen
Eigenschap Items van formulier Accounts Contactpersonen
Het eerste argument van Patch
in de eigenschap OnSelect van de knop
Accounts Contactpersonen
Eigenschap Items van keuzerondjes Filter [ "Alle", "Gebruikers", "Teams" ] [ "Alle", "Accounts", "Contactpersonen" ]
Eigenschap Items van keuzerondjes Patch [ "Gebruikers", "Teams" ] [ "Accounts", "Contactpersonen" ]
Eigenschap Visible van keuzelijst met invoervak "Gebruikers" en "Teams" "Accounts" en "Contactpersonen"

Zo zou de nieuwe galerie bijvoorbeeld de volgende eigenschap Items moeten hebben:

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

Klantapp afgeleid van de app Eigenaar met eenvoudige wijzigingen aangebracht

Twee belangrijke verschillen tussen Klant en Eigenaar vereisen een update van de formules in de galerie en het formulier:

  1. Een-op-veel-relaties tussen Accounts en Contactpersonen hebben voorrang wanneer u op naam naar deze tabeltypen verwijst. In plaats van Accounts gebruikt u [@Accounts]; in plaats van Contactpersonen gebruikt u [@Contactpersonen]. Door gebruik te maken van de algemene ondubbelzinnigheidsoperator zorgt u ervoor dat u verwijst naar het tabeltype in IsType en AsType. Dit probleem bestaat alleen in de recordcontext van de besturingselementen Galerie en Formulier.

  2. Het veld Eigenaar moet een waarde hebben, maar velden Klant kunnen leeg zijn. Als u het juiste resultaat zonder een typenaam wilt weergeven, test u voor dit geval met de functie IsBlank en laat u in plaats daarvan een lege tekenreeks zien.

Beide wijzigingen worden aangebracht in dezelfde formule, die zowel op de aangepaste kaart in het formulier als in de eigenschap Text van het besturingselement Label van de galerie verschijnt:

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 van eigenschap Text van het besturingselement Label ondertitel in de galerie

Met deze wijzigingen kunt u het veld Bedrijfsnaam in de tabel Contactpersonen weergeven en wijzigen.

Animatie die laat zien hoe de andere besturingselementen en het formulier worden gewijzigd door het selecteren van een contactpersoon

Inzicht krijgen in de Betreffende-opzoekkolommen

De opzoekkolom Betreffende verschilt een beetje van de opzoekkolommen waarmee u al hebt gewerkt in dit onderwerp. U begint met het toepassen van de patronen die eerder in dit onderwerp werden beschreven, en daarna leert u andere trucs.

U kunt eenvoudig beginnen met de tabel Faxen. Deze tabel heeft een polymorfe Betreffende-opzoekkolom die kan verwijzen naar de tabellen Accounts, Contactpersonen en andere tabellen. U kunt de app voor Klanten nemen en deze wijzigen voor Faxen.

Location Voorbeeld van Klant Voorbeeld van Faxen
Overal 'Klantnaam' Betreft
Eigenschap Items van galerie Contactpersonen Faxen
Eigenschap Items van formulier Contactpersonen Faxen
Het eerste argument van Patch
in de eigenschap OnSelect van de knop
Contactpersonen Faxen

Nogmaals, je moet een gegevensbron toevoegen: deze keer voor Faxen. Selecteer op het tabblad Weergeven de optie Gegevensbronnen:

Deelvenster Gegevens waarin de tabellen Accounts, Teams, Gebruikers, Contactpersonen en Faxen worden weergegeven

Een belangrijk verschil voor Betreft is dat het niet beperkt is tot Accounts en Contactpersonen. In feite is de lijst met tabellen uitbreidbaar met aangepaste tabellen. Het grootste deel van de app kan ongewijzigd blijven, maar u moet de formule voor het label bijwerken in de galerie en het formulier:

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

Bijgewerkte eigenschap TExt voor het besturingselement Ondertitel voor zoekopdrachten Betreft

Nadat u deze wijzigingen hebt doorgevoerd, werkt u met de zoekopdracht Betreft op dezelfde wijze als met de zoekopdrachten Eigenaar en Klant.

Animatie die laat zien hoe de andere besturingselementen en het formulier worden gewijzigd door het selecteren van een item in de galerie

Relaties van het type Betreft

Het verschil tussen Betreft en Eigenaar en Klant is dat bij de eerste sprake is van een veel-op-één-relatie. Per definitie kunt u met een omgekeerde, een-op-veel-relatie First( Accounts ).Faxes schrijven .

Laten we de tabeldefinities bekijken. In Dataverse worden tabellen zoals Faxen, Taken, E-mails, Notities, Telefoongesprekken, Brieven en Chats worden aangeduid als activiteiten. U ook uw eigen aangepaste activiteitentabellen maken. Wanneer u een activiteitentabel bekijkt of maakt, verschijnen de instellingen onder Meer instellingen.

Instelling van activiteitentabel bij het maken van een tabel

Andere tabellen kunnen worden gerelateerd aan een activiteitentabel als ze zijn ingeschakeld als een activiteitentaak in de instellingen van de tabel. Accounts, Contactpersonen en vele andere standaardtabellen zijn zo aangeduid (nogmaals: onder Meer instellingen).

Instelling voor activiteitentaak bij het maken van een tabel

Alle activiteitentabellen en activiteitentaaktabellen hebben een impliciete relatie. Als u het filter wijzigt in Alle boven aan het scherm, selecteert u de tabel Faxen en selecteert u vervolgens het tabblad Relaties. Alle tabellen die een doel kunnen zijn van een Betreffende-zoekopdracht worden weergegeven.

Relaties van de tabel Faxen waarin veel-op-één-relaties van het type Betreffende worden weergegeven

Als u de relaties weergeeft voor de tabel Accounts, worden alle tabellen die een bron kunnen zijn van een Betreffende-opzoekveld weergegeven.

Relaties van de tabel Accounts waarin één-op-veel-relaties van het type Betreffende worden weergegeven

Wat houdt dit allemaal in?

  • Wanneer u formules schrijft, moet u er rekening mee houden dat de lijst met activiteitentabellen niet vaststaat en dat u uw eigen formules kunt maken. De formule moet op de juiste manier omgaan met een activiteitentabel die u niet had verwacht.
  • Activiteitstaken en -activiteiten hebben een een-op-veel-relatie. U kunt eenvoudig alle faxen opvragen die betrekking hebben op een account.

U kunt dit concept als volgt verkennen in de app:

  1. Voeg nog een scherm toe.

    Een leeg scherm invoegen

  2. Voeg een besturingselement Galerie in, wijzig het formaat en verplaats het vervolgens naar de linkerkant van het scherm.

  3. Ga naar het tabblad Eigenschappen aan de rechterkant van het scherm en stel de eigenschap Items van de galerie in op Accounts.

    Items instellen op Accounts in eigenschappenvenster

  4. Stel de lay-out van de galerie in op Titel en stel het titelveld in op Accountnaam.

    Lay-out instellen op Titel voor besturingselement Galerie in het eigenschappenvenster

  5. Voeg een tweede galerie toe, wijzig het formaat en verplaats het vervolgens naar de rechterkant van het scherm.

  6. Stel de eigenschap Items van de nieuwe galerie in op Gallery2.Selected.Faxes.

    Deze stap retourneert de gefilterde lijst met faxen voor een bepaald account.

    Stel de eigenschap Items in van de galerie met faxen

  7. Stel de lay-out van de galerie in op Titel en ondertitel en stel vervolgens het titelveld in om het veld Onderwerp weer te geven (dat is mogelijk onderwerp met kleine letters).

    Titel instellen op veld Onderwerp

Als u een item in de lijst met accounts selecteert, worden in de lijst met faxen alleen faxen voor dat account weergegeven.

Animatie met selectie in de accountgalerie die de lijst met faxen bevat

Activiteitentabel

Zoals de vorige sectie is beschreven, kunt u alle faxen voor een account tonen. U kunt echter ook alle activiteiten voor een account weergeven, inclusief faxen, e-mailberichten, telefoontjes en andere interacties.

Voor het laatste scenario gebruikt u de tabel Activiteit. U kunt deze tabel weergeven door Alle in te schakelen in de rechterbovenhoek om het filter uit de lijst met tabellen te verwijderen.

Lijst met tabellen waarin de activiteitentabel wordt weergegeven

De tabel Activiteit is bijzonder. Telkens wanneer u een record toevoegt aan de tabel Faxen, wordt ook een record gemaakt in de tabel Activiteit met de kolommen die in alle activiteitentabellen voorkomen. Van deze kolommen is Onderwerp is een van de meest interessante.

U kunt alle activiteiten weergeven door in het vorige voorbeeld slechts één regel te wijzigen. Vervang Gallery2.Selected.Faxes door Gallery2.Selected.Activities.

Wijziging van eigenschap Items voor de tweede galerie, van faxen naar activiteiten

Records zijn afkomstig van de tabel Activiteit, maar u kunt toch de functie IsType gebruiken om te bepalen tot wat voor soort activiteit de records behoren. Nogmaals, voordat u IsType met een tabeltype gebruikt, moet u de gegevensbron toevoegen.

Deelvenster Gegevens met alle tabellen die nodig zijn voor de functie IsType

Door deze formule te gebruiken, kunt u het recordtype weergeven in een labelbesturingselement in de galerie:

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Eigenschap Text instellen op formule voor wergave van informatie voor faxen, telefoongesprekken en andere activiteiten

U kunt ook AsType gebruiken om toegang te krijgen tot de velden van het specifieke type. Deze formule bepaalt bijvoorbeeld het type van elke activiteit en toont voor telefoongesprekken het telefoonnummer en de gespreksrichting van de tabel Telefoonnummers:

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

Uitgebreide eigenschap Text met meer informatie voor een telefoongesprek

Het resultaat is dat de app een complete lijst met activiteiten toont. Het veld Onderwerp verschijnt voor alle typen activiteiten, of de formule er nu rekening mee houdt of niet. Voor typen activiteiten waarvan u op de hoogte bent, kunt u de typenaam en typespecifieke informatie voor elke activiteit weergeven.

Voltooid scherm met informatie over verschillende typen activiteiten

Tabel Notities

Tot nu toe zijn alle Betreffende-voorbeelden gebaseerd op activiteiten, maar de tabel Notities vertegenwoordigt een ander geval.

Wanneer u een tabel maakt, kunt u bijlagen inschakelen.

Bijlagen en notities inschakelen bij het maken van een tabel

Als u het selectievakje voor het inschakelen van bijlagen inschakelt, maakt u een Betreffende-relatie met de tabel Notities, zoals deze afbeelding laat zien voor de tabel Accounts:

De tabel Accounts waarin relaties met notities via een één-op-veel-relatie worden weergegeven

Afgezien van dit verschil, gebruikt u de zoekopdracht Betreft op dezelfde manier als waarop u activiteiten gebruikt. Tabellen die zijn ingeschakeld voor bijlagen, hebben een één-op-veel-relatie met Notities, zoals in dit voorbeeld:

First( Accounts ).Notes

Notitie

Op dit moment is de Betreffende-zoekopdracht niet beschikbaar voor de tabel Notities. U kunt de Betreffende-kolom niet lezen of erop filteren en u kunt de kolom niet instellen met Patch.

Maar de omgekeerde één-op-veel-relatie voor Notities is wel beschikbaar, dus u kunt een lijst met notities filteren voor een record die is ingeschakeld voor bijlagen. U kunt ook de functie Relate gebruiken om een notitie toe te voegen aan de tabel Notities van een record, maar de notitie moet eerst worden gemaakt, zoals in dit voorbeeld:

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

Betrokkenen bij activiteit

Op het moment van schrijven bieden canvas-apps geen ondersteuning voor betrokkenen bij activiteiten.

Notitie

Laat ons uw taalvoorkeuren voor documentatie weten! Beantwoord een korte enquête. (houd er rekening mee dat deze in het Engels is)

De enquête duurt ongeveer zeven minuten. Er worden geen persoonlijke gegevens verzameld (privacyverklaring).