Comparteix a través de


Relacionar i desrelacionar funcions

S'aplica a: Aplicacions del llenç Aplicacions basades en models

Relacioneu registres de dues taules i elimineu-ne la relació mitjançant una relació d'un a diversos o de diversos a diversos.

Descripció

La funció Relate enllaça dos registres mitjançant una relació d'un a diversos o de diversos a diversos al Microsoft Dataverse. La funció Unrelate reverteix el procés i suprimeix l'enllaç.

Per a les relacions d'un a diversos, la taula Diversos té un camp de clau estrangera que apunta a un registre de la taula Un. Relate defineix aquest camp per apuntar a un registre específic de la taula Un, mentre que Unrelate defineix aquest camp en blanc. Si el camp ja s'ha definit quan es truca a Relate, l'enllaç existent es perd en favor de l'enllaç nou. També podeu definir aquest camp mitjançant la funció Patch o un control Edita el formulari; no cal utilitzar la funció Relate.

Per a les relacions de diversos a diversos, el sistema que enllaça els registres manté una taula d'unió oculta. No podeu accedir directament a aquesta taula d'unió; es pot llegir només a través d'una projecció d'un a diversos i només es pot definir per mitjà de les funcions Relate i Unrelate. Cap de les taules relacionades té una clau estrangera.

Les dades de la taula que especifiqueu al primer argument s'actualitzaran per reflectir el canvi, però les dades de la taula que especifiqueu al segon argument no. Les dades s'han d'actualitzar manualment amb la funció Refresh per mostrar el resultat de l'operació.

Aquestes funcions mai no creen ni suprimeixen un registre. Només es relacionen (o es deixen de relacionar) dos registres que ja existeixen.

Només podeu utilitzar aquestes funcions en fórmules de comportament.

Nota

Aquestes funcions formen part d'una característica de versió preliminar i el seu comportament només està disponible quan la característica Dades relacionals, conjunts d'opcions i altres característiques noves per al CDS està habilitada. Es tracta d'una configuració de l'aplicació que s'habilita per defecte per a les noves aplicacions. Per a trobar aquest commutador de característica, seleccioneu Configuració i seleccioneu Pròximes característiques. Els vostres comentaris són molt valuosos per nosaltres; feu-nos-ho saber la vostra opinió als fòrums de la comunitat del Power Apps.

Sintaxi

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable: necessari. Per a un registre de Table1, la taula de registres Table2 està relacionada mitjançant una relació d'un a diversos o de diversos a diversos.
  • Table2Record: necessari. El registre de Table2 que s'afegirà a la relació.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable: necessari. Per a un registre de Table1, la taula de registres Table2 està relacionada mitjançant una relació d'un a diversos o de diversos a diversos.
  • Table2Record: necessari. El registre de Table2 que s'eliminarà de la relació.

Exemples

Penseu en una taula de Productes amb les relacions següents, tal com es mostra al visualitzador de taules del portal del Power Apps:

Nom de visualització de la relació Taula relacionada Tipus de relació
Reserva de producte Reserva Un a diversos
Producte ↔ contacte Contacte Diversos a diversos

Productes i Reserves es relacionen per mitjà d'una relació d'un a diversos. Per relacionar el primer registre de la taula de Reserves amb el primer registre de la taula de Productes:

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

Per suprimir la relació entre aquests registres:

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

En cap moment no hem creat ni suprimit cap registre, només s'ha modificat la relació entre els registres.

Productes i Contactes es relacionen per mitjà d'una relació de diversos a diversos. Per relacionar el primer registre de la taula de Contactes amb el primer registre de la taula de Productes:

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

Com que les relacions de diversos a diversos són simètriques, també es podria haver fet en sentit invers:

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

Per suprimir la relació entre aquests registres:

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

o bé:

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

L'explicació següent fa exactament aquestes operacions en aquestes taules utilitzant una aplicació amb controls de Galeria i Quadre de combinació per seleccionar els registres implicats.

Aquests exemples depenen de les dades d'exemple instal·lades a l'entorn. Creeu un entorn de prova que inclogui dades d'exemple o afegiu dades d'exemple a un entorn existent.

Un a diversos

Funció Relate

