Споделяне чрез


Свързани и несвързани функции

Отнася се за: Приложения за платно Приложения , задвижвани от модели

Свързване и несвързване на записи на две таблици чрез връзка един към много или много към много.

Описание

Функцията Relate свързва два записа чрез взаимоотношение „един към много“ или „много към много“ в Microsoft Dataverse. Функцията Unrelate обръща процеса и премахва връзката.

За връзките един към много таблицата Много има поле с външен ключ, което сочи към запис на таблицата Едно. Relate задава това поле да сочи към определен запис от таблицата Едно, докато Unrelate задава това поле на празно. Ако полето вече е зададено при извикването на Relate, съществуващата връзка се губи в полза на новата връзка. Можете също да зададете това поле с помощта на функцията Patch или контролата Редактиране на формуляр; не е необходимо да използвате Relate функция.

За релации много към много, системата, която свързва записите, поддържа скрита таблица за присъединяване. Не можете да получите достъп до тази таблица за присъединяване директно; тя може да бъде прочетена само чрез проекция на един към много и да се зададе през Relate и Unrelate функции. Нито една свързана таблица няма външен ключ.

Данните за таблицата, която сте посочили в първия аргумент, ще бъдат опреснени, за да отразят промяната, но данните за таблицата, която сте посочили във втория аргумент, няма. Тези данни трябва да се опресняват ръчно с функцията Refresh за показване на резултата от операцията.

Тези функции никога не създават или изтриват запис. Те само свързват или разделят два записа, които вече съществуват.

Можете да използвате тези функции само във формули на поведение.

Бележка

Тези функции са част от функцията за визуализация и тяхното поведение е достъпно само когато Релационни данни, набори от опции и други нови функции за CDS функция е активирана. Това е настройка на ниво приложение, която е активирана по подразбиране за нови приложения. За да намерите този превключвател на функции, изберете Настройки, след което изберете Предстоящи функции. Вашето мнение е много ценно за нас - моля, уведомете ни какво мислите в форуми на общността на Power Apps.

Синтаксис

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Задължително. За запис на Table1, таблицата на Table2 записи, свързани чрез връзка един към много или много към много.
  • Table2Record - Задължително. Записът Таблица2, който да добавите към връзката.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Задължително. За запис на Table1, таблицата на Table2 записи, свързани чрез връзка един към много или много към много.
  • Table2Record - Задължително. Записът Таблица2, който да премахнете от релацията.

Примери

Помислете за Продукти таблица със следните връзки, както се вижда в преглед на таблици на портала на Power Apps:

Име за показване на релация Свързана таблица Тип релация
Резервация на продукта Резервация Едно към много
Продукт ↔ Контакт Контакт Много към много

Продукти и Резервации са свързани чрез връзка „Един към много“. За да свържете първия запис на таблица Резервации с първия запис на таблицата Продукти:

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

За да премахнете връзката между тези записи:

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

В нито един момент не създадохме или премахнахме или запис, само отношенията между записите бяха променени.

Продукти и Контакти са свързани чрез връзка „много към много“. За да свържете първия запис на таблица Контакти с първия запис на таблицата Продукти:

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

Тъй като релациите много към много са симетрични, бихме могли да направим това и в обратна посока:

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

За да премахнете връзката между тези записи:

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

или:

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

Следващата разходка прави точно тези операции на тези маси с помощта на приложение с контроли Галерия и Комбинирана кутия за избор на участващите записи.

Тези примери зависят от примерните данни, инсталирани във вашата среда. Или създайте пробна среда, включваща примерни данни, или добавете примерни данни към съществуваща среда.

Едно към много

Relate функция

