Del via


Funksjonene Relate og Unrelate

Gjelder: Lerretsapper Modelldrevne apper

Relater eller avrelater oppføringer i to tabeller via en én-til-mange- eller mange-til-mange-relasjon.

Beskrivelse

Relate-funksjonen knytter to poster gjennom en én-til-mange- eller mange-til-mange-relasjon i Microsoft Dataverse. Unrelate-funksjonen tilbakefører prosessen og fjerner koblingen.

Når det gjelder én-til-mange-relasjoner, har mange-tabellen et sekundærnøkkelfelt som peker mot en oppføring i én-tabellen. Relate angir at dette feltet skal peke mot en bestemt oppføring i én-tabellen, mens Unrelate setter dette feltet til tomt. Hvis feltet allerede er angitt når Relate kalles, går den eksisterende koblingen tapt til fordel for den nye koblingen. Du kan også angi dette feltet ved å bruke Patch-funksjonen eller en Edit form-kontroll. Du trenger ikke bruke Relate-funksjonen.

Systemet som knytter til oppføringene, vedlikeholder en skjult sammenkoblingstabell for mange-til-mange-relasjoner. Du kan ikke få tilgang til denne sammenkoblingstabellen direkte, den kan bare leses gjennom en én-til-mange-projeksjon og være angitt via Relate- og Unrelate-funksjoner. Ingen av de relaterte tabellene har en sekundærnøkkel.

Dataene for tabellen du angir i det første argumentet, oppdateres for å gjenspeile endringen, men dataene for tabellen du angir i det andre argumentet, blir ikke oppdatert. Disse dataene må oppdateres manuelt med Refresh-funksjonen for å vise resultatet av operasjonen.

Disse funksjonene oppretter eller sletter aldri en oppføring. De bare relaterer eller avrelaterer to oppføringer som allerede finnes.

Du kan kun bruke disse funksjonene i formler for virkemåte.

Merk

Disse funksjonene er en del av en forhåndsvisningsfunksjon, og virkemåten er bare tilgjengelig når funksjonen Relasjonsdata, alternativsett og andre nye funksjoner for CDS er aktivert. Dette er en innstilling på appnivå som er aktivert som standard for nye apper. Du finner denne funksjonsbryteren ved å velge Innstillinger og deretter velge Kommende funksjoner. Vi setter stor pris på dine tilbakemeldinger – fortell oss hva du synes i foraene for Power Apps-fellesskapet.

Syntaks

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable – obligatorisk. For en oppføring i Tabell1 er tabellen i Tabell2-oppføringer relatert via en én-til-mange-relasjon eller en mange-til-mange-relasjon.
  • Table2Record – obligatorisk. Table2-oppføringen som skal legges til i relasjonen.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable – obligatorisk. For en oppføring i Tabell1 er tabellen i Tabell2-oppføringer relatert via en én-til-mange-relasjon eller en mange-til-mange-relasjon.
  • Table2Record – obligatorisk. Table2-oppføringen som skal fjernes fra relasjonen.

Eksempler

Vurder en Produkter-tabell med følgende relasjoner som sett i visningsprogrammet for tabell i Power Apps-portalen:

Relasjonens visningsnavn Relatert tabell Relasjonstype
Produktreservasjon Reservasjon Én-til-mange
Produkt ↔ Kontakt Kontakt Mange-til-mange

Produkter og Reservasjoner er relatert gjennom en én-til-mange-relasjon. Slik relaterer du den første oppføringen i Reservasjoner-tabellen til den første oppføringen i Produkter-tabellen:

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

Slik fjerner du relasjonen mellom disse oppføringene:

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

Det ble ikke opprettet eller fjernet en oppføring på noe tidspunkt, bare relasjonen mellom oppføringene ble endret.

Produkter og Kontakter er relatert gjennom en mange-til-mange-relasjon. Slik relaterer du den første oppføringen i Kontakter-tabellen til den første oppføringen i Produkter-tabellen:

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

Siden mange-til-mange-relasjoner er symmetriske, kan vi også gjøre dette i motsatt retning:

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

Slik fjerner du relasjonen mellom disse oppføringene:

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

eller:

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

I gjennomgangen som følger, utføres nøyaktig disse operasjonene på disse tabellene ved hjelp av appen med kontrollene Gallery og Combo box for å velge de involverte oppføringene.

Disse eksemplene avhenger av eksempeldataene som installeres i miljøet. Opprett et prøveversjonsmiljø med eksempeldata eller legg til eksempeldata i et eksisterende miljø.

Én-til-mange

Relate-funksjonen

