Partajați prin


Funcțiile de relaționare și dezlegare

Se aplică pentru: Aplicații Canvas Aplicații bazate pe model

Înregistrările Asociere și Anulare asociere a două tabele printr-o relație una-la-mai-multe sau mai-multe-la-mai-multe.

Descriere

Funcția Relate leagă două înregistrări printr-o relație unu-la-mulți sau mulți-la-mulți în Microsoft Dataverse. Funcția Unrelate inversează procesul și elimină legătura.

Pentru relațiile una-la-mai-multe, tabelul Multe are un câmp cu cheie străină care indică o înregistrare a tabelului Una. Asociere setează acest câmp pentru a indica o înregistrare specifică a tabelului Una, în timp ce Anulare asociere setează acest câmp la necompletat. În cazul în care câmpul este deja setat când este apelat Relate, linkul existent se pierde în favoarea noii legături. Puteți, de asemenea, să setați acest câmp folosind funcția Patch sau un control Edit form; nu trebuie să folosiți funcția Relate.

Pentru relații mulți-la-mulți, sistemul care leagă înregistrările menține un tabel de unire ascuns. Nu puteți accesa direct acest tabel de unire; acesta poate fi citit doar printr-o proiecție unu-la-mulți și setați prin funcțiile Relate și Unrelate. Niciun tabel asociat nu are o cheie străină.

Datele pentru tabelul pe care le specificați în primul argument vor fi actualizate pentru a reflecta modificarea, dar datele pentru tabelul pe care îl specificați în al doilea argument nu vor fi. Aceste date trebuie reîmprospătate manual cu ajutorul funcției Refresh pentru a arăta rezultatul operației.

Aceste funcții nu creează și nu șterg niciodată o înregistrare. Ele se corelează sau anulează corelarea doar cu două înregistrări care există deja.

Puteți să utilizați aceste funcții numai în formule comportamentale.

Notă

Aceste funcții fac parte dintr-o funcție de previzualizare, iar comportamentul lor este disponibil numai atunci când este activată caracteristica Date relaționale, seturi de opțiuni și alte caracteristici noi pentru CDS. Aceasta este o setare la nivel de aplicație care este activată implicit pentru aplicațiile noi. Pentru a găsi acest comutator de caracteristici, selectați Setări, apoi selectați Caracteristici viitoare. Feedback-ul dvs. este prețios pentru noi; spuneți-ne ce părere aveți în Forumuri de comunitate Power Apps.

Sintaxă

