Funktionerna Relate och Unrelate
Gäller för: Arbetsyteappar Modellbaserade appar
Posterna relatera och avrelatera för två tabeller via en en-till-många-relation eller många-till-många-relation.
Beskrivning
Funktionen Relate länkar två poster via en en-till-många-relation eller många-till-många-relation i Microsoft Dataverse. Funktionen Unrelate återför processen och tar bort länken.
För en till många relationer har tabellen Många ett fält med externa nycklar som pekar på en post i en tabell. Relate anger att det här fältet pekar på en specifik post i tabellen One, medan Unrelate anger att det här fältet är tomt. Om fältet redan har ställts in när Relate anropas, förloras den befintliga länken i den nya länkens fördel. Du kan även ange detta fält med hjälp av funktionen Patch eller kontrollen Edit form. Du behöver inte använda funktionen Relate.
För många till många-relationer har systemet som länkar posterna en dold kopplingstabell. Du kan inte öppna kopplingstabellen direkt. Den kan vara skrivskyddad genom en till många-projektion och anges i funktionerna Relate och Unrelate. Det finns ingen utländsk nyckel i den relaterade tabellen.
Data för tabellen som du anger i det första argumentet uppdateras så att de återspeglar ändringen, men de data för tabellen du anger i det andra argumentet kommer inte att visas. Data måste uppdateras manuellt med funktionen Refresh för att visa resultatet av åtgärden.
Dessa funktioner skapar eller tar inte bort en post. De relaterar eller orelatera bara till två poster som redan finns.
Du kan använda dessa funktioner i beteendeformler.
Kommentar
De här funktionerna är en del av en förhandsgransknings funktion och deras funktion är endast tillgänglig när Relationsdata, alternativuppsättningar och andra nya funktioner för CDS är aktiverade. Det här är en inställning på programnivå som är aktiverad som standard för nya program. Om du vill hitta den här funktionsknappen väljer du Inställningar och väljer sedan Kommande funktioner. Vi uppskattar din feedback – dela med dig av dina åsikter i Power Apps communityforum.
Syntax
Relatera(Table1RelatedTable,Table2Record )
- Table1RelatedTable – Obligatoriskt. För en post i Table1 innehåller tabellen med Table2-poster en relation mellan en och flera eller flera.
- Table2Record – obligatoriskt. Den Table2-post som ska läggas till i relationen.
Orelaterad( Table1RelatedTable,Table2Record )
- Table1RelatedTable – Obligatoriskt. För en post i Table1 innehåller tabellen med Table2-poster en relation mellan en och flera eller flera.
- Table2Record – obligatoriskt. Den Table2-post att ta bort från relationen.
Exempel
Överväg tabellen Produkter med följande relationer som visas i Power Apps portalens tabellvisning:
Relationens visningsnamn | Relaterad tabell | Relationstyp |
---|---|---|
Produktreservation | Reservation | En till flera |
Produkt ↔ Kontakt | Kontakt | Många till många |
Produkter och bokningar är relaterade genom en en-till-många-relation. Så här relaterar du den första posten i tabellen Reservationer med den första posten i tabellen Produkter:
Relate( First( Products ).Reservations, First( Reservations ) )
Så här tar du bort relationen mellan posterna:
Unrelate( First( Products ).Reservations, First( Reservations ) )
När du inte har skapat eller tagit bort eller en post ändrades endast relationen mellan posterna.
Produkter och kontakter är relaterade genom en många-till-många-relation. Så här relaterar du den första posten i tabellen Kontakter med den första posten i tabellen Produkter:
Relate( First( Products ).Contacts, First( Contacts ) )
Eftersom många till många-relationer har symmetriskt kan vi också göra detta i motsatt riktning:
Relate( First( Contacts ).Products, First( Products ) )
Så här tar du bort relationen mellan posterna:
Unrelate( First( Products ).Contacts, First( Contacts ) )
eller:
Unrelate( First( Contacts ).Products, First( Products ) )
Vandringen genom följande följer exakt dessa operationer på dessa tabeller med hjälp av ett program med kontrollerna Gallery och Combo box för val av poster.
Dessa exempel beror på vilka exempeldata som installeras i din miljö. Antingen skapa en provmiljö inklusive exempeldata eller lägg till exempeldata till en befintlig miljö.
En till flera
Funktionen Relatera
Du ska först skapa ett enkelt program för att visa och tilldela om de reservationer som är associerade med en produkt.
Skapa en surfplatteapp från grunden.
På fliken Visa väljer du Datakällor.
I fönstret Data välj Lägg till data> välj Produkter.
Tabellen Produkter ingår i de exempeldata som läses in ovan.På fliken Infoga, lägg till en tom vertikal kontroll Gallery.
Kontrollera att den kontroll som du just har lagt till heter Gallery1 och flytta den och ändra storlek så att den fyller vänster sida av skärmen.
På fliken Egenskaper ange Gallery1 egenskapen Items till Produkter och dess Layout till Bild och rubrik.
I Gallery1, se till att kontrollen Label heter Title1 och ange sedan egenskapen Text till ThisItem.Name.
Markera skärmen om du vill undvika att infoga nästa objekt i Gallery1. Lägg till ytterligare en tom lodrät Gallery-kontroll och kontrollera att den har namnet Gallery2.
Gallery2 kommer att visa reservationerna för den produkt som användaren väljer i Gallery1.
Flytta och ändra storlek på Gallery2 om du vill fylla skärmens övre högra kvadrant.
(valfri) Lägg till den blå Label-kontrollen ovanför Gallery2, som nästa bild visar.
I formelfältet anger du egenskapen Items för Gallery2 till Gallery1.Selected.Reservations.
I egenskapsrutan anger du Gallery2 Layout till Rubrik.
I Gallery2, lägg till en kontroll för Combo box se till att den heter ComboBox1 och flytta och ändra storlek på den för att undvika att de andra kontrollerna blockeras i Gallery2.
På fliken Egenskaper, ange ComboBox1 egenskapen Items till produkter.
Bläddra nedåt på fliken Egenskaper och ange ComboBox1 egenskap Allow multiple selection till Av.
I formelfältet, ange ComboBox1 egenskap DefaultSelectedItems till ThisItem.'Product Reservation'.
I Gallery2, ange NextArrow2 egenskap OnSelect till den här formeln:
Relate( ComboBox1.Selected.Reservations, ThisItem )
När användaren markerar ikonen ändras den aktuella reservationen till produkten som användaren valde i ComboBox1.
Testa appen i läget för förhandsgranskning genom att trycka på F5.
Med den här appen kan användaren flytta en reservation från en produkt till en annan. För en reservation på en produkt kan användaren välja en annan produkt i ComboBox1 och välj sedan NextArrow2 för att ändra reservationen.
Funktionen Koppla bort
I det här läget kan du flytta relationen från en post till en annan, men du kan inte ta bort relationen helt. Du kan använda funktionen Unrelate för att koppla bort en reservations post från valfri produkt.
På fliken Visa väljer du Datakällor.
I fönstret Data välj Lägg till datakälla>Microsoft Dataverse>Reservationer>Anslut.
I Gallery2, ange OnSelect formel för NextArrow2 till den här formeln:
If( IsBlank( ComboBox1.Selected ), Unrelate( Gallery1.Selected.Reservations, ThisItem ), Relate( ComboBox1.Selected.Reservations, ThisItem ) ); Refresh( Reservations )
Kopiera Gallery2 till urklipp genom att markera den och sedan trycka på Ctrl-C.
Klistra in en dubblett av Gallery2 på samma skärm genom att trycka på Ctrl-V och flytta den till skärmens nedre högra kvadrant.
(valfri) Om du har lagt till en etikett ovanför Gallery2, upprepar du de föregående två stegen för etiketten.
Kontrollera att dubbletten av Gallery2 har namnet Gallery2_1 och ange sedan egenskapen Items till följande formel:
Filter( Reservations, IsBlank( 'Product Reservation' ) )
En delegeringsvarning visas men det spelar ingen roll med den mindre mängden data i det här exemplet.
Med de här ändringarna kan användarna radera urvalet i ComboBox1 för en kontakt om den personen inte har reserverat en produkt. Kontakter som inte har reserverat en produkt visas i Gallery2_1 där användarna kan tilldela en kontakt till en produkt.
Många till många
Skapa en ny många till många-relation
Exempeldata innehåller ingen flera-till-många-relation, men du skapar en relation mellan tabellen Produkter och tabellen Kontakter. Användarna kan relatera varje produkt till fler än en kontakt och varje kontakt till fler än en produkt.
Från den här sidan, väljer du Data i det vänstra navigeringsfältet och väljer sedan Tabeller.
Ändra tabellfiltret så att alla tabeller visas.
Som standard visas inte exempeltabeller.
Bläddra nedåt, öppna tabellen Produkt och markera Relationer.
Välj Lägg till relation>Många till många.
Välj tabellen Kontakt för relationen.
Välj Klar>Spara tabell.
Relatera och orelatera kontakter med en eller flera produkter
Du skapar ett nytt program som liknar den som du skapade tidigare i den här ämne, men den nya programmet erbjuder en många till många-relation. Varje kontakt kan reservera flera produkter i stället för en.
I ett tomt program för surfplattor skapar du Gallery1 som den första proceduren i det här ämnet beskriver.
Lägg till en annan tom vertikal Gallery-kontroll, kontrollera att den har namnet Gallery2 och flytta den till det övre högra hörnet på skärmen.
Senare i det här ämnet lägger du till en Combo box under Gallery2.
I formelfältet anger du Gallery2 egenskapen Items till Gallery1.Selected.Contacts.
På fliken Egenskaper anger du Layout till Bild och rubrik.
I Gallery2, se till att kontrollen Label heter Title2 och ange sedan egenskapen Text till ThisItem.'Full Name'.
Ingen text visas i den kontrollen förrän du har slutfört proceduren och kopplat en kontakt till en produkt.
Ta bort NextArrow2, sätt in en Avbryt-ikon och kontrollera att dess namn är icon1.
Ange ikonen Avbryt egenskap OnSelect till denna formel:
Unrelate( Gallery1.Selected.Contacts, ThisItem )
På fliken Visa väljer du Datakällor.
I fönstret Data välj Lägg till datakälla>Microsoft Dataverse>Kontakter>Anslut.
Under Gallery2, lägg till Combo box kontrollerar dess namn ComboBox1 och anger dem sedan till egenskapen Items till Kontakter.
På fliken Egenskaper anger du Allow multiple selection till Av.
Infoga en ikon Lägg till och ange dess egenskap OnSelect till följande formel:
Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
Med den här appen kan användarna nu fritt koppla ihop och få en uppsättning kontakter för varje produkt.
Om du vill lägga till en kontakt i en produkt markerar du kontakten i kombinationsrutan längst ned på skärmen och väljer ikonen Lägg till.
Om du vill ta bort en kontakt från en produkt väljer du ikonen Avbryt för den kontakten.
Till skillnad från en till en till många innebär en många till många-relation för att användaren ska kunna associera samma kontakt med flera produkter.
I omvänd ordning: relatera och orelatera produkter med flera kontakter
Många till många-relationer är symmetriska. Du kan utöka exemplet för att lägga till produkter till en kontakt och sedan växla mellan de två skärmarna för att visa hur relationen visas från båda riktningarna.
Ange egenskapen OnVisible för Screen1 att Uppdatera (produkter).
När du uppdaterar en till många-relation förhållandet, endast data från den första argumenttabellen i Relatera eller Avrelatera uppdateras. Den andra måste uppdateras manuellt om du vill växla mellan skärmarna i den här appen.
Dubblett av Screen1.
Dubbletten får namnet Screen1_1 och från grunden för att du ska kunna se relationer från kontaktens sida.
Om du vill skapa en omvänd vy ska du ändra formlerna för 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 blir ungefär lika bra som föregående skärm, men det kommer då på relationen från sidan kontakt.
- Screen1_1.OnVisible =
Infoga ikonen uppåt- och nedåtpilar och ange dess egenskap OnSelect till Navigate( Screen1, None ). Gör samma sak på Screen1 med formeln Navigate( Screen1_1, None ).
Med den här nya skärmen kan användare lägga till en kontakt i en produkt och sedan bläddra till en vy med kontakter och visa den associerade produkten. Relationer är symmetrisk och delas mellan de två skärmarna.