Share via


Funktionerne Relate og Unrelate

Gælder for: Lærredapps Modelbaserede apps

Relater og ophæv relation mellem poster fra to tabeller gennem en en-til-mange- eller mange-til-mange-relation.

Beskrivelse

Funktionen Relate sammenkæder to poster gennem en en-til-mange- eller mange-til-mange-relation i Microsoft Dataverse. Funktionen Unrelate tilbagefører processen og fjerner linket.

I forbindelse med en til mange-relationer indeholder tabellen Mange et felt med en fremmednøgle, der peger på en post i En-tabellen. Relate angiver, at dette felt skal pege på en bestemt post i En-tabellen, mens Unrelate angiver dette felt til tomt. Hvis feltet allerede er angivet, når Relate kaldes, går det eksisterende link tabt til fordel for det nye link. Du kan også angive dette felt ved hjælp af funktionen Patch eller et Edit form-kontrolelement, behøver du ikke at bruge funktionen Relate.

I forbindelse med mange-til-mange-relationer er det system, der sammenkæder posterne, en skjult join-tabel. Du kan ikke få adgang til denne join-tabel direkte. Den kan kun læses via en en-til-mange-projektion og indstilles ved hjælp af funktionerne Relate og Unrelate. Ingen af de relaterede tabeller har en fremmednøgle.

Dataene for den tabel, du angiver i det første argument, opdateres, så de afspejler ændringen, men dataene for den tabel, du angiver i det andet argument, opdateres ikke. Disse data skal opdateres manuelt med funktionen Refreshfor at få vist resultatet af handlingen.

Disse funktioner opretter eller sletter aldrig en post. De er kun relateret til eller har ikke relateret til to poster, der allerede findes.

Du kan kun disse funktioner i funktionsformler.

Bemærk

Disse funktioner er del af en eksempelvisning, og deres funktionsmåde er kun tilgængelig, når funktionen Relationelle data, grupperede indstillinger og andre funktioner for CDS er aktiveret. Det er en indstilling på app-niveau, der som standard er aktiveret for nye apps. Du kan finde denne funktionsskift ved at vælge Indstillinger og derefter vælge Kommende funktioner. Din feedback er meget vigtig for os – fortæl os, hvad du mener, i Power Apps-communityforummerne.

Syntaks

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - påkrævet. For en post i Table1, er tabellen med Table2-poster relateret via en en-til-mange- eller mange-til-mange-relation.
  • Table2Record – påkrævet. Den Table2-post, der skal føjes til relationen.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - påkrævet. For en post i Table1, er tabellen med Table2-poster relateret via en en-til-mange- eller mange-til-mange-relation.
  • Table2Record – påkrævet. Den Table2-post, der skal fjernes fra relationen.

Eksempler

Overvej en Produkter-tabel med følgende relationer som i Power Apps portalens tabelfremviser:

Vist navn på relation Relateret tabel Relationstype
Produktreservation Reservation En til mange
Produkt ↔ Kontakt Kontakt Mange til mange

Produkter og Reservationer er relateret via en en-til-mange-relation. Sådan relateres den første post i tabellen Reservationer med den første post i tabellen Produkter:

Relate( First( Products ).Reservations, First( Reservations ) )

Sådan fjernes relationen mellem disse poster:

Unrelate( First( Products ).Reservations, First( Reservations ) )

Vi oprettede eller fjernede på intet tidspunkt en post. det er kun relationen mellem poster, der er ændret.

Produkter og Kontakter er relateret via en en-til-mange-relation. Sådan relateres den første post i tabellen Kontakter med den første post i tabellen Produkter:

Relate( First( Products ).Contacts, First( Contacts ) )

Da mange-til-mange-relationer er symmetrisk, kunne vi også gøre det i den modsatte retning:

Relate( First( Contacts ).Products, First( Products ) )

Sådan fjernes relationen mellem disse poster:

Unrelate( First( Products ).Contacts, First( Contacts ) )

