Sdílet prostřednictvím


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 ukazovalo na konkrétní záznam tabulky na straně Jedna, zatímco Unrelate nastavuje toto pole na prázdnou hodnotu. 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

Relate( Tabulka1SouvisejícíTabulka, Tabulka2Záznam )

  • Tabulka1SouvisejícíTabulka – Požadováno. Pro záznam Tabulky1 jde o záznamy Tabulky2 související prostřednictvím vztahu 1:N nebo M:N.
  • Tabulka2Záznam – Požadováno.. Záznam Tabulky2 přidávaný do vztahu.

Unrelate( Tabulka1SouvisejícíTabulka, Tabulka2Záznam )

  • Tabulka1SouvisejícíTabulka – Požadováno. Pro záznam Tabulky1 jde o záznamy Tabulky2 související prostřednictvím vztahu 1:N nebo M:N.
  • Tabulka2Záznam – Požadováno.. 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
Product ↔ Contact Kontakt N:N

Products a Reservations jsou spojeny prostřednictvím vztahu 1:N. 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.

Products a Contacts jsou spojeny prostřednictvím vztahu N:N. 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

Funkce Relate

Nejprve vytvoříte jednoduchou aplikaci, která vám umožní zobrazit a znovu přiřadit rezervace spojené s produktem.

  1. Vytvořte prázdnou aplikaci pro tablet.

  2. Na kartě Zobrazení vyberte možnost Zdroje dat.

  3. V podokně Data vyberte Přidat data> vyberte Produkty.
    Tabulka Produkty je součástí ukázkových dat načtených výše.

  4. Na kartě Vložit přidejte ovládací prvek prázdné svislé Gallery.

  5. 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.

  6. Na kartě Vlastnosti nastavte vlastnost Items ovládacího prvku Gallery1 na Products a jeho Layout na Image and title.

    Konfigurace ProductsGallery.

  7. V ovládacím prvku Gallery1 pojmenujte ovládací prvek Label jako Title1 a poté nastavte vlastnost Text na ThisItem.Name.

    Konfigurace popisku v Gallery1.

  8. 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.

    Gallery2 zobrazí rezervace pro jakýkoli produkt, ve kterém uživatel vybere Gallery1.

  9. Přesunutím a změnou velikosti Gallery2 vyplníte pravý horní kvadrant obrazovky.

  10. (volitelné) Přidejte modrý ovládací prvek Label nad Gallery2, jak ukazuje následující obrázek.

  11. Na řádku vzorců nastavte vlastnost Items pro Gallery2 na Gallery1.Selected.Reservations.

    Konfigurace položek Gallery2.

  12. V podokně vlastností nastavte Rozložení pro Gallery2 na Název.

    Konfigurace rozložení Gallery2.

  13. 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.

  14. Na kartě Vlastnosti nastavte vlastnost Items pro ComboBox1 jako Products.

    Nastavte vlastnost Items na Products.

  15. Přejděte dolů v kartě Vlastnosti a nastavte vlastnost Allow multiple selection pro ComboBox1 na Off.

    Nastavení vlastnosti Povolit vícenásobný výběr na Vypnuto.

  16. Na řádku vzorců nastavte vlastnost DefaultSelectedItems pro ComboBox1 na ThisItem.'Product Reservation'.

    Nastavení DefaultSelectedItems pro ReserveCombo.

  17. 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.

    Konfigurace NextArrow2.

  18. 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.

Ukázka funkce Relate v aplikaci 1:N.

Funkce Unrelate

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.

  1. Na kartě Zobrazení vyberte možnost Zdroje dat.

  2. V podokně Data vyberte Přidat zdroj dat>Microsoft Dataverse>Reservations>Připojit.

  3. 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 )
    

    Konfigurace ikony Doprava.

  4. Zkopírujte Gallery2 do schránky jejím výběrem a stisknutím Ctrl-C.

  5. 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.

  6. (volitelné) Pokud jste přidali popisek nad Gallery2, opakujte předchozí dva kroky pro tento popisek.

  7. 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ží.

    Nastavení vlastnosti Items pro Gallery2_1.

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.

Ukázka funkcí Relate a Unrelate v aplikaci 1:N.

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.

  1. Na této stránce, vyberte v levém navigačním panelu Data a poté vyberte Tabulky.

    Otevřený seznam tabulek.

  2. Změňte filtr tabulek tak, aby zahrnoval všechny tabulky.

    Ve výchozím nastavení se nezobrazí ukázkové tabulky.

    Odeberte filtr tabulek.

  3. Přejděte dolů, otevřete tabulku Produkt a vyberte Vztahy.

  4. Vyberte Přidat vztah>N:N.

  5. Vyberte pro vztah tabulku Kontakt.

  6. 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.

  1. V prázdné aplikaci pro tablety vytvořte ovládací prvek Gallery1 stejně jako v prvním postupu v tomto tématu.

  2. 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.

  3. Na řádku vzorců nastavte vlastnost Items pro Gallery2 na Gallery1.Selected.Contacts.

    Konfigurace ContactsGallery - vlastnost Items.

  4. Na kartě Vlastnosti nastavte Rozložení na Obrázek a název.

    Konfigurace ContactsGallery - Rozložení.

  5. 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.

    Zobrazení jména kontaktu.

  6. Odstraňte NextArrow2, vložte ikonu Zrušit a pojmenujte ji icon1.

  7. Vlastnost OnSelect ikony Zrušit nastavte na tento vzorec:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Konfigurace ikony Zrušit.

  8. Na kartě Zobrazení vyberte možnost Zdroje dat.

  9. V podokně Data vyberte Přidat zdroj dat>Microsoft Dataverse>Contacts>Připojit.

  10. Pod Gallery2 přidejte ovládací prvek Combo box, pojmenujte jej ComboBox1 a poté nastavte jeho vlastnost Items na Contacts.

    Konfigurace vlastnosti Items pro pole se seznamem.

  11. Na kartě Vlastnosti nastavte možnost Povolit vícenásobný výběr na Vypnuto.

    Konfigurace vlastnosti Layout pro pole se seznamem.

  12. Vložte ikonu Přidat a nastavte jeho vlastnost OnSelect na tento vzorec:

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

    Konfigurace ikony Přidat.

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.

Ukázka funkcí Relate a Unrelate v aplikaci N:N.

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ů.

  1. 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.

    Nastavte vlastnost OnVisible na funkci Refresh.

  2. 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ů.

    Duplikát obrazovky.

  3. 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.

    Zobrazení vztahu N:N počínaje kontakty.

  4. 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 ).

    Přidání navigace mezi obrazovkami.

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.

Ukázka vztahu N:N z obou stran.