Първо ще създадете обикновено приложение за преглед и преназначаване на резервациите, свързани с даден продукт.

  1. Създаване на приложение за таблет от нулата.

  2. В раздела Изглед и след това изберете Източници на данни.

  3. В екрана данни изберете Добавяне на данни> изберете Продукти.
    Таблицата Продукти е част от примерните данни, заредени по-горе.

  4. В раздела Вмъкване, добавете празен вертикал Галерия контрола.

  5. Уверете се, че контролата, която току-що добавихте, е кръстена Gallery1 и след това го преместете и оразмерете, за да запълни лявата страна на екрана.

  6. В раздела Свойства, задайте свойството Елементи на Gallery1 на Продукти и оформление на Изображение и заглавие.

    Конфигурирайте ProductsGallery.

  7. В Gallery1, гарантирайте, че етикет контролата е назована Title1 и след това задайте свойството Текст на ThisItem.Name.

    Конфигурирайте етикета в Gallery1.

  8. Изберете екрана, за да не вмъквате следващия елемент в Gallery1. Добавете втора празна вертикална контрола галерия и се уверете, че е кръстена Gallery2.

    Gallery2 ще покаже резервациите за продукта, който потребителят избере Gallery1.

  9. Преместете и оразмерете Gallery2, за да запълните горния десен квадрант на екрана.

  10. (незадължително) Добавете контролата етикет над Gallery2, както показва следващата графика.

  11. В лентата с формули задайте свойството Елементи на Gallery2 на Gallery1.Selected.Reservations.

    Конфигуриране на елементи на Gallery2.

  12. В екрана свойства задайте Оформление на Gallery2 на Заглавие.

    Конфигуриране на оформление на Gallery2.

  13. В Gallery2 добавете контрола Комбинирано поле, уверете се, че е кръстена ComboBox1 и след това я преместете и оразмерете, за да не блокирате другите контроли в Gallery2.

  14. В раздела Свойства задайте свойството Елементи на ComboBox1 на Продукти.

    Задайте свойствата на елементи на продукти.

  15. Превъртете надолу в раздела Свойства и задайте Разрешаване на множествен избор свойството на ComboBox1 на Изключено.

    Задайте „Разрешаване на множествен избор” на „Изключено”.

  16. В лентата с формули, задайте DefaultSelectedItems свойството на ComboBox1 на ThisItem.'Product Reservation'.

    Задайте DefaultSelectedItems за ReserveCombo.

  17. В Gallery2 задайте OnSelect свойство на NextArrow2 на тази формула:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Когато потребителят избере тази икона, текущата резервация се променя на продукта, който потребителят е избрал ComboBox1.

    Конфигурирайте NextArrow2.

  18. Натиснете F5, за да тествате приложението в режим на преглед.

С това приложение потребителят може да премести резервация от един продукт в друг. За резервация на един продукт, потребителят може да избере различен продукт в ComboBox1 и след това изберете NextArrow2, за да промените тази резерва.

Демонстрирайте функцията за свързване в приложение за един към много.

Unrelate функция

На този етап можете да преместите връзката от един запис в друг, но не можете да премахнете връзката изцяло. Можете да използвате Unrelate функция за изключване на запис за резервация от всеки продукт.

  1. В раздела Изглед и след това изберете Източници на данни.

  2. В екрана Данни изберете Добавяне на източник на данни>Microsoft Dataverse>Резервации>Свързване.

  3. В Gallery2 задайте формулата OnSelect за NextArrow2 на тази формула:

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

    Конфигурирайте иконата надясно.

  4. Копирайте Gallery2 в клипборда, като го изберете и след това натиснете Ctrl-C.

  5. Поставете дубликат на Gallery2 към същия екран, като натиснете Ctrl-V, след което го преместете в долния десен квадрант на екрана.

  6. (незадължително) Ако сте добавили етикет по-горе Gallery2, повторете предишните две стъпки за този етикет.

  7. Уверете се, че дубликатът на Gallery2 е кръстен Gallery2_1 и след това задайте неговото Елементи свойство на тази формула:

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

    Появява се предупреждение за делегиране, но няма значение с малкия обем данни в този пример.

    Задаване на свойството „Елементи” на Gallery2_1.

С тези промени потребителите могат да изчистят избора в ComboBox1 за контакт, ако този човек не е резервирал продукт. Контакти, които не са резервирали продукт, се показват в Gallery2_1, където потребителите могат да присвоят всеки контакт на продукт.

Демонстрирайте функциите Relate и Unrelate за свързване в приложение за един към много.

Много към много

Създаване на много-към-много релация

Примерните данни не включват връзка много към много, но ще създадете такава между таблицата Продукти и таблицата Контакти. Потребителите могат да свържат всеки продукт с повече от един контакт, а всеки контакт с повече от един продукт.

  1. От тази страница, изберете Данни в лявата навигационна лента и след това изберете Таблици.

    Отваряне на списък на таблица.

  2. Променете филтъра на таблицата, за да включите всички таблици.

    По подразбиране примерните таблици не се показват.

    Премахване на филтъра на таблица.

  3. Превъртете надолу, отворете Продукт таблица и изберете Релации.

  4. Изберете Добавяне на релация>много към много.

  5. Изберете Контакт таблица за релацията.

  6. Изберете Готово>Записване на таблица.