eller:

Unrelate( First( Contacts ).Products, First( Products ) )

Den gennemgang, der følger, udfører nøjagtigt disse handlinger på disse tabeller ved hjælp af en app med kontrolelementer til Gallery og Combo box til valg af de pågældende poster.

Disse eksempler afhænger af, hvilke eksempeldata der installeres i dit miljø. Du skal oprette et prøve miljø, herunder eksempeldata, eller føje eksempeldata til et eksisterende miljø.

En til mange

Funktionen Relate

Du skal først oprette en enkel app for at få vist og tildele de reservationer, der er knyttet til et produkt, igen.

  1. Opret en tablet-app fra bunden.

  2. På fanen Vis skal du vælge Datakilder.

  3. I ruden Data vælges Tilføj data> vælg Produkter.
    Tabellen Produkter er en del af de eksempeldata, der indlæses ovenfor.

  4. På fanen Indsæt skal du tilføje et tomt lodret Gallery-kontrolelement.

  5. Kontroller, at det kontrolelement, du lige har tilføjet, har navnet Gallery1, og flyt og tilpas derefter størrelsen på det, så det udfylder venstre side af skærmen.

  6. Indstil Gallery1s Item-egenskab til Produkter og dets Layout til Billede og titel på fanen Egenskaber.

    Konfigurer ProductsGallery.

  7. I Gallery1 skal du kontrollere, at Label-kontrolelementet har navnet Title1, og indstil derefter egenskaben Text til ThisItem.Name.

    Konfigurer etiketten i Gallery1.

  8. Vælg skærmen for at undgå at indsætte det næste element i Gallery1. Tilføj endnu et tomt, lodret Gallery-kontrolelement, og sørg for, at det hedder Gallery2.

    Gallery2 viser reservationerne for et hvilket som helst produkt, brugeren vælger i Gallery1.

  9. Flyt og tilpas størrelsen på Gallery2 for at udfylde skærmens øverste højre kvadrant.

  10. (Valgfrit) Tilføj det blå Label-kontrolelementet ovenfor Gallery2, efterhånden som det næste grafikbillede vises.

  11. På formellinjen skal du angive egenskaben Items for Gallery2 til Gallery1.Selected.Reservations.

    Konfigurer Gallery2-elementer.

  12. Angiv Gallery2s Layout til Titel i ruden Egenskaber.

    Konfigurer Gallery2-layout.

  13. I Gallery2 skal du tilføje et Combo box-kontrolelement, sikre, at det kaldes ComboBox1 og derefter flytte og ændre størrelsen for at undgå at blokere de andre kontrolelementer i Gallery2.

  14. Angiv ComboBox1s Items-egenskab til Productsunder fanen Egenskaber.

    Angiv egenskaben Items til Produkter.

  15. Rul ned i fanen Egenskaber, og indstil ComboBox1s egenskab Tillad flere valg til Fra.

    Indstil Tillad flere valg til Fra.

  16. På formellinjen skal du indstille ComboBox1s DefaultSelectedItems-egenskab til ThisItem.'Product Reservation'.

    Indstil DefaultSelectedItems til ReserveCombo.

  17. I Gallery2skal du angive NextArrow2s OnSelect-egenskab til denne formel:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Når brugeren vælger dette ikon, ændres den aktuelle reservation til det produkt, som brugeren har valgt i ComboBox1.

    Konfigurer NextArrow2.

  18. Tryk på F5 for at afprøve appen i tilstanden Eksempelvisning.

Med denne app kan brugeren flytte en reservation fra ét produkt til et andet. I forbindelse med reservation af ét produkt kan brugeren vælge et andet produkt i ComboBox1 og derefter vælge NextArrow2 for at ændre reservationen.

Vis funktionen Relate i en-til-mange-app.

Funktionen Unrelate

