Funkcje Relate i Unrelate
Dotyczy: Aplikacje kanwy Aplikacje oparte na modelu
Relate i unrelate — wiąże rekordy dwóch tabel za pomocą relacji jeden-do-wielu lub wiele-do-wielu.
Opis
Funkcja Relate wiąże rekordy dwóch jednostek za pomocą relacji jeden-do-wielu lub wiele-do-wielu w Microsoft Dataverse. Funkcja Unrelate odwraca proces i usuwa łącze.
W przypadku rekordów jeden do relacje tabela Wiele zawiera pole klucza obcych, które wskazuje na rekord tabeli Jeden. Opcja Powiązanie ustawia to pole tak, aby wskazywało określony rekord tabeli One, a opcja Nie powiąż ustawia to pole jako puste. Jeśli pole jest już ustawione w momencie, w którym wywołana jest funkcja Relate, istniejące łącze zostanie utracone na korzyść nowego łącza. To pole można również ustawić przy użyciu funkcji Patch lub Edit form . nie jest konieczne korzystanie z funkcji Relate.
W przypadku relacje wiele do wielu, system, który łączy rekordy, zachowuje ukrytą tabelę połączeń. Nie można uzyskać dostępu bezpośrednio do tej tabeli; można ją odczytać tylko za pośrednictwem projekcji jeden do wielu i ustawianej za pośrednictwem funkcji Relate oraz Unrelate. Żadna z tabel pokrewnych nie ma klucza obcych.
Dane tabeli określonej w pierwszym argumencie zostaną odświeżone w celu odzwierciedlenia zmiany, ale dane tabeli określonej w drugim argumencie nie. Te dane muszą zostać ręcznie odświeżone przy użyciu funkcji Refresh w celu wyświetlenia wyniku operacji.
Te funkcje nigdy nie tworzą ani nie usuwają rekordu. Mogą tylko powiązać lub anulować powiązanie między dwoma rekordami, które już istnieją.
Tych funkcji można używać tylko w formułach dotyczących zachowań.
Uwaga
Te funkcje są dostępne w wersji zapoznawczej, a ich zachowanie jest dostępne tylko wtedy, gdy włączona jest opcja Danych relacyjnych, zestawów opcji i inne nowe funkcje CDS. Jest to ustawienie na poziomie aplikacji, które jest domyślnie włączone w przypadku nowych aplikacji. Aby znaleźć ten przełącznik funkcji, wybierz Ustawienia, a następnie Nadchodzące funkcje. Twoja opinia jest dla nas bardzo ważna – przekaż nam ją na forach społeczności użytkowników usługi Power Apps.
Składnia
Relate( Table1RelatedTable,Table2Record )
- Tabela1PowiązaneTabela — wymagane. W przypadku rekordu Table1 tabela z rekordami Table2 powiązana relacją jeden-do-wielu lub wiele-do-wielu.
- Table2Record - Wymagane. Rekord Table2, który ma być dodaj do relacji.
Unrelate(Table1RelatedTable,Table2Record )
- Tabela1PowiązaneTabela — wymagane. W przypadku rekordu Table1 tabela z rekordami Table2 powiązana relacją jeden-do-wielu lub wiele-do-wielu.
- Table2Record - Wymagane. Rekord Table2 do usunięcia z relacji.
Przykłady
Rozważ tabelę Produkty z następującymi relacje jak w przeglądarce tabel Power Apps Portals:
Wyświetlana nazwa encji relacji | Powiązana tabela | Typ relacji |
---|---|---|
Rezerwacja produktu | Rezerwacja | Jeden-do-wielu |
Kontakt z produktem ↔ | Kontakt biznesowy | Wiele do wielu |
Produkty i Rezerwacje są powiązane za pomocą relacji jeden-do-wielu. Aby powiązać pierwszy rekord tabeli Rezerwacje z pierwszym rekordem tabeli Produkty:
Relate( First( Products ).Reservations, First( Reservations ) )
Aby usunąć relację między tymi rekordami:
Unrelate( First( Products ).Reservations, First( Reservations ) )
W żadnym momencie nie utworzono lub nie usunięto rekordu, a tylko relacje między rekordami zostały zmodyfikowane.
Produkty i kontakty są powiązane za pomocą relacji wiele-do-wielu. Aby powiązać pierwszy rekord tabeli Kontakty z pierwszym rekordem tabeli Produkty:
Relate( First( Products ).Contacts, First( Contacts ) )
Relacje wiele do wielu są symetryczne, można działanie również wykonać w przeciwnym kierunku:
Relate( First( Contacts ).Products, First( Products ) )
Aby usunąć relację między tymi rekordami:
Unrelate( First( Products ).Contacts, First( Contacts ) )
or:
Unrelate( First( Contacts ).Products, First( Products ) )
Opis poniższych działań dotyczy dokładnie tych operacji wykonywanych w tych tabelach za pomocą aplikacji z formantami Gallery i Combo box służące do wybierania odpowiednich rekordów.
Te przykłady zależą od przykładowych danych instalowanych w środowisku użytkownika. Można Utworzyć w środowisku próbnym przykładowe dane lub Dodać przykładowe dane do istniejącego środowiska.
Jeden-do-wielu
Powiąż, funkcja
Najpierw zostanie utworzona prosta aplikacja służąca do wyświetlania i ponownego przypisywania rezerwacji skojarzonych z danym produktem.
Tworzenie pustej aplikacji na tablet.
Na karcie Widok wybierz pozycję Źródła danych.
W okienku Dane wybierz opcję Dodaj dane> wybierz Produkty.
Tabela Produkty jest częścią przykładowych danych załadowanych powyżej.Na karcie Wstaw dodaj pustą kontrolkę pionowej Gallery.
Upewnij się, że dodany formant ma nazwę Gallery1, a następnie przenieś go i zmień jego rozmiar, aby wypełnić lewą stronę ekranu.
Na karcie Właściwości ustaw właściwość Items w Gallery1 na Products, a jej Układ na Obraz i tytuł.
W Gallery1 upewnij się, że kontrolka Label ma nazwę Title1, a następnie ustaw jej właściwość Text na ThisItem.Name.
Zaznacz ekran, aby uniknąć wstawiania następnego elementu do Gallery1. Dodaj drugą pustą kontrolkę pionową Gallery i upewnij się, że ma ona nazwę Gallery2.
Gallery2 pokaże rezerwacje dla dowolnego produktu, który użytkownik wybierze w Gallery1.
Przenieś i zmień rozmiar Gallery2, aby wypełnić prawą górną ćwiartkę ekranu.
(opcjonalnie) Dodaj niebieską kontrolkę Label nad Gallery2, jak pokazano na następnej ilustracji.
Na pasku formuł ustaw właściwość Items w Gallery2 na Gallery1.Selected.Reservations.
W okienku właściwości ustaw dla opcji Układ w Gallery2 na Tytuł.
W Gallery2 dodaj kontrolkę Combo box, upewnij się, że jest ona nazwany ComboBox1, a następnie przenieś i zmień jej rozmiar, aby uniknąć blokowania innych kontrolek w Gallery2.
Na karcie Właściwości ustaw właściwość Items w ComboBox1 na Products.
Przewiń w dół na karcie Properties i ustaw właściwość Allow multiple selection w ComboBox1 na wartość Wył..
Na pasku formuł ustaw właściwość DefaultSelectedItems w ComboBox1 na ThisItem.'Product Reservation'.
W Gallery2 ustaw właściwość NextArrow2 w OnSelect na tę formułę:
Relate( ComboBox1.Selected.Reservations, ThisItem )
Kiedy użytkownik wybierze tę ikonę, bieżąca rezerwacja jest zmieniana na produkt wybrany przez użytkownika w programie ComboBox1.
Naciśnij klawisz F5, aby przetestować aplikację w trybie podglądu.
W przypadku tej aplikacji użytkownik może przenieść rezerwację z jednego produktu na inny. Aby zarezerwować jeden produkt, użytkownik może wybrać inny produkt w programie ComboBox1, a następnie wybrać opcję NextArrow2 w celu zmiany tej rezerwacji.
Unrelate (funkcja niepowiązana)
W tym momencie relację można przenieść z jednego rekordu do innego, ale nie można jej całkowicie usunąć. Można używać funkcji Unrelate, aby odłączyć rekord zastrzeżenia z dowolnego produktu.
Na karcie Widok wybierz pozycję Źródła danych.
W okienku Dane wybierz pozycję Dodaj źródło danych>Microsoft Dataverse>Rezerwacje>Połącz.
W Gallery2 ustaw właściwość OnSelect w NextArrow2 na tę formułę:
If( IsBlank( ComboBox1.Selected ), Unrelate( Gallery1.Selected.Reservations, ThisItem ), Relate( ComboBox1.Selected.Reservations, ThisItem ) ); Refresh( Reservations )
Skopiuj formułę Gallery2 do podręcznego schowka, wybierając ją, a następnie naciskając klawisze Ctrl+C.
Wklej duplikat Gallery2 na taki sam ekran, naciskając klawisze CTRL + V, a następnie przesuń go w prawą dolną ćwiartkę ekranu.
(opcjonalnie) Jeśli dodano etykietę, która znajduje się nad Gallery2, powtórz dwa poprzednie kroki dla tej etykiety.
Upewnij się, że duplikat Gallery2 ma nazwę Gallery2_1, a następnie ustaw jej właściwośćItems na tę formułę:
Filter( Reservations, IsBlank( 'Product Reservation' ) )
Zostanie wyświetlone ostrzeżenie delegacji, ale nie ma to istotnego znaczenia dla niewielkich nakładów danych w tym przykładzie.
W przypadku tych zmian użytkownicy mogą wyczyścić wybrany element w programie ComboBox1 dla danego kontaktu, jeśli dana osoba nie zarezerwowała produktu. Kontakty, które nie zarezerwowały produktu, są wyświetlane w Gallery2_1, gdzie użytkownicy mogą przypisywać poszczególne kontakty do produktów.
Wiele do wielu
Tworzenie relacji wiele-do-wielu
Przykładowe dane nie zawierają relacji wiele-do-wielu, ale utworzysz ją między tabelą Produkty a tabelą Kontakty. Użytkownicy mogą powiązać każdy produkt z kilkoma kontaktami i poszczególnymi kontaktami z więcej niż jednym produktem.
Na tej stronie wybierz pozycję Dane na lewym pasku nawigacyjnym, a następnie wybierz pozycję Tabele.
Zmień filtr tabel, aby uwzględnić wszystkie tabele.
Domyślnie nie są wyświetlane tabele przykładowe.
Przewiń w dół, otwórz tabelę Produkt i wybierz opcję Relacje.
Wybierz Dodaj relację>Wiele-do-wielu.
Wybierz tabelę Kontakt dla relacji.
Wybierz Gotowe>Zapisz tabelę.
Powiązanie i relacje kontaktów z jednym lub kilkoma produktami
Zostanie utworzona inna aplikacja podobna do poprzedniej w tym temacie, ale nowa aplikacja będzie oferować relację wiele-do-wielu. Każdy kontakt będzie mógł rezerwować wiele produktów, a nie tylko jeden.
W pustej aplikacji na tablety utwórz Gallery1 jako pierwszą procedurę opisaną w tym temacie.
Dodaj inną pustą kontrolkę pionowej Gallery i upewnij się, że jest ona nazwana Gallery2, a następnie przenieść ją w prawym górny róg ekranu.
W dalszej części tego tematu dodasz kontrolkę Combo box w obszarze Gallery2.
Na pasku formuł ustaw właściwość Items w Gallery2 na Gallery1.Selected.Contacts.
Na karcie Właściwość ustaw Układ na Obraz i tytuł.
W Gallery2 upewnij się, że kontrolka Label ma nazwę Title2, a następnie ustaw jej właściwość Text na ThisItem.'Full Name'.
W tej kontrolce tekst nie pojawi się do czasu zakończenia tej procedury i przypisania kontaktu do produktu.
Usuń NextArrow2, wstaw ikonę Anuluj i upewnij się, że nazwa ma nazwę Icon1.
Dla właściwości Anuluj ikony OnSelect ustaw następującą formułę:
Unrelate( Gallery1.Selected.Contacts, ThisItem )
Na karcie Widok wybierz pozycję Źródła danych.
W okienku Dane wybierz pozycję Dodaj źródło danych>Microsoft Dataverse>Kontakty>Połącz.
W obszarze Gallery2 dodaj kontrolkę Combo box, upewnij się, że jest ona nazwana ComboBox1, a następnie ustaw jej właściwość Items na Contacts.
Na karcie Właściwości ustaw opcję Zezwalaj na wiele zaznaczeń na Wył..
Wstaw dodatkową ikonę Dodaj i ustaw jej właściwość OnSelect na następującą formułę:
Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
Dzięki tej aplikacji użytkownicy mogą teraz swobodnie powiązać i odłączać zestaw kontaktów do każdego produktu.
Aby dodać kontakt do produktu, zaznacz kontakt w polu kombi u dołu ekranu, a następnie wybierz ikonę Dodaj.
Aby usunąć kontakt z produktu, wybierz ikonę Anuluj dla tego kontaktu.
W przeciwieństwie do typu jeden-do-wielu, relacja wiele-do-wielu umożliwia użytkownikom skojarzenie tego samego kontaktu z wieloma produktami.
Odwrotnie: powiązanie i relacje produktów z wieloma kontaktami
Relacje wiele do wielu są symetryczne. Można rozszerzyć przykład, aby dodać do kontaktu produkty, a następnie odwrócić pomiędzy dwoma ekranami w celu pokazania, w jaki sposób relacje będą wyświetlane w obu kierunkach.
Ustaw właściwość OnVisible parametru Screen1 na wartość Refresh( Products ).
Gdy aktualizujesz relację jeden-do-wielu lub wiele-do-wielu, odświeżane są tylko dane pierwszej tabeli argumentów wywołania Relate lub Unrelate. Drugi element musi zostać odświeżony ręcznie, jeśli użytkownik chce odwrócić między ekranami tej aplikacji.
Zduplikowanie Screen1.
Duplikat będzie mieć nazwę Screen1_1 i stanowić podstawę widoku relacji ze strony kontaktu.
Aby utworzyć widok odwrócenia, zmień te formuły w kontrolkach 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 )
Wyniki będą wyglądać podobnie do poprzedniego ekranu, ale pochodzą ze strony Kontaktu.
- Screen1_1.OnVisible =
Wstaw ikonę Strzałki w górę i dół i ustaw właściwość OnSelect na wartość Navigate( Screen1, None ). Należy wykonać te same czynności na Screen1 z formułą Navigate( Screen1_1, None ).
Korzystając z tego nowego ekranu, użytkownicy mogą dodać kontakt do produktu, a następnie odwrócić do widoku kontaktów i znaleźć powiązany produkt. Relacje są symetryczne i współużytkowane na dwóch ekranach.