Du oppretter først en enkel app for å vise og tilordne reserveringene som er knyttet til et produkt, på nytt.

  1. Opprett en nettbrettapp fra tomt.

  2. Velg DatakilderVis-fanen.

  3. I ruten Data velger du Legg til data> og Produkter.
    Produkter-tabellen er en del av eksempeldataene som ble lastet inn ovenfor.

  4. Sett inn-fanen legger du til en tom, loddrett Gallery-kontroll.

  5. Kontroller at kontrollen du nettopp la til, heter Gallery1, og flytt deretter og endre størrelsen på den for å fylle venstre side av skjermen.

  6. I Egenskaper-kategorien setter du Gallery1s Items-egenskap til Produkter og oppsettet til Bilde og tittel.

    Konfigurer ProductsGallery.

  7. I Gallery1 kontrollerer du at Label-kontrollen heter Title1, og setter deretter Text-egenskapen til ThisItem.Name.

    Konfigurer etiketten i Gallery1.

  8. Velg skjermbildet for å unngå å sette inn det neste elementet i Gallery1. Legg til en ny tom, loddrett Gallery-kontroll, og kontroller at den har navnet Gallery2.

    Gallery2 vil vise reserveringene for det produktet brukeren velger i Gallery1.

  9. Flytt og endre størrelse på Gallery2 for å fylle den øvre høyre delen av skjermen.

  10. (valgfritt) Legg til den blå Label-kontrollen over Gallery2, som den neste grafikken viser.

  11. På formellinjen angir du Items-egenskapen for Gallery2 til Gallery1.Selected.Reservations.

    Konfigurer Gallery2-elementer.

  12. Sett Gallery2s Oppsett til Tittel i egenskapsruten.

    Konfigurer Gallery2-oppsett.

  13. I Gallery2 legger du til en Combo box-kontroll. Kontroller at den heter ComboBox1, og flytt og endre deretter størrelse på den for å unngå å blokkere de andre kontrollene i Gallery2.

  14. I Egenskaper-kategorien setter du ComboBox1s Items-egenskap til Produkter.

    Angi Items-egenskap til Produkter.

  15. Bla ned i Egenskaper-kategorien, og angi ComboBox1s Allow multiple selection-egenskap til Av.

    Angi Allow multiple selection til Av.

  16. På formellinjen angir du ComboBox1s DefaultSelectedItems-egenskap til ThisItem.'Product Reservation'.

    Angi DefaultSelectedItems for ReserveCombo.

  17. I Gallery2 angir du NextArrow2s OnSelect-egenskap til denne formelen:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Når brukeren velger dette ikonet, endres den gjeldende reservasjonen til produktet som brukeren valgte i ComboBox1.

    Konfigurer NextArrow2.

  18. Trykk F5 for å teste appen i forhåndsvisningsmodus.

Ved hjelp av denne appen kan brukeren flytte en reservasjon fra ett produkt til et annet. Brukeren kan velge et annet produkt i ComboBox1, og deretter velge NextArrow2 for å endre reservasjonen for en reservasjon på ett produkt.

Demonstrer Relate-funksjonen i én-til-mange-apper.

Unrelate-funksjonen

Du kan nå flytte relasjonen fra én oppføring til en annen, men du kan ikke fjerne relasjonen helt. Du kan bruke Unrelate-funksjonen til å koble en reservasjonsoppføring fra et hvilket som helst produkt.

  1. Velg DatakilderVis-fanen.

  2. I Data-ruten velger du Legg til datakilde>Microsoft Dataverse>Reservasjoner>Koble til.

  3. I Gallery2 angir du OnSelect-formelen for NextArrow2 til denne formelen:

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

    Konfigurer høyre-ikon.

  4. Kopier Gallery2 til utklippstavlen ved å velge den og trykke på Ctrl-C.

  5. Lim inn et duplikat av Gallery2 i samme skjermbilde ved å trykke CTRL-V, og flytt det deretter til nederste høyre boks på skjermen.

  6. (valgfritt) Hvis du har lagt til en etikett over Gallery2, gjentar du de forrige to trinnene for etiketten.

  7. Kontroller at duplikatet av Gallery2 heter Gallery2_1, og angi deretter Items-egenskapen til denne formelen:

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

    Det vises en delegeringsadvarsel, men den kan ignoreres med så små datamengder som i dette eksemplet.

    Angi Items-egenskapen for Gallery2_1.

Med disse endringene kan brukerne fjerne merkingen i ComboBox1 for en kontakt hvis denne personen ikke har reservert et produkt. Kontakter som ikke har reservert et produkt, vises i Gallery2_1 der brukere kan tilordne hver kontakt til et produkt.

Demonstrer Relate- og Unrelate-funksjonene i én-til-mange-apper.

Mange-til-mange

Opprett en mange-til-mange-relasjon

Eksempeldataene omfatter ikke en mange-til-mange-relasjon, men du skal opprette en mellom Produkter-tabellen og Kontakter-tabellen. Brukere kan relatere hvert produkt til mer enn én kontakt og hver kontakt til flere enn ett produkt.

  1. Velg Data i det venstre navigasjonsfeltet på denne siden, og velg deretter Tabeller.

    Åpne liste over tabeller.

  2. Endre tabellfilteret slik at det omfatter alle tabellene.

    Eksempeltabeller vises ikke som standard.

    Fjern tabellfilteret.

  3. Rull ned, åpne Produkt-tabellen, og velg Relasjoner.

  4. Velg Legg til relasjon>Mange-til-mange.

  5. Velg Kontakt-tabellen for relasjonen.

  6. Velg Fullført>Lagre tabell.