En primer lloc, heu de crear una aplicació senzilla per visualitzar i reassignar les reserves associades a un producte.

  1. Creeu una aplicació de tauleta des de zero.

  2. A la pestanya Visualització, seleccioneu Fonts de dades.

  3. A la subfinestra Dades, seleccioneu Afegeix dades> seleccioneu Productes.
    La taula Productes forma part de les dades d'exemple carregades anteriorment.

  4. A la pestanya Insereix, afegiu un control Galeria vertical en blanc.

  5. Assegureu-vos que el control que acabeu d'afegir s'anomeni Gallery1 i, després, desplaceu-lo i redimensioneu-lo per omplir la part esquerra de la pantalla.

  6. A la pestanya Propietats, definiu la propietat Items de Gallery1 com a Productes i la Disposició com a Imatge i títol.

    Configurar ProductsGallery.

  7. A Gallery1, assegureu-vos que el control Etiqueta s'anomeni Title1 i, a continuació, definiu la propietat Text com a ThisItem.Name.

    Configurar l'etiqueta de Gallery1.

  8. Seleccioneu la pantalla per evitar la inserció del següent element a Gallery1. Afegiu un segon control Galeria vertical en blanc i assegureu-vos que s'anomeni Gallery2.

    Gallery2 mostrarà les reserves per a qualsevol producte que l'usuari seleccioni a Gallery1.

  9. Desplaceu i redimensioneu Gallery2 per omplir el quadrant superior dret de la pantalla.

  10. (opcional) Afegiu el control Etiqueta blau sobre Gallery2, com es mostra al gràfic següent.

  11. A la barra de fórmules, definiu la propietat Items de Gallery2 a Gallery1.Selected.Reservations.

    Configurar els elements de Gallery2.

  12. A la subfinestra de propietats, definiu la Disposició de Gallery2 com a Títol.

    Configurar la disposició de Gallery2.

  13. A Gallery2, afegiu un control Quadre combinat, assegureu-vos que s'anomeni ComboBox1 i, després, desplaceu-lo i redimensioneu-lo per evitar bloquejar la resta de controls de Gallery2.

  14. A la pestanya Propietats, definiu la propietat Items de ComboBox1 com a Productes.

    Definir la propietat Elements com a productes.

  15. Desplaceu-vos cap avall a la pestanya Propietats i definiu Permet la selecció múltiple de ComboBox1 com a Desactivat.

    Definir Permet la selecció múltiple com a Desactivat.

  16. A la barra de fórmules, definiu la propietat DefaultSelectedItems de ComboBox1 com a ThisItem.'Reserva de producte'.

    Definir DefaultSelectedItems per a ReserveCombo.

  17. A Gallery2, definiu la propietat OnSelect de NextArrow2 a aquesta fórmula:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Quan l'usuari selecciona aquesta icona, la reserva actual canvia al producte que l'usuari ha seleccionat a ComboBox1.

    Configurar NextArrow2.

  18. Premeu F5 per provar l'aplicació al mode Visualització prèvia.

Amb aquesta aplicació, l'usuari pot desplaçar una reserva d'un producte a un altre. Per a una reserva d'un producte, l'usuari pot seleccionar un producte diferent a ComboBox1 i, a continuació, seleccionar NextArrow2 per canviar la reserva.

Demostrar la funció Relate a l'aplicació d'un a diversos.

Funció Unrelate

En aquest punt, podeu desplaçar la relació d'un registre a un altre, però no podeu suprimir la relació per complet. Podeu utilitzar la funció Unrelate per desconnectar un registre de reserva de qualsevol producte.

  1. A la pestanya Visualització, seleccioneu Fonts de dades.

  2. A la subfinestra Dades, seleccioneu Afegeix una font de dades>Microsoft Dataverse>Reserves>Connecta.

  3. A Gallery2, definiu la fórmula OnSelect de NextArrow2 a aquesta fórmula:

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

    Configurar la icona Dreta.

  4. Per copiar Gallery2 al Porta-retalls, seleccioneu-la i, a continuació, premeu Control-C.

  5. Per enganxar un duplicat de Gallery2 a la mateixa pantalla, premeu Control-V i, a continuació, desplaceu-lo al quadrant inferior dret de la pantalla.

  6. (opcional) Si heu afegit una etiqueta sobre Gallery2, repetiu els dos passos anteriors per a l'etiqueta.

  7. Assegureu-vos que el duplicat de Gallery2 s'anomeni Gallery2_1 i, a continuació, definiu la propietat Items en aquesta fórmula:

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

    Apareix un advertiment de delegació, però no importarà amb la petita quantitat de dades d'aquest exemple.

    Definir la propietat Elements de Gallery2_1.

Amb aquests canvis, els usuaris poden esborrar la selecció de ComboBox1 d'un contacte si aquesta persona no ha reservat cap producte. Els contactes que no han reservat un producte apareixen a Gallery2_1, on els usuaris poden assignar cada contacte a un producte.

Demostrar les funcions Relate i Unrelate a l'aplicació d'un a diversos.

Diversos a diversos

Crea una relació de diversos a diversos

Les dades d'exemple no inclouen cap relació de diversos a diversos, però en creareu una entre la taula de Productes i la taula de Contactes. Els usuaris poden relacionar cada producte amb més d'un contacte i cada contacte amb més d'un producte.

  1. Des d'aquesta pàgina, seleccioneu Dades a la barra de navegació esquerra i, a continuació, seleccioneu Taules.

    Obrir la llista de taules.

  2. Canvieu el filtre de taula per incloure-hi totes les taules.

    De manera predeterminada, les taules d'exemple no apareixen.

    Suprimir el filtre de taula.

  3. Desplaceu-vos cap avall, obriu la taula Producte i seleccioneu Relacions.

  4. Seleccioneu Afegeix una relació>Diversos a diversos.

  5. Seleccioneu la taula Contacte per a la relació.

  6. Seleccioneu Fet>Desa la taula.