Asociere( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Obligatoriu. Pentru o înregistrare a Table1, tabelul înregistrărilor Table2 legate de o relație de una-la-mai-multe sau de mai-multe-la-mai-multe.
  • Table2Record - Obligatoriu. Înregistrarea Table2 pentru a adăuga la relație.

Anulare asociere( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Obligatoriu. Pentru o înregistrare a Table1, tabelul înregistrărilor Table2 legate de o relație de una-la-mai-multe sau de mai-multe-la-mai-multe.
  • Table2Record - Obligatoriu. Înregistrarea Table2 pentru a o șterge din relație.

Exemple

Luați în considerare un tabel Produse cu următoarele relații, așa cum se vede în vizualizatorul Power Apps de tabele al portalului:

Nume afișat relație Tabel corelat Tip de relație
Rezervare produs Rezervare Unu-la-mai-mulți
Produs ↔ Persoană de contact Contactați Mai mulți-la-mai mulți

Produse și Rezervări sunt legate printr-o relație unu-la-mai mulți. Pentru a lega prima înregistrare a tabelului Rezervări cu prima înregistrare a tabelului Produse:

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

Pentru a elimina relația dintre aceste înregistrări:

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

În niciun moment nu am creat, eliminat sau înregistrat, doar relația dintre înregistrări a fost modificată.

Produse și Persoane de contact sunt legate printr-o relație mai mulți-la-mai mulți. Pentru a lega prima înregistrare a tabelului Persoane de contact: cu prima înregistrare a tabelului Produse:

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

Întrucât relațiile mai mulți-la-mai mulți sunt simetrice, am fi putut face acest lucru și în sens opus:

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

Pentru a elimina relația dintre aceste înregistrări:

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

sau:

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

Parcurgerea care urmează face exact aceste operații pe aceste tabele folosind o aplicație cu controale Galerie și Cutie combinată pentru selectarea înregistrărilor implicate.

Aceste exemple depind de datele de eșantion instalate în mediul dvs. Fie creați un mediu de probă care să includă date mostre sau adăugați date eșantion într-un mediu existent.

Unu-la-mai-mulți

Funcția Relate

Mai întâi veți crea o aplicație simplă pentru a vizualiza și reatribui rezervările asociate cu un produs.

  1. Creați o aplicația pentru tabletă de la zero.

  2. În fila Vizualizare, selectați Surse de date.

  3. În panoul Date, selectați Adăugați date> selectați Produse.
    Tabelul Produse face parte din eșantionul de date încărcat mai sus.

  4. În fila Inserare, adăugați un control vertical Gallery.

  5. Asigurați-vă că controlul pe care tocmai l-ați adăugat este numit Gallery1, apoi mutați și redimensionați pentru a umple partea stângă a ecranului.

  6. Pe fila Proprietăți, setați proprietatea Elemente pentru Gallery1 la Produse și Aspect la Imagine și titlu.

    Configurare ProductsGallery.

  7. În Gallery1, asigurați-vă că controlul Label este numit Title1, apoi setați proprietatea Text la ThisItem.Name.

    Configurați eticheta în Gallery1.

  8. Selectați ecranul pentru a evita introducerea elementului următor Gallery1. Adăugați un al doilea control vertical gol Gallery și asigurați-vă că este numit Gallery2.

    Gallery2 va afișa rezervările pentru orice produs selectat de utilizator în Gallery1.

  9. Mutați și redimensionați Gallery2 pentru a umple cadranul din dreapta sus al ecranului.

  10. (opțional) Adăugați controlul albastru Label mai sus de Gallery2, conform următorului grafic.

  11. În bara de formule, setați proprietatea Elemente pentru Gallery2 la Gallery1.Selected.Reservations.

    Configurarea elementelor Gallery2.

  12. În panoul de proprietăți, setați Aspectul pentru Gallery2 la Titlu.

    Configurarea aspectului Gallery2.

  13. În Gallery2, adăugați un control Combo box, asigurați-vă că este denumită ComboBox1, apoi mutați și redimensionați pentru a evita blocarea altor controale în Gallery2.

  14. Pe fila Proprietăți, setați proprietatea Elemente pentru ComboBox1 la Produse.

    Setați proprietățile Elemente la Produse.

  15. Derulați în jos în fila Proprietăți și setați proprietatea Se permite selecția multiplă pentru ComboBox1 la Off.

    Setați Se permite selecția multiplă la Off.

  16. În bara de formule, setați proprietatea DefaultSelectedItems pentru ComboBox1 la ThisItem.'Product Reservation'.

    Setați DefaultSelectedItems pentru ReserveCombo.

  17. În Gallery2, setați proprietatea OnSelect pentru NextArrow2 pentru această formulă:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Când utilizatorul selectează această pictogramă, rezervarea curentă se modifică la produsul selectat de utilizator în ComboBox1.

    Configurați NextArrow2.

  18. Apăsați F5 pentru a testa aplicația în modul Previzualizare.

Cu această aplicație, utilizatorul poate muta o rezervare de la un produs la altul. Pentru o rezervare la un produs, utilizatorul poate selecta un produs diferit ComboBox1, apoi selectați NextArrow2 pentru a schimba rezervarea respectivă.

Demonstrați funcția Relate într-o aplicație unu-la-mai mulți.

Funcția Unrelate

În acest moment, puteți muta relația de la o înregistrare la alta, dar nu puteți elimina relația cu totul. Puteți utiliza funcția Unrelate pentru a deconecta o înregistrare de rezervare de la orice produs.

  1. În fila Vizualizare, selectați Surse de date.

  2. În panoul Date, selectați Adăugați sursa de date>Microsoft Dataverse>Rezervări>Conectare.

  3. În Gallery2, setați formula OnSelect pentru NextArrow2 pentru această formulă:

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

    Configurați pictograma Dreapta.

  4. Copiați Gallery2 la Clipboard selectând-o și apoi apăsând Ctrl-C.

  5. Lipiți un duplicat din Gallery2 la același ecran apăsând Ctrl-V, apoi mutați-l în cadranul din dreapta jos al ecranului.

  6. (opțional) Dacă ați adăugat o etichetă mai sus de Gallery2, repetați cei doi pași precedenți pentru acea etichetă.

  7. Asigurați-vă că duplicatul pentru Gallery2 se numește Gallery2_1, apoi setați proprietatea Elemente pentru această formulă:

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

    Apare avertizarea delegării, dar nu va conta cu cantitatea mică de date din acest exemplu.

    Setați proprietatea Elemente pentru Gallery2_1.

Cu aceste modificări, utilizatorii pot șterge selecția din ComboBox1 pentru o persoană de contact dacă acea persoană nu și-a rezervat un produs. Contactele care nu au rezervat un produs apar în Gallery2_1 unde utilizatorii pot atribui fiecare persoană de contact unui produs.

Demonstrați funcțiile Relate și UNrelate într-o aplicație unu-la-mai mulți.

Mai mulți-la-mai mulți

Creați o relație mai mulți-la-mai mulți

Eșantionul de date nu include o relație de mai-multe-la-mai-multe, dar veți crea una între tabelul Produse și tabelul Contacte. Utilizatorii pot lega fiecare produs cu mai mult de o persoană de contact și fiecare persoană de contact cu mai mult de un produs.

  1. Din această pagină, selectați Date în bara de navigare din stânga, apoi selectați Tabele.

    Deschideți lista tabelului.

  2. Schimbați filtrul de tabel pentru a include toate tabelele.

    În mod implicit, tabelele eșantion nu apar.

    Eliminare filtru tabel.

  3. Derulați în jos, deschideți tabelul Produs și selectați Relații.

  4. Selectați Adăugați relația>Mai mulți-la-mai mulți.

  5. Selectați tabel Contact pentru relație.

  6. Selectați Terminat>Salvați tabelul.

Corelați și anulați corelarea persoanelor de contact cu unul sau mai multe produse

Veți crea o altă aplicație care seamănă cu cea pe care ați creat-o mai devreme în acest subiect, dar noua aplicație va oferi o relație mai mulți-la-mai mulți Fiecare persoană de contact va putea rezerva mai multe produse în loc de unul singur.

  1. Într-o aplicație goală pentru tablete, creați Gallery1 conform descrierii din prima procedură.

  2. Adăugați un alt control vertical gol Gallery, asigurați-vă că este numit Gallery2, apoi mutați-l în colțul din dreapta sus al ecranului.

    Mai târziu în acest subiect, veți adăuga un control Casetă Combo sub Gallery2.

  3. În bara de formule, setați proprietatea Elemente pentru Gallery2 la Gallery1.Selected.Contacts.

    Configurați ContactsGallery - Proprietatea Elemente.

  4. Pe fila Proprietăți, setați Aspect la Imagine și titlu.

    Configurați ContactsGallery - Aspect.

  5. În Gallery2, asigurați-vă că controlul Label este numit Title2, apoi setați proprietatea Text la ThisItem.'Full Name'.

    Niciun text nu va apărea în controlul respectiv până când finalizați această procedură și atribuiți o persoană de contact unui produs.

    Afișați numele unei persoane de contact.

  6. Ștergeți NextArrow2, introduceți o pictogramă Anulare și asigurați-vă că este numită icon1.

  7. Setați proprietatea OnSelect pentru pictograma Anulare la această formulă:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Configurați pictograma Anulare.

  8. În fila Vizualizare, selectați Surse de date.

  9. În panoul Date, selectați Adăugați sursa de date>Microsoft Dataverse>Persoane de contact>Conectare.

  10. Sub Gallery2, adăugați un control Cutie Combo, asigurați-vă că este numit ComboBox1, apoi setați proprietatea Elemente la Persoane de contact.

    Configurați proprietatea Elemente a casetei combo.

  11. Pe fila Proprietăți, setați Se permite selecția multiplă la Off.

    Configurați proprietatea Aspect a casetei combo.

  12. Introduceți o pictogramă Adăugare, apoi setați-i proprietatea OnSelect la următoarea formulă:

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

    Configurați Adăugați pictograma.

Cu această aplicație, utilizatorii pot acum corela și anula corelarea în mod liber pentru o serie de persoane de contact cu fiecare produs.

  • Pentru a adăuga o persoană de contact la un produs, selectați persoana de contact din caseta combo din partea de jos a ecranului, apoi selectați pictograma Adăugare.

  • Pentru a elimina o persoană de contact dintr-un produs, selectați pictograma Anulare pentru acea persoană de contact.

    Spre deosebire de relația unu-la-mai mulți, relația mai mulți-la-mai mulți le permite utilizatorilor să asocieze aceeași persoană de contact cu mai multe produse.

Demonstrați funcțiile Relate și UNrelate într-o aplicație mai mulți-la-mai mulți.

În sens invers: corelați și anulați corelarea produselor cu mai multe persoane de contact

Relațiile mai mulți-la-mai mulți sunt simetrice. Puteți extinde exemplul pentru a adăuga produse la o persoană de contact și apoi comutați între cele două ecrane pentru a arăta cum apare relația din oricare direcție.

  1. Setați proprietatea OnVisible a Screen1 la Împrospătare( Produse).

    Când actualizați o relație unu-la-mai-mulți sau mai-mulți-la-mai-mulți, numai datele din primul tabel de argumente ale apelului Asociere sau Anulare asociere sunt reîmprospătate. A doua trebuie reîmprospătată manual dacă doriți să comutați între ecranele acestei aplicații.

    Setați proprietatea OnVisible la funcția Refresh.

  2. Dublați Screen1.

    Dublura va fi numită Screen1_1 și formează baza pentru a privi relațiile din partea persoanelor de contact.

    Dublați un ecran.

  3. Pentru a crea vederea inversă, schimbați aceste formule la comenzile de pe 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 )

    Rezultatul va arata foarte asemănător cu ecranul anterior, dar are relația din partea Persoanelor de contact.

    Afișați relația mai mulți-la-mai mulți începând cu persoanele de contact.

  4. Introduceți o pictogramă Săgeata în sus și în jos și setați proprietatea OnSelect la Navigate (Screen1, None). Procedați la fel pe Screen1 cu formula Navigate( Screen1_1, None ).

    Adăugați navigare între ecrane.

Cu acest nou ecran, utilizatorii pot adăuga o persoană de contact la un produs și apoi pot comuta la o vizualizare a persoanelor de contact și a vedea produsul asociat. Relațiile sunt simetrice și sunt partajate între cele două ecrane.

Demonstrați relații mai mulți-la-mai mulți din cealaltă parte.