På dette tidspunkt kan du flytte relationen fra én post til en anden, men du kan ikke fjerne relationen helt. Du kan bruge funktionen Unrelate til at afbryde en reservationspost fra et produkt.

  1. På fanen Vis skal du vælge Datakilder.

  2. I ruden Data skal du vælge Tilføj datakilde>Microsoft Dataverse>Reservationer>Opret forbindelse.

  3. I Gallery2 skal du indstille OnSelect-formlen for NextArrow2 til denne formlen:

    If( IsBlank( ComboBox1.Selected ),
        Unrelate( Gallery1.Selected.Reservations, ThisItem ),
        Relate( ComboBox1.Selected.Reservations, ThisItem )
    );
    Refresh( Reservations )
    

    Konfigurer Højre ikon.

  4. Kopiér Gallery2 til udklipsholderen ved at vælge det og derefter trykke på Ctrl-C.

  5. Indsæt en dublet af Gallery2 på det samme skærmbillede ved at trykke på Ctrl + V, og flyt den derefter til den nederste højre kvadrant på skærmen.

  6. (Valgfrit) Hvis du har tilføjet en etiket over Gallery2, skal du gentage de to foregående trin for den pågældende etiket.

  7. Kontroller, at dubletten af Gallery2 hedder Gallery2_1, og angiv derefter dens Items-egenskab til denne formel:

    Filter( Reservations, IsBlank( 'Product Reservation' ) )
    

    Der vises en delegeringsadvarsel, men den har ingen betydning for den lille mængde data i dette eksempel.

    Angiv egenskaben Items til Gallery2_1.

Med disse ændringer kan brugerne fjerne markeringen i ComboBox1 for en kontakt, hvis vedkommende ikke har reserveret et produkt. Kontakter, der ikke har reserveret et produkt, vises i Gallery2_1hvor brugerne kan tildele de enkelte kontakter til et produkt.

Vis funktionerne Relate og Unrelate i en-til-mange-app.

Mange til mange

Oprette en mange til mange-relation

Eksempeldataene indeholder ikke mange til mange-relationer, men du kan oprette én mellem tabellen Produkter og tabellen Kontakter. Brugerne kan relatere de enkelte produkter til mere end én kontakt og hver kontakt til mere end ét produkt.

  1. denne side skal du vælge Data på venstre navigationslinje og derefter Tabeller.

    Åbn liste over tabel.

  2. Rediger tabelfilteret, så det inkluderer alle tabeller.

    Eksempeltabellerne vises som standard ikke.

    Fjern tabelfilter.

  3. Rul ned, åbn Produkt-tabellen, og vælg Relationer.

  4. Vælg Tilføj relation>Mange-til-mange.

  5. Vælg tabellen Kontakt for relationen.

  6. Vælg Udført>Gem tabel.

Relater og fjern relationen af kontakter til et eller flere produkter

Du skal oprette en anden app, der ligner den, du har oprettet tidligere i denne emne, men den nye app vil tilbyde en mange-til-mange-relation. Hver kontakt kan reservere flere produkter i stedet for kun én.

  1. I en tom app til tablets kan du oprette Gallery1, som den første procedure i denne emne beskriver.

  2. Tilføj et andet tomt lodret Gallery-kontrolelement, sørg for, at det har navnet Gallery2, og flyt det til øverste højre hjørne af skærmen.

    Senere i denne emne skal du tilføje et Combo box-kontrolelement under Gallery2.

  3. På formellinjen skal du indstille Gallery2s Items-egenskab til Gallery1.Selected.Contacts.

    Konfigurer Kontaktpersoner – egenskaben Items.

  4. Indstil Layout til Billede og titel på fanen Egenskaber.

    Konfigurer ContactsGallery – Layout.

  5. I Gallery2skal du kontrollere, at Label-kontrolelementet har navnet Title2, og indstil derefter dets Text-egenskaben til ThisItem.'Full Name'.

    Der vises ingen tekst i det pågældende kontrolelement, før du fuldfører denne procedure og tildeler en kontakt til et produkt.

    Vis kontaktnavn.

  6. Slet NextArrow2, indsæt ikonet Annuller, og sørg for, at det hedder icon1.

  7. Indstil Cancel-ikonets OnSelect-egenskab til denne formular:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Konfigurer ikonet Annuller.

  8. På fanen Vis skal du vælge Datakilder.

  9. I ruden Data skal du vælge Tilføj datakilde>Microsoft Dataverse>Kontakter>Opret forbindelse.

  10. Under Gallery2 skal du tilføje et Combo box-kontrolelement, sikre, at det har navnet ComboBox1, og derefter angive dets Items-egenskab til Kontakter.

    Konfigurer kombinationsfeltets egenskab Items.

  11. Indtil Tillad flere markeringer på fanen Egenskaber til Fra.

    Konfigurer kombinationsfeltets egenskab Layout.

  12. Indsæt et Tilføj-ikon, og indstil dets OnSelect-egenskab ril denne formular:

    Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
    

    Konfigurer ikonet Tilføj.