Relacionar i anul·lar la relació dels contactes amb un o diversos productes

Creareu una altra aplicació que s'assembla a la que heu creat abans en aquest tema, però l'aplicació nova oferirà una relació de diversos a diversos. Cada contacte podrà reservar diversos productes en comptes d'un únic.

  1. En una aplicació en blanc per a tauletes, creeu Gallery1 com es descriu al primer procediment d'aquest tema.

  2. Afegiu un altre control Galeria vertical en blanc, assegureu-vos que s'anomeni Gallery2 i, a continuació, desplaceu-lo a la part superior dreta de la pantalla.

    Més endavant en aquest tema, afegireu un control Quadre combinat a Gallery2.

  3. A la barra de fórmules, definiu la propietat Items de Gallery2 a Gallery1.Selected.Contacts.

    Configurar ContactsGallery: propietat Elements.

  4. A la pestanya Propietats, definiu Disposició a Imatge i títol.

    Configurar ContactsGallery: disposició.

  5. A Gallery2, assegureu-vos que el control Etiqueta s'anomeni Title2 i, a continuació, definiu la propietat Text com a ThisItem.'Nom complet'.

    No apareixerà cap text en aquest control fins que non finalitzeu aquest procediment i assigneu un contacte a un producte.

    Mostrar el nom del contacte.

  6. Suprimiu NextArrow2, inseriu una icona Cancel·la i assegureu-vos que s'anomeni icon1.

  7. Definiu la propietat OnSelect de la icona Cancel·la a aquesta fórmula:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Configurar la icona Cancel·la.

  8. A la pestanya Visualització, seleccioneu Fonts de dades.

  9. A la subfinestra Dades, seleccioneu Afegeix una font de dades>Microsoft Dataverse>Contactes>Connecta.

  10. A Gallery2, afegiu un control Quadre combinat, assegureu-vos que s'anomeni ComboBox1 i, a continuació, definiu la propietat Items a Contactes.

    Configurar la propietat Elements del quadre combinat.

  11. A la pestanya Propietats, definiu Permet la selecció múltiple a Desactivat.

    Configurar la propietat Disposició del quadre combinat.

  12. Inseriu una icona Afegeix i definiu-ne la propietat OnSelect a aquesta fórmula:

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

    Configurar la icona Afegeix.

Amb aquesta aplicació, els usuaris poden relacionar i anul·lar la relació lliurement d'un conjunt de contactes per a cada producte.

  • Per afegir un contacte a un producte, seleccioneu el contacte al quadre combinat de la part inferior de la pantalla i, a continuació, seleccioneu la icona Afegeix.

  • Per suprimir un contacte d'un producte, seleccioneu la icona Cancel·la per a aquest contacte.

    A diferència de les relacions d'un a diversos, una relació de diversos a diversos permet als usuaris associar el mateix contacte a diversos productes.

Demostrar les funcions Relate i Unrelate a l'aplicació de diversos a diversos.

Inversament: relacionar i deixar de relacionar productes amb diversos contactes

Les relacions de diversos a diversos són simètriques. Podeu ampliar l'exemple per afegir productes a un contacte i, a continuació, canviar entre les dues pantalles per mostrar com apareix la relació des de qualsevol de les dues direccions.

  1. Definiu la propietat OnVisible de Screen1 a Refresh(Productes).

    Quan actualitzeu una relació d'un a diversos o de diversos a diversos, només s'actualitzen les dades de la primera taula d'arguments de la crida Relate o Unrelate. La segona s'ha d'actualitzar manualment si voleu canviar entre les pantalles d'aquesta aplicació.

    Definir la propietat OnVisible de la funció Refresh.

  2. Dupliqueu Screen1.

    El duplicat s'anomenarà Screen1_1 i és la base de cercar les relacions des dels contactes.

    Duplicar una pantalla.

  3. Per crear la visualització inversa, canvieu aquestes fórmules als controls de 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 )

    El resultat serà molt semblant a la pantalla anterior, però ve a la relació des de Contactes.

    Mostrar la relació de diversos a diversos a partir dels contactes.

  4. Inseriu una icona Fletxes amunt i avall i definiu-ne la propietat OnSelect a Navigate(Screen1, None). Feu el mateix a Screen1 amb la fórmula Navigate(Screen1_1, None).

    Afegir la navegació entre pantalles.

Amb aquesta nova pantalla, els usuaris poden afegir un contacte a un producte i, després, canviar a una visualització de contactes i veure el producte associat. Les relacions són simètriques i es comparteixen entre les dues pantalles.

Demostrar la relació de diversos a diversos des de qualsevol costat.