Funkce Relate a Unrelate
Platí pro: aplikace plátna modelem řízené aplikace
Vytvoří mezi záznamy dvou tabulek vztah typu 1:N nebo M:N nebo vztah zruší.
Popis
Funkce Relate propojuje dva záznamy prostřednictvím relací typu 1:N nebo N:N v Microsoft Dataverse. Funkce Unrelate obrátí proces a odstraní odkaz.
U vztahů typu 1:N obsahuje tabulka na straně Mnoho pole cizího klíče, které ukazuje na záznam tabulky na straně Jedna. Relate nastaví toto pole tak, aby odkazovalo na konkrétní záznam tabulky One, zatímco Unrelate nastaví toto pole na prázdné. Pokud je pole již nastaveno, když je volána funkce Relate, stávající odkaz se ztratí ve prospěch nového odkazu. Toto pole můžete také nastavit pomocí funkce Patch nebo ovládacího prvku Edit form; nemusíte používat funkci Relate.
V případě vztahů N:N systém, který vztahy propojuje, udržuje skrytou tabulku připojení. K této tabulce připojení se nemůžete přímo připojit; lze ji číst pouze prostřednictvím projekce 1:N a nastavit prostřednictvím funkcí Relate a Unrelate. Žádná související tabulka nemá cizí klíč.
Data pro tabulku, kterou zadáte v prvním argumentu, se aktualizují, aby odrážely změnu, ale data pro tabulku, kterou zadáte v druhém argumentu, se aktualizovat nebudou. Tato data musí být ručně aktualizována pomocí funkce Refresh, aby zobrazovala výsledek operace.
Tyto funkce nikdy nevytvářejí ani neodstraňují záznam. Vztahují se pouze k dvěma existujícím záznamům.
Tyto funkce se dají použít jenom ve vzorcích chování.
Poznámka:
Tyto funkce jsou součástí funkcí Preview a jejich chování je k dispozici, pouze pokud je povolena funkce Relační data, sady možností a další nové funkce pro CDS. Toto je nastavení na úrovni aplikace, které je ve výchozím nastavení povoleno pro nové aplikace. Chcete-li najít tento přepínač funkcí, vyberte Nastavení a poté vyberte Připravované funkce. Vaše zpětná vazba je pro nás velmi cenná – dejte nám prosím vědět, co si myslíte, v komunitních fórech k Power Apps.
Syntaxe
Související( Table1RelatedTable, Tabulka2Záznam )
- Table1RelatedTable – Povinné. Pro záznam Tabulky1 jde o záznamy Tabulky2 související prostřednictvím vztahu 1:N nebo M:N.
- Table2Record – Povinné. Záznam Tabulky2 přidávaný do vztahu.
Nesouvisející( Table1RelatedTable, Tabulka2Záznam )
- Table1RelatedTable – Povinné. Pro záznam Tabulky1 jde o záznamy Tabulky2 související prostřednictvím vztahu 1:N nebo M:N.
- Table2Record – Povinné. Záznam Tabulky2 odebíraný ze vztahu.
Příklady
Uvažujme nyní tabulku Produkty s následujícími vztahy, jak je vidět v prohlížeči tabulek portálu Power Apps:
Zobrazovaný název entity | Související tabulka | Typ vztahu |
---|---|---|
Product Reservation | Reservation | 1:N |
Produkt ↔ Kontakt | Kontakt | N:N |
Produkty a Rezervace souvisejí prostřednictvím vztahu One-to-Many. Postup vytvoření vztahu prvního záznamu tabulky Rezervace s prvním záznamem tabulky Produkty:
Relate( First( Products ).Reservations, First( Reservations ) )
Odebrání vztahu mezi těmito záznamy:
Unrelate( First( Products ).Reservations, First( Reservations ) )
Během okamžiku jsme ani nevytvořili ani neodstranili záznam, změnil se pouze vztah mezi záznamy.
Produkty a Kontakty souvisejí prostřednictvím vztahu Many-to-Many. Postup vytvoření vztahu prvního záznamu tabulky Kontakty s prvním záznamem tabulky Produkty:
Relate( First( Products ).Contacts, First( Contacts ) )
Vzhledem k tomu, že vztahy N:N jsou symetrické, mohli jsme to udělat také opačným směrem:
Relate( First( Contacts ).Products, First( Products ) )
Odebrání vztahu mezi těmito záznamy:
Unrelate( First( Products ).Contacts, First( Contacts ) )
nebo:
Unrelate( First( Contacts ).Products, First( Products ) )
Následující postup provede přesně tyto operace na těchto tabulkách pomocí aplikace s ovládacími prvky Gallery a Combo box pro výběr příslušných záznamů.
Tyto příklady vyžadují ukázková data instalovaná ve vašem prostředí. Buď vytvořte zkušební prostředí včetně ukázkových dat nebo přidejte ukázková data do existujícího prostředí.
1:N
Související funkce
Nejprve vytvoříte jednoduchou aplikaci, která vám umožní zobrazit a znovu přiřadit rezervace spojené s produktem.
Vytvořte prázdnou aplikaci pro tablet.
Na kartě Zobrazení vyberte možnost Zdroje dat.
V podokně Data vyberte Přidat data> vyberte Produkty.
Tabulka Produkty je součástí ukázkových dat načtených výše.Na kartě Vložit přidejte ovládací prvek prázdné svislé Gallery.
Ovládací prvek, který jste právě přidali, pojmenujte Gallery1 a poté jej přesuňte a změňte jeho velikost tak, aby vyplnila levou stranu obrazovky.
Na kartě Vlastnosti nastavte vlastnost Items ovládacího prvku Gallery1 na Products a jeho Layout na Image and title.
V ovládacím prvku Gallery1 pojmenujte ovládací prvek Label jako Title1 a poté nastavte vlastnost Text na ThisItem.Name.
Vyberte obrazovku, abyste se vyhnuli vložení další položky do Gallery1. Přidejte druhý ovládací prvek prázdné svislé Gallery pojmenujte ji Gallery2.
Galerie2 zobrazí rezervace jakéhokoli produktu, který uživatel vybere v Galerie1.
Přesunutím a změnou velikosti Gallery2 vyplníte pravý horní kvadrant obrazovky.
(volitelné) Přidejte modrý ovládací prvek Label nad Gallery2, jak ukazuje následující obrázek.
Na řádku vzorců nastavte vlastnost Items pro Gallery2 na Gallery1.Selected.Reservations.
V podokně vlastností nastavte Rozložení pro Gallery2 na Název.
V Gallery2 přidejte ovládací prvek Combo box a pojmenujte jej ComboBox1 a poté jej přesuňte a změňte jeho velikost, abyste zabránili blokování ostatních ovládacích prvků v Gallery2.
Na kartě Vlastnosti nastavte vlastnost Items pro ComboBox1 jako Products.
Přejděte dolů v kartě Vlastnosti a nastavte vlastnost Allow multiple selection pro ComboBox1 na Off.
Na řádku vzorců nastavte vlastnost DefaultSelectedItems pro ComboBox1 na ThisItem.'Product Reservation'.
V Gallery2 nastavte vlastnost OnSelect pro NextArrow2 na tento vzorec:
Relate( ComboBox1.Selected.Reservations, ThisItem )
Když uživatel vybere tuto ikonu, aktuální rezervace se změní na produkt, který uživatel vybral v ComboBox1.
Stisknutím klávesy F5 otestujte aplikaci v režimu náhledu.
V této aplikaci může uživatel přesunout rezervaci z jednoho produktu na druhý. Pro rezervaci jednoho produktu si uživatel může vybrat jiný produkt v ComboBox1 a poté volbou NextArrow2 tuto rezervaci změnit.
Nesouvisející funkce
V tomto okamžiku můžete vztah přesunout z jednoho záznamu na druhý, ale vztah nemůžete úplně odstranit. Můžete použít funkci Unrelate k odpojení záznamu rezervace od jakéhokoli produktu.
Na kartě Zobrazení vyberte možnost Zdroje dat.
V podokně Data vyberte Přidat zdroj dat>Microsoft Dataverse>Reservations>Připojit.
V Gallery2 nastavte vlastnost OnSelect pro NextArrow2 na tento vzorec:
If( IsBlank( ComboBox1.Selected ), Unrelate( Gallery1.Selected.Reservations, ThisItem ), Relate( ComboBox1.Selected.Reservations, ThisItem ) ); Refresh( Reservations )
Zkopírujte Gallery2 do schránky jejím výběrem a stisknutím Ctrl-C.
Vložte duplikát Gallery2 na stejnou obrazovku stisknutím Ctrl-V a poté jej přesuňte do pravého dolního kvadrantu obrazovky.
(volitelné) Pokud jste přidali popisek nad Gallery2, opakujte předchozí dva kroky pro tento popisek.
Pojmenujte duplikát Gallery2 jako Gallery2_1 a poté nastavte jeho vlastnost Items na tento vzorec:
Filter( Reservations, IsBlank( 'Product Reservation' ) )
Zobrazí se upozornění na delegaci, ale s malým množstvím dat v tomto příkladu na tom nezáleží.
S těmito změnami mohou uživatelé vymazat výběr v ComboBox1 pro kontakt, pokud tato osoba nerezervovala produkt. Kontakty, které nerezervovaly žádný produkt, se zobrazí v Gallery2_1, kde uživatelé mohou přiřadit každý kontakt k některému produktu.
N:N
Vytvoření vztahu N:N
Ukázková data nezahrnují vztah M:N, ale jeden takový vytvoříte mezi tabulkou Produkty a tabulkou Kontakty. Uživatelé mohou propojit každý produkt s více než jedním kontaktem a každý kontakt s více než jedním produktem.
Na této stránce, vyberte v levém navigačním panelu Data a poté vyberte Tabulky.
Změňte filtr tabulek tak, aby zahrnoval všechny tabulky.
Ve výchozím nastavení se nezobrazí ukázkové tabulky.
Přejděte dolů, otevřete tabulku Produkt a vyberte Vztahy.
Vyberte Přidat vztah>N:N.
Vyberte pro vztah tabulku Kontakt.
Vyberte Hotovo>Uložit tabulku.
Propojení a zrušení propojení kontaktů s jedním nebo více produkty
Vytvoříte další aplikaci, která se podobá té, kterou jste vytvořili dříve v tomto tématu, ale nová aplikace nabídne vztah N:N. Každý kontakt si bude moci rezervovat více produktů namísto pouze jednoho.
V prázdné aplikaci pro tablety vytvořte ovládací prvek Gallery1 stejně jako v prvním postupu v tomto tématu.
Přidejte další ovládací prvek prázdné svislé Gallery a pojmenujte ji Gallery2 a poté ji přesuňte do pravého horního rohu obrazovky.
Později v tomto tématu přidáte ovládací prvek Combo box pod Gallery2.
Na řádku vzorců nastavte vlastnost Items pro Gallery2 na Gallery1.Selected.Contacts.
Na kartě Vlastnosti nastavte Rozložení na Obrázek a název.
V ovládacím prvku Gallery2 pojmenujte ovládací prvek Label jako Title2 a poté nastavte vlastnost Text na ThisItem.'Full Name'.
Žádný text se v tomto ovládacím prvku neobjeví, dokud neukončíte tento postup a nepřiřadíte kontakt k produktu.
Odstraňte NextArrow2, vložte ikonu Zrušit a pojmenujte ji icon1.
Vlastnost OnSelect ikony Zrušit nastavte na tento vzorec:
Unrelate( Gallery1.Selected.Contacts, ThisItem )
Na kartě Zobrazení vyberte možnost Zdroje dat.
V podokně Data vyberte Přidat zdroj dat>Microsoft Dataverse>Contacts>Připojit.
Pod Gallery2 přidejte ovládací prvek Combo box, pojmenujte jej ComboBox1 a poté nastavte jeho vlastnost Items na Contacts.
Na kartě Vlastnosti nastavte možnost Povolit vícenásobný výběr na Vypnuto.
Vložte ikonu Přidat a nastavte jeho vlastnost OnSelect na tento vzorec:
Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
V této aplikaci mohou uživatelé nyní volně propojovat a rušit propojení sadu kontaktů s každým produktem.
Chcete-li přidat kontakt k produktu, vyberte kontakt v poli se seznamem v dolní části obrazovky a poté vyberte ikonu Přidat.
Chcete-li odebrat kontakt z produktu, vyberte ikonu Zrušit pro tento kontakt.
Na rozdíl od vztahu 1:N vztah N:N umožňuje uživatelům přidružit stejný kontakt k více produktům.
Obráceně: vytváření a rušení vztahů produktů s více kontakty
Vztahy N:N jsou symetrické. Příklad můžete rozšířit o přidávání produktů ke kontaktu a poté přepínat mezi oběma obrazovkami a vidět, jak se vztah jeví z obou směrů.
Nastavte vlastnost OnVisible pro Screen1 na Refresh( Products ).
Když aktualizujete vztah 1:N nebo M:N, aktualizují se pouze data první tabulky z argumentů volání Relate nebo Unrelate. Data druhého argumentu musí být aktualizována ručně, pokud chcete přepínat mezi obrazovkami této aplikace.
Vytvořte duplikát pro Screen1.
Duplikát bude pojmenován Screen1_1 a bude tvořit základ pro sledování vztahů ze strany kontaktů.
Chcete-li vytvořit zpětné zobrazení, změňte tyto vzorce na ovládacích prvcích pro 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 )
Výsledek bude vypadat velmi podobně jako předchozí obrazovka, ale zobrazuje vztah ze strany entity Contacts.
- Screen1_1.OnVisible =
Vložte ikonu Šipka nahoru dolů a nastavte její vlastnost OnSelect na Navigace (Screen1, None). Udělejte to samé pro Screen1 se vzorcem Navigate( Screen1_1, None ).
S touto novou obrazovkou mohou uživatelé přidat kontakt k produktu a poté přepnout na zobrazení kontaktů a zobrazit související produkt. Vztahy jsou symetrické a sdílené mezi oběma obrazovkami.