Med denne app kan brugerne nu frit relatere og fjerne relationer af et sæt kontakter til hvert produkt.

  • Hvis du vil føje en kontakt til et produkt, skal du markere kontakten i kombinationsfeltet nederst på skærmen og derefter vælge ikonet Tilføj.

  • Hvis du vil fjerne en kontakt fra et produkt, skal du vælge ikonet Annuller for den pågældende kontakt.

    I modsætning til en-til-mange-relation giver en mange-til-mange-relation brugerne mulighed for at knytte den samme kontakt til flere produkter.

Vis funktionerne Relate og Unrelate i mange-til-mange-app.

Tilbagefør: relatere og fjern relation af produkter med flere kontakter

Mange-til-mange-relationer er symmetriske. Du kan udvide eksemplet til at føje produkter til en kontakt og derefter skifte mellem de to skærmbilleder for at få vist, hvordan relationen vises i en af retningerne.

  1. Indstil egenskaben OnVisible af Screen1 til Refresh (Products).

    Når du opdaterer en en-til-mange- eller mange-til-mange-relation, er det kun dataene i den første argumenttabel i kaldet Relate eller Unrelate, der opdateres. Det andet skal opdateres manuelt, hvis du vil spejlvende mellem skærmbillederne på denne app.

    Angiv egenskaben OnVisible til funktionen Refresh.

  2. Duplikere Screen1.

    Dubletten kaldes Screen1_1 og udgør grundlaget af at se på relationer fra kontaktens siden.

    Dupliker en skærm.

  3. Hvis du vil oprette den modsatte visning, skal du ændre disse formler i Screen1_1-kontrolelementerne:

    • Screen1_1.OnVisible = Refresh( Contacts )
    • Gallery1_1.Items = Contacts
    • Title1_1.Text = ThisItem.'Full Name'
    • Label1_1.Text = "Selected Contact Products"
    • Gallery2_1.Items = Gallery1_1.Selected.Products
    • Title2_1.Text = ThisItem.Name
    • Icon1_1.OnSelect = Unrelate( Gallery1_1.Selected.Products, ThisItem )
    • ComboBox1_1.Items = Products
    • Icon2_1.OnSelect = Relate( Gallery1_1.Selected.Products, ComboBox1_1.Selected )

    Resultatet ligner det forrige skærmbillede, men kommer ved relationen fra siden Kontakter.

    Vis mange til mange-relation, og start med kontakter.

  4. Indsæt et Pile op/nec-ikon, og indstil dets OnSelect-egenskab til Navigate( Screen1, None ). Gør det samme på Screen1 med formlen Navigate( Screen1_1, None ).

    Tilføj navigation mellem skærme.

Med dette nye skærmbillede kan brugerne føje en kontakt til et produkt og derefter vende til en visning af kontakter og få vist det tilknyttede produkt. Relationer er symmetriske og deles mellem de to skærmbilleder.

Demonstrer mange-til-mange-relationer fra begge sider.