Свържете и разделете контактите с един или повече продукти

Ще създадете друго приложение, което прилича на това, което сте създали по-рано в тази тема, но новото приложение ще предложи връзка много към много. Всеки контакт ще може да резервира няколко продукта вместо само един.

  1. В празно приложение за таблети създайте Gallery1, както първата процедура в тази тема описва.

  2. Добавете друга празна вертикална контрола галерия, уверете се, че е кръстена Gallery2 и след това я преместете в горния десен ъгъл на екрана.

    По-късно в тази тема ще добавите и контрола Комбинирано поле под Gallery2.

  3. В лентата с формули задайте свойството Елементи на Gallery2 на Gallery1.Selected.Contacts.

    Конфигуриране на ContactsGallery – свойство на елементи.

  4. В раздела Свойства, задайте оформление на Изображение и заглавие.

    Конфигуриране на ContactsGallery – оформление.

  5. В Gallery2, гарантирайте, че етикет контролата е назована Title2 и след това задайте свойството Текст на ThisItem.'Full Name'.

    Никой текст няма да се появи в тази контрола, докато не завършите тази процедура и не назначите контакт на продукт.

    Показване на име на контакт.

  6. Изтрийте NextArrow2, поставете икона Отмяна и се уверете, че е кръстена icon1.

  7. Задайте свойството OnSelect на иконата отмяна на тази формула:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Конфигурирайте иконата за отмяна.

  8. В раздела Изглед и след това изберете Източници на данни.

  9. В екрана Данни изберете Добавяне на източник на данни>Microsoft Dataverse>Контакти>Свързване.

  10. Под Gallery2, добавете контрола Комбинирано поле, уверете се, че е кръстена ComboBox1 и след това задайте свойството Елементи на Контакти.

    Конфигуриране на свойството на елементи на комбинираното поле.

  11. В раздела Свойства задайте Разрешаване на множествен избор на Изключено.

    Конфигуриране на свойството за оформление на комбинираното поле.

  12. Вмъкнете икона Добавяне и задайте свойството й OnSelect на тази формула:

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

    Конфигуриране на иконата „Добавяне”.

С това приложение потребителите вече могат свободно да свързват и да свързват набор от контакти с всеки продукт.

  • За да добавите контакт към продукт, изберете контакта в полето за комбиниране в долната част на екрана и след това изберете иконата Добави.

  • За да премахнете контакт от продукт, изберете Отмяна икона за този контакт.

    За разлика от един към много, връзката много към много позволява на потребителите да свързват един и същи контакт с множество продукти.

Демонстрирайте функциите Relate и Unrelate за свързване в приложение за много към много.

Обратно: свържете и разделете продукти с множество контакти

Релациите много към много са симетрични. Можете да разширите примера, за да добавите продукти към контакт и след това да преминете между двата екрана, за да покажете как връзката изглежда от всяка посока.

  1. Задайте свойството OnVisible на Screen1 на Refresh( Products ).

    Когато актуализирате връзка един към много или много към много, само данните от първата таблица с аргументи на Relate или Unrelate обаждането се опреснява. Вторият трябва да бъде освежен ръчно, ако искате да прелиствате между екраните на това приложение.

    Задайте свойството OnVisible на функцията Refresh.

  2. Дублирайте Screen1.

    Дубликатът ще бъде кръстен Screen1_1 и от основата за разглеждане на отношенията от страната на контактите.

    Дублиране на екран.

  3. За да създадете обратен изглед, променете тези формули на контролите на 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 )

    Резултатът ще изглежда много подобен на предишния екран, но идва при връзката от страната Контакти.

    Показвайте релацията „много към много”, като започнете от контактите.

  4. Вмъкнете икона Стрелките нагоре надолу и задайте OnSelect свойство на Navigate( Screen1, None ). Направете същото на Screen1 с формулата Navigate( Screen1_1, None ).

    Добавете навигация между екраните.

С този нов екран потребителите могат да добавят контакт към продукт и след това да прелистят към изглед на контактите и да видят асоциирания продукт. Връзките са симетрични и се споделят между двата екрана.

Демонстрирайте релацията „много към много” от двете страни.