Relatere og avrelatere kontakter med ett eller flere produkter

Du skal opprette en annen app som ligner på den du opprettet tidligere i dette emnet, men den nye appen vil tilby en mange-til-mange-relasjon. Hver kontakt kan reservere flere produkter i stedet for bare én.

  1. I en tom app for nettbrett oppretter du Gallery1 som den første fremgangsmåten som beskrevet i dette emnet.

  2. Legg til en ny tom, loddrett Gallery-kontroll, kontroller at den har navnet Gallery2, og flytt den deretter til øvre høyre hjørne av skjermen.

    Senere i dette emnet skal du legge til en Combo box-kontroll under Gallery2.

  3. På formellinjen angir du Items-egenskapen for Gallery2 til Gallery1.Selected.Contacts.

    Konfigurer ContactsGallery – Items-egenskap.

  4. I Egenskaper-fanen angir du Oppsett til Bilde og tittel.

    Konfigurer ContactsGallery – oppsett.

  5. I Gallery2 kontrollerer du at Label-kontrollen heter Title2, og setter deretter Text-egenskapen til ThisItem.'Full Name'.

    Ingen tekst vil vises i denne kontrollen før du har fullført denne prosedyren og tilordnet en kontakt til et produkt.

    Vis navn på kontaktperson.

  6. Slett NextArrow2, sett inn et Avbryt-ikon, og kontroller at det har navnet icon1.

  7. Sett Avbryt-ikonets OnSelect-egenskap til denne formelen:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Konfigurer Avbryt-ikon.

  8. Velg DatakilderVis-fanen.

  9. I Data-ruten velger du Legg til datakilde>Microsoft Dataverse>Kontakter>Koble til.

  10. Under Gallery2 legger du til en Combo box-kontroll. Kontroller at den heter ComboBox1, og angi deretter Items-egenskapen til Kontakter.

    Konfigurer Items-egenskapen for kombinasjonsboksen.

  11. I Egenskaper-fanen angir du Tillat flere valg til Av.

    Konfigurer Layout-egenskapen for kombinasjonsboksen.

  12. Sett inn et Legg til-ikon, og angi OnSelect-egenskapen til denne formelen:

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

    Konfigurer Legg til-ikon.

Ved hjelp av denne appen kan brukere nå fritt relatere og avrelatere et sett med kontakter til hvert produkt.

  • Hvis du vil legge til en kontakt i et produkt, velger du kontakten i kombinasjonsboksen nederst på skjermen, og deretter velger du Legg til-ikonet.

  • Hvis du vil fjerne en kontakt fra et produkt, velger du Avbryt-ikonet for den aktuelle kontakten.

    Til forskjell fra én-til-mange-relasjon gjør en mange-til-mange-relasjon det mulig for brukere å knytte samme kontakt til flere produkter.

Demonstrer Relate- og Unrelate-funksjonene i mange-til-mange-app.

Omvendt: Relatere og avrelatere produkter med flere kontakter

Mange-til-mange-relasjoner er symmetriske. Du kan utvide eksemplet for å legge til produkter i en kontakt, og deretter bla mellom de to skjermbildene for å vise hvordan relasjonen vises fra begge retninger.

  1. Angi OnVisible-egenskapen for Screen1 til Refresh( Products ).

    Når du oppdaterer en én-til-mange-relasjon eller mange-til-mange-relasjon, oppdateres bare dataene i den første argumenttabellen i oppkallet Relate eller Unrelate. Den andre må oppdateres manuelt hvis du vil veksle mellom skjermene på denne appen.

    Angi OnVisible-egenskapen til Refresh-funksjonen.

  2. Dupliser Screen1.

    Duplikaten får navnet Screen1_1 og danner basisen for å se på relasjoner fra kontaktersiden.

    Dupliser en skjerm.

  3. Hvis du vil opprette den motsatte visningen, endrer du disse formlene på kontrollene for Screen1_1:

    • 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 vil se svært likt ut som forrige skjermbilde, men kommer til relasjonen fra Kontakter-siden.

    Vis mange-til-mange-relasjon fra og med kontakter.

  4. Sett inn et Pilene opp ned-ikon, og angi OnSelect-egenskapen til Navigate( Screen1, None ). Gjør det samme på Screen1 med formelen Navigate( Screen1_1, None ).

    Legg til navigasjon mellom skjermer.

Med dette nye skjermbildet kan brukere legge til en kontakt i et produkt, og deretter bytte til en visning av kontakter og se det tilknyttede produktet. Relasjonene er symmetriske og deles mellom de to skjermene.

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