Релате и Унрелате функције
Односи се на: Цанвас апликације Апликације засноване на моделу
Повезује записе две табеле кроз релацију један-према-више или више-према-више или раскида релацију између њих.
Опис
Функција Relate повезује записе два ентитета кроз релацију „један према више“ или „више према више“ у Microsoft Dataverse. Функција Unrelate преокреће процес и уклања везу.
За релације један-према-више, табела „Више“ има поље страног кључа које упућује на запис табеле „Један“. Релате поставља ово поље да укаже на одређени запис једне табеле, док Унрелате поставља ово поље на празно. Ако је поље већ постављено када се позива Relate, постојећа веза се губи у корист нове везе. Ово поље такође можете подесити користећи функцију Patch или контролу Уређивање обрасца; не морате да користите функцију Relate.
За релације „више према више“, систем који повезује записе одржава скривену табелу придруживања. Не можете директно да приступите овој табели придруживања; она може се читати само кроз пројекцију „један према више“ и поставити путем функције Relate и Unrelate. Ниједна повезана табела нема страни кључ.
Подаци за табелу коју наведете у првом аргументу биће освежени да одражавају промену, али подаци за табелу коју наведете у другом аргументу неће. Ти подаци се морају ручно освежити помоћу функције Refresh да би се приказали резултати операције.
Ове функције никада не стварају нити бришу запис. Они само повезују два записа која већ постоје или раскидају везу између њих.
Ове функције можете користити само у оквиру формула понашања.
Белешка
Ове функције су део функције прегледа, а њихово понашање је доступно само када је омогућена функција Релациони подаци, скупови опција и друге нове функције за CDS. Ово је поставка на нивоу апликације која је подразумевано омогућена за нове апликације. Да бисте пронашли овај прекидач функција, изаберите опцију Поставке, а затим изаберите Предстојеће функције. Ваше повратне информације су нам веома корисне – јавите нам шта мислите у Power Apps форумима заједнице.
Синтакса
Релате(Table1RelatedTable,Table2Record )
- Table1RelatedTable - Обавезно. За запис из Table1, табела записа Table2 повезана кроз релацију један-према-више или више-према-више.
- Table2Record - Обавезно. Запис Table2 за додавање у релацију.
Унрелате(Table1RelatedTable,Table2Record )
- Table1RelatedTable - Обавезно. За запис из Table1, табела записа Table2 повезана кроз релацију један-према-више или више-према-више.
- Table2Record - Обавезно. Запис Table2 за уклањање из релације.
Примери
Размотрите табелу Производи са следећим релацијама, као што се види у 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 ) )
Објашњење које следи извршава управо ове радње на овим табелама помоћу апликације са контролама Галерија и Комбиновани оквир за одабир обухваћених записа.
Ови примери зависе од узорка података који су инсталирани у вашем окружењу. Или креирајте < ДИЦТ__пробно окружење > триал енвиронмент укључујући узорке података или додајте узорке података у постојеће окружење.
Један према више
Повежи функцију
Прво ћете креирати једноставну апликацију за преглед и додељивање резервација које су повезане са производом.
Креирајте апликацију за таблет испочетка.
На картици Приказ изаберите Извори података.
У окну Подаци изаберите Додај податке> изаберите Производи.
Табела Производи део је раније учитаних пробних података.На картици Уметање, додајте празну вертикалну контролу Галерија.
Уверите се да контрола коју сте управо додали има назив Галерија1, а затим је померите и промените јој величину да бисте испунили леву страну екрана.
На картици Својства, поставите својство Галерија1 Предмети на Производи и његов Распоред на Слика и наслов.
У Галерија1, уверите се да контрола Ознака има назив Наслов1, а затим поставите њено својство Текст на ThisItem.Name.
Изаберите екран да не бисте убацили следећу ставку у Галерија1. Додајте другу празну вертикалу контроле Галерија и осигурајте да она има назив Галерија2.
Galerija2 ће приказати резервације за било који производ који корисник одабере у Galeriji1 .
Преместите и промените величину за Галерија2 да бисте испунили горњи десни квадратни екрана.
(опционо) Додајте плаву контролу Ознака изнад Галерија2, као што приказује следећа слика.
У траци са формулама поставите својство Предмети за Галерија2 на Gallery1.Selected.Reservations.
У окну својстава, поставите Распоред за Галерија2 на Наслов
У Галерија2, додајте контролу Комбиновани оквир, осигурајте да има назив Комбиновани оквир, а затим је преместите и промените јој величину да не бисте блокирали остале контроле Галерија2.
На картици Својства, поставите својство за Комбиновани оквир, Предмети на Производи.
Померите се надоле на картици Својства и поставите својство за Комбиновани оквир1, Дозволи вишеструки избор, на Искључено.
У траци са формулама подесите својство Комбиновани оквир1, DefaultSelectedItems, на ThisItem.'Product Reservation'.
У Галерија2, подесите својство NextArrow2, OnSelect, према овој формули:
Relate( ComboBox1.Selected.Reservations, ThisItem )
Када корисник одабере ову икону, тренутна резервација се мења у производ који је корисник изабрао Комбиновани оквир1.
Притисните F5 да бисте тестирали апликацију у режиму прегледа.
Помоћу ове апликације корисник може преместити резервацију са једног производа на други. За резервацију на једном производу, корисник може одабрати други производ у Комбиновани оквир1, а затим може изабрати NextArrow2 да промени резервацију.
Неповезана функција
У овом тренутку можете релацију преместити из једног записа у други, али је не можете у потпуности уклонити. Можете користити функцију Unrelate за искључивање записа о резервацији с било којег производа.
На картици Приказ изаберите Извори података.
У окну Подаци изаберите Додај извор података>Microsoft Dataverse>Резервације>Повежи.
У Галерија2, подесите формулу OnSelect за NextArrow2, према овој формули:
If( IsBlank( ComboBox1.Selected ), Unrelate( Gallery1.Selected.Reservations, ThisItem ), Relate( ComboBox1.Selected.Reservations, ThisItem ) ); Refresh( Reservations )
Копирајте Галерија2 у оставу тако што ћете је одабрати, а затим притиснути Ctrl-C.
Налепите дупликат Галерија2 на исти екран притиском на Ctrl-V, а затим га преместите у доњи десни квадрант на екрану.
(опционално) Ако сте горе додали ознаку Галерија2, поновите претходна два корака за ту ознаку.
Уверите се да се дупликат Галерија2 зове Галерија2_1, а затим поставите њено својство Предмети према овој формули:
Filter( Reservations, IsBlank( 'Product Reservation' ) )
Појављује се упозорење делегације, али нема везе са малом количином података у овом примеру.
Овим изменама корисници могу обрисати избор у Комбиновани оквир1 за контакт, ако та особа није резервисала производ. Контакти који нису резервисали производ приказују се у Галерија2_1 где корисници могу доделити сваки контакт производу.
Више према више
Креирај релацију „више према више“
Пробни подаци не обухватају релацију више-према-више, али креираћете једну између табеле Производи и табеле Контакти. Корисници могу да повежу сваки производ са више контаката, а сваки контакт са више производа.
На овој страници изаберите Подаци у левој траци за навигацију, а затим изаберите Табеле.
Промените филтер табеле тако да укључује све табеле.
Пробне табеле се не приказују подразумевано.
Померите се надоле, отворите табелу Производ и изаберите Релације.
Изаберите Додавање релације>Више према више.
Изаберите табелу Контакт за релацију.
Изаберите Готово>Сачувај табелу.
Повезивање контаката са једним или више производа или раскид веза између њих
Направићете другу апликацију која подсећа на ону коју сте направили раније у овој теми, али нова апликација ће понудити везу „више према више“. Сваки контакт ће моћи да резервише више производа уместо само једног.
У празној апликацији за таблете креирајте Галерија1 као што описује први поступак у овој теми.
Додајте још празну вертикалну контролу Галерија, осигурајте да се зове Галерија2, а затим је преместите у горњи десни угао екрана.
Касније у овој теми, додаћете контролу Комбиновани оквир у оквиру Галерија2.
У траци са формулама поставите својство Предмети за Галерија2 на Gallery1.Selected.Contacts.
На картици Својства, подесите Распоред на Слика и наслов.
У Галерија2, уверите се да контрола Ознака има назив Наслов2, а затим поставите њено својство Текст на ThisItem.'Full Name'.
На тој контроли се неће појавити текст док не завршите овај поступак и не доделите контакт производу.
Избришите NextArrow2, уметните икону Откажи и уверите се да има назив icon1.
Подесите својство OnSelect иконе Откажи на ову формулу:
Unrelate( Gallery1.Selected.Contacts, ThisItem )
На картици Приказ изаберите Извори података.
У окну Подаци изаберите Додај извор података>Microsoft Dataverse>Контакти>Повежи.
У оквир Галерија2, додајте контролу Комбиновани оквир, осигурајте да се зове Комбиновани оквир1, а затим поставите својство Предмети на Контакти.
На картици Својства, поставите Дозволи вишеструки избор на Искључено.
Уметните икону Додај и подесите њено својство OnSelect према овој формули:
Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
Помоћу ове апликације корисници сада могу слободно да повежу скуп контаката са сваким производом и да раскину везу између њих.
Да бисте производу додали контакт, изаберите контакт у комбинованом пољу на дну екрана, а затим изаберите икону Додај.
Да бисте уклонили контакт из производа, изаберите икону Откажи за тај контакт.
За разлику од релације „један према више“, релација „више према више“ омогућава корисницима да повежу исти контакт са више производа.
Обрнуто: повежите и производе са више контаката и раскините везу између њих
Релације „више према више“ су симетричне. Можете проширити пример да бисте додали производе у контакт и затим прешли између два екрана да бисте показали како се релација појављује из било којег смера.
Подесите својство OnVisible за Screen1 на Refresh( Products ).
Када ажурирате релацију један-према-више или више-према-више, освежавају се само подаци табеле првог аргумента позива функције Relate или Unrelate. Други мора да се освежи ручно ако желите да прелазите између екрана ове апликације.
Дуплирајте Screen1.
Дупликат ће носити име Screen1_1 и формираће основу за поглед на релацију са стране контаката.
Да бисте креирали обрнути приказ, промените ове формуле на контролама 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 )
Резултат ће изгледати врло слично претходном екрану, али долази од релације са стране Контакти.
- Screen1_1.OnVisible =
Уметните икону Стрелице горе-доле и подесите својство OnSelect на Navigate( Screen1, None ). Урадите исто на Screen1 помоћу формуле Navigate( Screen1_1, None ).
Помоћу овог новог екрана корисници могу да додају контакт производу, а затим прелазе на преглед контаката и виде повезани производ. Релације су симетричне и деле се између два екрана.