Relate és Unconnect függvények
A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt alkalmazások
Két tábla rekordjainak egymás közötti vagy sok-sok kapcsolaton keresztül történő összekapcsolása és leválasztása.
Ismertetés
A Relate függvény összekapcsol két rekordot egy-a-többhöz vagy több-a-többhöz kapcsolaton keresztül a Microsoft Dataverse-szolgáltatásban. Az Unrelate függvény megfordítja a folyamatot, és eltávolítja az összekapcsolást.
Az egy-a-sokhoz kapcsolat esetén a Sok tábla rendelkezik egy idegen kulcsú mezővel, amely az Egy tábla egy rekordjára mutat. A Relate beállítás úgy állítja be ezt a mezőt, hogy az Egy tábla egy adott rekordjára mutasson, míg a Kapcsolat megszüntetése beállítás üresre állítja a mezőt. Ha a Relate meghívásakor a mező már be van állítva , a meglévő kapcsolat elvész az új kapcsolat érdekében. Ezt a mezőt a Patch függvénnyel vagy az Űrlap szerkesztése vezérlő segítségével is beállíthatja; nem kell használnia a Relate függvényt.
Sok-a-sokhoz kapcsolatok esetén a bejegyzéseket összekapcsoló rendszer rejtett egyesítési táblát tart fenn. Ez az egyesítési tábla nem érhető el közvetlenül; csak egy-a-sokhoz vetítési leképezéssel olvasható, és a Relate és Unrelate függvényekkel állítható be. Egyik kapcsolódó tábla sem rendelkezik idegen kulccsal.
Az első argumentumban megadott táblázat adatai frissülnek a változásnak megfelelően, de a második argumentumban megadott táblázat adatai nem. A művelet eredményének megjelenítéséhez a Refresh függvénnyel kézzel kell frissíteni az adatokat.
Ezek a függvények soha nem hoznak létre és nem törölnek rekordot. Csak két, már létező bejegyzéssel kapcsolnak össze vagy szüntetik meg a kapcsolatukat.
Ezek a függvények csak viselkedésszabályozó képletekben használható.
Feljegyzés
Ezek a függvények egy előzetes funkció részét képezik, és működésük csak akkor érhető el, ha a Relációs adatok, értékkészletek és a CDS más funkciói engedélyezve vannak. Ez egy alkalmazás szintű beállítás, amely alapértelmezés szerint engedélyezve van az új alkalmazásokhoz. A funkció megkereséséhez válassza a Beállítások parancsot, majd válassza a Hamarosan megjelenő funkciók lehetőséget. Az Ön visszajelzései nagyon fontosak számunkra – kérjük, ossza meg velünk véleményét a Power Apps közösség fórumain.
Szintaxis
Relate( Tábla1RelatedTable; Table2Record )
- Table1RelatedTable - kötelező. A Table1 rekordjához a Table2 rekordjai egy-a-sokhoz vagy sok-a-sokhoz kapcsolaton keresztül kapcsolódnak.
- Table2Record – Kötelező. A kapcsolathoz hozzáadandó Table2 rekord.
Viszonytalan( Tábla1RelatedTable; Table2Record )
- Table1RelatedTable - kötelező. A Table1 rekordjához a Table2 rekordjai egy-a-sokhoz vagy sok-a-sokhoz kapcsolaton keresztül kapcsolódnak.
- Table2Record – Kötelező. A kapcsolatból eltávolítandó Table2 rekord.
Példák
Nézzünk meg egy Termékek táblázatot a következő kapcsolatokkal, ahogyan az a Power Apps portál táblázatnézőben látható:
Kapcsolat megjelenítendő neve | Kapcsolódó tábla | Kapcsolat típusa |
---|---|---|
Termékfoglalás | Foglalás | Egy a sokhoz |
Termék ↔ kapcsolat | Kapcsolattartó | Több-a-többhöz |
A termékek és a foglalások egy-a-többhöz kapcsolaton keresztül kapcsolódnak egymáshoz. A Foglalások táblázat első rekordjának összekapcsolása a Termékek táblázat első rekordjával:
Relate( First( Products ).Reservations, First( Reservations ) )
A rekordok közötti kapcsolat eltávolításához:
Unrelate( First( Products ).Reservations, First( Reservations ) )
Semmikor nem hozunk létre, illetve nem távolítunk el egy rekordot, csak a rekordok közötti kapcsolat módosult.
A termékek és a kapcsolattartók több-a-többhöz kapcsolaton keresztül kapcsolódnak egymáshoz. A Kapcsolatok táblázat első rekordjának összekapcsolása a Termékek táblázat első rekordjával:
Relate( First( Products ).Contacts, First( Contacts ) )
Mivel a sok-a-sokhoz kapcsolatok szimmetrikusak, ezt az ellenkező irányba is elvégezheti:
Relate( First( Contacts ).Products, First( Products ) )
A rekordok közötti kapcsolat eltávolításához:
Unrelate( First( Products ).Contacts, First( Contacts ) )
vagy:
Unrelate( First( Contacts ).Products, First( Products ) )
Az alábbiakban bemutatott út pontosan ezeket a műveleteket végzi el a táblázatokon egy Galéria és Kombinált mező vezérlővel rendelkező alkalmazás segítségével, amely az érintett rekordok kiválasztására szolgál.
Ezek a példák a környezetre telepített mintaadatoktől függenek. Hozzon létre egy mintaadatokat tartalmazó próbakörnyezet, vagy adjon hozzá mintaadatokat egy meglévő környezethez.
Egy a sokhoz
Relate függvény
Először hozzon létre egy egyszerű alkalmazást, amellyel megtekintheti és újra hozzárendelheti a termékhez kapcsolódó foglalásokat.
Hozzon létre egy üres táblagépes alkalmazást.
A Nézet lapon válassza az Adatforrások lehetőséget.
Az Adatok ablaktáblán válassza az Adatok hozzáadása> Termékek lehetőséget.
A Termékek táblázat a fent betöltött mintaadatok része.A Beszúrás lapon adjon hozzá üres függőleges Katalógus vezérlőt.
Ügyeljen arra, hogy az imént felvett vezérlő neve Gallery1 legyen, majd helyezze át, és méretezze át, hogy kitöltse a képernyő bal oldalát.
A Tulajdonságok lapon állítsa be a Gallery1 Elemek tulajdonságát Termékek értékre, illetve az Elrendezés tulajdonságát Kép és cím értékre.
A Gallery1 alatt ellenőrizze, hogy a Címke vezérlő neve Title1 legyen, majd állítsa a Szöveg tulajdonságát ThisItem.Namere értékre.
Válassza ki a képernyőt, hogy ne szúrja be a következő elemet a Gallery1 alá. Vegyen fel egy második üres függőleges Katalógus vezérlőt, és ellenőrizze, hogy a neve Gallery2 legyen.
A Gallery2 megjeleníti a foglalásokat a felhasználó által a Gallery1-ben kiválasztott termékhez.
A Gallery2 áthelyezésével és átméretezésével töltse ki a képernyő jobb felső negyedét.
(opcionális) Adja hozzá a kék Címke vezérlőt a Gallery2 fölé, ahogy azt a következő ábra mutatja.
A szerkesztőlécen állítsa be a Gallery2 Elemek tulajdonságát Gallery1.Selected.Reservations értékre.
A Tulajdonságok ablaktáblában állítsa be a Gallery2 Elrendezését Cím értékre.
A Gallery2 alatt adja hozzá a Kombinált lista vezérlőt, győződjön meg róla, hogy annak neve ComboBox1, majd helyezze át és méretezze át, hogy elkerülje a Gallery2 többi vezérlőjének blokkolását.
A Tulajdonságok lapon állítsa be a ComboBox1 Elemek tulajdonságát a Termékek értékre.
Görgessen lefelé a Tulajdonságok fülön, és állítsa be a ComboBox1 Többszörös kijelölés engedélyezése tulajdonságát Ki értékre.
A szerkesztőlécen állítsa be a ComboBox1 DefaultSelectedItems tulajdonságát a ThisItem.'Product Reservation' értékre.
A Gallery2 alatt állítsa be a NextArrow2 OnSelect tulajdonságát erre a képletre:
Relate( ComboBox1.Selected.Reservations, ThisItem )
Amikor a felhasználó kiválasztja ezt az ikont, az aktuális foglalás a felhasználó által a ComboBox1 listában kiválasztott termékre módosul.
Az alkalmazás előnézeti módban történő teszteléséhez nyomja meg az F5 funkcióbillentyűt.
Ezzel az alkalmazással a felhasználó áthelyezheti a foglalást az egyik termékről a másikra. Az egyik termékre vonatkozó foglalás esetén a felhasználó kiválaszthat egy másik terméket a ComboBox1 listában, majd a NextArrow2 kiválasztásával módosíthatja a foglalást.
Kapcsolat megszüntetése funkció
Ezen a ponton a kapcsolatot áthelyezheti egyik rekordból a másikba, de a kapcsolatot nem távolíthatja el teljesen. Az Unrelate függvénnyel leválaszthat bármilyen termékhez tartozó foglalási rekordot.
A Nézet lapon válassza az Adatforrások lehetőséget.
Az Adatok panelen válassza az Adatforrás hozzáadása>Microsoft Dataverse>Foglalások>Kapcsolódás lehetőséget.
A Gallery2 alatt állítsa be a NextArrow2 OnSelect képletét erre a képletre:
If( IsBlank( ComboBox1.Selected ), Unrelate( Gallery1.Selected.Reservations, ThisItem ), Relate( ComboBox1.Selected.Reservations, ThisItem ) ); Refresh( Reservations )
A Ctrl+C billentyűkombinációt lenyomásával másolja a Gallery2 katalógust a vágólapra.
A Ctrl-V billentyűkombináció lenyomásával ugyanabba ugyanarra a képernyőre illessze be a Gallery2 katalógust, majd helyezze azt a képernyő jobb alsó negyedébe.
(opcionális) Ha a Gallery2 fölé címkét is hozzáadott, akkor ismételje meg az előző két lépést az adott címkére vonatkozóan.
Győződjön meg arról, hogy a Gallery2 másolatának neve Gallery2_1, majd a következő képletre állítja be a Cikkek tulajdonságát:
Filter( Reservations, IsBlank( 'Product Reservation' ) )
Egy delegálási figyelmeztetés jelenik meg, de ez nem számít a példában szereplő kis mennyiségű adat esetében.
Ezekkel a módosításokkal a felhasználók törölhetik a kiválasztást ComboBox1 listából egy kapcsolattartóhoz, ha az adott személy nem foglalt el egy terméket. Azok a kapcsolattartók, akik még nem foglaltak le egy terméket, a Gallery2_1 katalógusban jelennek ahol felhasználók az egyes kapcsolattartókat egy termékhez rendelhetik.
Több-a-többhöz
Új sok-a-sokhoz kapcsolat létrehozása
A mintaadatok nem tartalmaznak több-a-többhöz kapcsolatokat, de a Termékek táblázat és a Kapcsolatok táblázat között létrehozhat egyet. A felhasználók egy termékhez terméket több kapcsolattartóhoz és társíthatnak, illetve az egyes kapcsolattartókat több termékhez is társíthatják.
Ezen az oldalon válassza a bal oldali navigációs sávban az Adatok, majd a Táblázatok lehetőséget.
Módosítsa a táblázatszűrőt úgy, hogy az összes táblázat megjelenjen.
Alapértelmezés szerint a sablontáblázatok nem jelennek meg.
Görgessen lefelé, nyissa meg a Termék táblázatot, és válassza a Kapcsolatok lehetőséget.
Válassz a Kapcsolat hozzáadása>Sok-a-sokhoz lehetőséget.
Válassza ki a Kapcsolat táblázatot a kapcsolathoz.
Válassza a Kész>Táblázat mentése lehetőséget.
Kapcsolattartók társítása vagy társításuk megszüntetése egy vagy több termék esetében
Egy másik alkalmazást hoz létre, amely hasonlít a témakörben korábban létrehozotthoz de az új alkalmazás sok-a-sokhoz kapcsolatot biztosít. Minden kapcsolattartó egy helyett tud több terméket foglalni.
Egy üres táblagépes alkalmazásban, hozza létre a Gallery1 katalógust a témakör első eljárásnak megfelelően.
Adjon hozzá egy másik üres függőleges Katalógus vezérlőt, ellenőrizze, hogy a neve Gallery2 legyen, majd helyezze a képernyő jobb felső sarkába.
A témakör későbbi részében egy Kombinált lista vezérlőt ad hozzá a Gallery2 alá.
A szerkesztőlécen állítsa be a Gallery2 Elemek tulajdonságát Gallery1.Selected.Contacts értékre.
A Tulajdonságok lapon állítsa be az Elrendezést Kép és cím értékre.
A Gallery2 alatt ellenőrizze, hogy a Címke vezérlő neve Title2 legyen, majd állítsa a Szöveg tulajdonságát ThisItem.'Full Name' értékre.
A vezérlőelemben csak akkor jelenik meg szöveg, ha befejezte ezt az eljárást, és egy kapcsolattartót rendel hozzá egy termékhez.
Törölje az NextArrow2 elemet, szúrjon be egy Mégse ikont, és gondoskodjon róla, hogy a neve icon1 legyen.
A Mégse ikon OnSelect tulajdonságát állítsa a következő képletre:
Unrelate( Gallery1.Selected.Contacts, ThisItem )
A Nézet lapon válassza az Adatforrások lehetőséget.
Az Adatok panelen válassza az Adatforrás hozzáadása>Microsoft Dataverse>Kapcsolattartók>Kapcsolódás lehetőséget.
A Gallery2 alatt adjon hozzá egy Kombinált lista vezérlőjét, a neve legyen ComboBox1, majd állítsa be az Elemek tulajdonságát a Kapcsolattartók értékre.
A Tulajdonságok lapon állítsa be a Többszörös kijelölés engedélyezése beállítást Ki értékre.
Szúrjon be egy Hozzáadás ikont, és az OnSelect tulajdonság értékeként adja meg ezt a képletet:
Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
Ezzel az alkalmazással a felhasználók most szabadon rendelhetik hozzá kapcsolatartók halmazát az egyes termékekhez.
Ha egy kapcsolattartót szeretne hozzáadni egy termékhez, akkor jelölje ki a kapcsolattartót a képernyő alján található kombinált listában, majd válassza a Hozzáadás ikont.
Ha egy kapcsolattartót el szeretne távolítani egy termékből, akkor válassza az adott kapcsolattartóhoz tartozó Mégse ikont.
Az egy-a-sokhoz, sok-a-sokhoz kapcsolattal ellentétben a felhasználók több termékhez is társítják ugyanazt a kapcsolattartót.
Fordított: termékeket hozzárendelhet több kapcsolattartóhoz, és megszűnteheti hozzárendelésüket
A sok-a-sokhoz kapcsolatok szimmetrikusak. A példát bővítheti termékek hozzáadásához egy kapcsolattartóhoz, majd a két képernyő közötti tükrözéssel megjelenítheti, hogyan jelenik meg a kapcsolat egyik irányból.
Állítsa be a Screen1 OnVisible tulajdonságát Frissítés (Termékek) értékre.
Amikor egy több-a-többhöz vagy több-a-többhöz kapcsolat frissítését végzi, csak a Kapcsolás vagy a Leválasztás hívás első argumentumtáblázatának adatai frissülnek. A másodikat manuálisan kell frissíteni, ha az alkalmazás képernyőjén szeretné megfordítani azt.
Duplikált Screen1.
A duplikált elem neve Screen1_1 lesz és a kapcsolatok megtekintését a kapcsolattartók oldaláról teszi lehetővé.
A fordított nézet létrehozásához módosítsa a képleteket a Screen1_1 vezérlőiben:
- 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 )
Az eredmény nagyon hasonlít az előző képernyőhöz, de a Kapcsolattartók oldaláról irányul a kapcsolat.
- Screen1_1.OnVisible =
Szúrjon be egy Fel le nyilat az ikon fölé, és állítsa be a OnSelect tulajdonságot Navigate( Screen1, None) értékre. Ugyanígy hajtsa végre ugyanazt a Screen1 képernyőn a Navigate( Screen1_1, None ) használatával.
Ezzel az új képernyővel a felhasználók hozzáadhatnak egy kapcsolattartót a termékhez, majd megtekinthetik a kapcsolattartók nézetét, és megtekinthetik a kapcsolódó terméket. A kapcsolatok a két képernyő szimmetrikusak és megosztottak.