Relacionar e desvincular funcións

Aplícase a: Aplicacións de lenzo Aplicacións baseadas en modelos

Relacione e cancele a relación dos rexistros de dúas táboas a través dunha relación de un a varios ou de varios a varios.

Descripción

A función Relate liga dous rexistros mediante unha relación de un a moitos ou de moitos ou moitos en Microsoft Dataverse. A función Unrelate inverte o proceso e elimina a ligazón.

Para as relacións de un a varios, a táboa Varios ten un campo de clave externa que apunta a un rexistro da táboa Un. Relate define este campo para que apunte a un rexistro específico da táboa Un, mentres que Unrelate define este campo como en branco. Se o campo xa está configurado cando se chama a Relate, a ligazón existente pérdese a favor da nova ligazón. Tamén pode configurar este campo usando a función Patch ou un control de Editar formulario; non precisa empregar a función Relate.

Para relacións de moitos a moitos, o sistema que enlaza os rexistros mantén unha táboa combinada oculta. Non pode acceder directamente a esta táboada combinada; só se pode lela a través dunha proxección de un a moitos e configurala a través das funcións Relate e Unrelate. Ningunha das dúas táboas relacionadas ten unha clave externa.

Os datos da táboa que especifique no primeiro argumento actualizaranse para reflectir o cambio, pero os datos da táboa que especifique no segundo argumento non. Estes datos deben actualizarse manualmente coa función Refresh para mostrar o resultado da operación.

Estas funcións nunca crean nin eliminan un rexistro. Só relacionan ou cancelan a relación de dous rexistros que xa existen.

Só pode usar estas funcións en fórmulas de comportamento.

Nota

Estas funcións forman parte dunha función de vista previa e o seu comportamento está dispoñible só cando a función Datos relacionais, conxuntos de opcións e outras novas características para CDS está activada. Esta é unha configuración a nivel de aplicación que está habilitada de xeito predeterminado para novas aplicacións. Para atopar este conmutador de funcións, seleccione Configuración e, a continuación, seleccione Próximas funcións. Os seus comentarios son moi valiosos para nós; cóntenos o que pensa nos foros da comunidade de Power Apps.

Sintaxe

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Obrigatorio. Para un rexistro de Table1, a táboa de rexistros Table2 relacionouse cunha relación de un a varios ou de varios a varios.
  • Table2Record - Obrigatorio. O rexistro Table2 que se vai engadir á relación.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Obrigatorio. Para un rexistro de Table1, a táboa de rexistros Table2 relacionouse cunha relación de un a varios ou de varios a varios.
  • Table2Record - Obrigatorio. O rexistro Table2 que se vai eliminar da relación.

Exemplos

Considere unha táboa Produtos coas seguintes relacións como se ve no visor de táboas do portal de Power Apps:

Nome para mostrar da relación Táboa relacionada Tipo de relación
Reserva de produtos Reserva Un a varios
Produto ↔ Contacto Contacto Moitos a moitos

Produtos e Reservas están relacionados a través dunha relación Un a varios. Para relacionar o primeiro rexistro da táboa Reservas co primeiro rexistro da táboa Produtos:

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

Para eliminar a relación entre estes rexistros:

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

En ningún momento creamos nin eliminamos ningún rexistro, só se modificou a relación entre os rexistros.

Produtos e Contactos están relacionados a través dunha relación Varios a varios. Para relacionar o primeiro rexistro da táboa Contactos co primeiro rexistro da táboa Produtos:

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

Como as relacións de moitos a moitos son simétricas, tamén puidemos facer isto no sentido contrario:

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

Para eliminar a relación entre estes rexistros:

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

ou:

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

A guía que segue fai exactamente estas operacións nestas táboas usando unha aplicación con controis de Galería e Caixa de combinación para seleccionar os rexistros implicados.

Estes exemplos dependen dos datos da mostra instalados no seu contorno. Ou cree un ambiente de proba que inclúa datos de mostra ou engade datos de mostra a un ambiente existente.

Un a varios

Función Relate

Primeiro creará unha aplicación sinxela para ver e reasignar as reservas asociadas a un produto.

  1. Cree unha aplicación para tableta de cero.

  2. No separador Visualización, seleccione Orixes de datos.

  3. No panel Datos, seleccione Engadir datos> seleccione Produtos.
    A táboa Produtos é parte dos datos de mostra cargados anteriormente.

  4. No separador Inserir, engada un control Galería vertical en branco.

  5. Asegúrese de que se nomea o control que acaba de engadir Gallery1 e logo móvao e redimensióneo para encher o lado esquerdo da pantalla.

  6. No separador Propiedades, configure a propiedade Elementos de Gallery1 en Produtos e o seu Deseño en Imaxe e título.

    Configurar ProductsGallery.

  7. En Gallery1, asegúrese de que o control Etiqueta se chama Title1 e logo configure a súa propiedade Texto en ThisItem.Name.

    Configurar a etiqueta en Gallery1.

  8. Seleccione a pantalla para evitar inserir o seguinte elemento en Gallery1. Engada un segundo control Galería vertical en branco e asegúrese de que sexa nomeado Gallery2.

    Gallery2 amosará as reservas para calquera produto que elixa o usuario en Gallery1.

  9. Mova e cambie o tamaño de Gallery2 para cubrir o cuadrante superior dereito da pantalla.

  10. (opcional) Engada o control de Etiqueta azul sobre Gallery2, como mostra a seguinte gráfica.

  11. Na barra de fórmulas, estableza a propiedade Elementos de Gallery2 en Gallery1.Selected.Reservations.

    Configurar os elementos de Gallery2.

  12. Estableza o deseñode Gallery2 en Título no panel de propiedades.

    Configurar o deseño de Gallery2.

  13. En Gallery2, engada un control de Caixa de combinación, asegurarse de que estea nomeado ComboBox1 e logo móvao e redimensióneo para evitar bloquear os outros controis en Gallery2.

  14. No separador Propiedades, configure a propiedade Elementos de ComboBox1 en Produtos.

    Establecer a propiedade Elementos en Produtos.

  15. Desprácese cara a abaixo no separador Propiedades e configure a propiedade Permitir a selección múltiple de ComboBox1 en Desactivado.

    Configurar Permitir varias seleccións en Desactivado.

  16. Na barra de fórmulas, estableza a propiedade DefaultSelectedItems de ComboBox1 en ThisItem.'Reserva de produtos'.

    Establecer DefaultSelectedItems para ReserveCombo.

  17. En Gallery2, defina a propiedade OnSelect de NextArrow2 nesta fórmula:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Cando o usuario selecciona esta icona, a reserva actual cambia ao produto que o usuario seleccionou en ComboBox1.

    Configurar NextArrow2.

  18. Prema F5 para probar a aplicación en modo Vista previa.

Con esta aplicación, o usuario pode mover unha reserva dun produto a outro. Para unha reserva nun produto, o usuario pode seleccionar outro produto en ComboBox1 e logo seleccionar NextArrow2 para cambiar esa reserva.

Demostrar a función Relate nunha aplicación de un a moitos.

Función Unrelate

Neste momento, pode mover a relación dun rexistro a outro, pero non pode eliminar a relación por completo. Pode usar a función Unrelate para desconectar un rexistro de reserva de calquera produto.

  1. No separador Visualización, seleccione Orixes de datos.

  2. No panel Datos, seleccione Engadir orixe de datos>Microsoft Dataverse>Reservas>Conectar.

  3. En Gallery2, defina a fórmula OnSelect para NextArrow2 nesta fórmula:

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

    Configurar a icona da dereita.

  4. Copie Gallery2 no Portapapeis seleccionándoo e despois premendo Ctrl-C.

  5. Pegue un duplicado de Gallery2 á mesma pantalla premendo Ctrl-V e logo móveo ao cuadrante inferior dereito da pantalla.

  6. (opcional) Se engadiu unha etiqueta sobre Gallery2, repita os dous pasos anteriores para esa etiqueta.

  7. Asegúrese de que o duplicado de Gallery2 leva o nome Gallery2_1 e logo configure a súa propiedade Elementos nesta fórmula:

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

    Unha advertencia de delegación aparece, pero non importará coa pouca cantidade de datos deste exemplo.

    Establecer a propiedade Elementos de Gallery2_1.

Con estes cambios, os usuarios poden limpar a selección en ComboBox1 para un contacto se esa persoa non reservou un produto. Os contactos que non reservaron un produto aparecen en Gallery2_1 onde os usuarios poden asignar cada contacto a un produto.

Demostrar as funcións Relate e Unrelate nunha aplicación de un a moitos.

Moitos a moitos

Crear unha relación de varios a varios

Os datos de mostra non inclúen unha relación de varios a varios, pero creará unha entre a táboa Produtos e a táboa Contactos. Os usuarios poden relacionar cada produto con máis dun contacto e cada contacto con máis dun produto.

  1. Desde esta páxina, seleccione Datos na barra de navegación esquerda e logo seleccione Táboas.

    Abrir lista de táboas.

  2. Cambie o filtro da táboa para incluír todas as táboas.

    Por defecto, as táboas de mostra non aparecen.

    Eliminar o filtro da táboa.

  3. Desprácese cara abaixo, abra a táboa Produto e seleccione Relacións.

  4. Seleccione Engadir relación>Moitos a moitos.

  5. Seleccione a táboa Contacto para a relación.

  6. Seleccione Feito>Gardar táboa.

Relacionar e cancelar a relación de contactos con un ou varios produtos

Creará outra aplicación que se asemella á creada anteriormente neste tema, pero a nova aplicación ofrecerá unha relación de moitos a moitos. Cada contacto poderá reservar múltiples produtos en vez de un só.

  1. Nunha aplicación en branco para tabletas, cree Gallery1 como o primeiro procedemento deste tema describe.

  2. Engada outro control Galería vertical en branco, asegurarse de que estea nomeado Gallery2 e logo móvao á esquina superior dereita da pantalla.

    Máis tarde neste tema, engadirá un control de Caixa de combinación en Gallery2.

  3. Na barra de fórmulas, estableza a propiedade Elementos de Gallery2 en Gallery1.Selected.Contacts.

    Configurar ContactsGallery: Propiedade de elementos.

  4. No separador Propiedades, configure Deseño en Imaxe e título.

    Configurar ContactsGallery: Deseño.

  5. En Gallery2, asegúrese de que o control Etiqueta se chama Title2 e logo configure a súa propiedade Texto en ThisItem.'Full Name'.

    Non aparecerá texto nese control ata que termine este procedemento e asigne un contacto a un produto.

    Mostrar nome do contacto.

  6. Elimine NextArrow2, insira unha icona de Cancelar e asegúrese de que sexa nomeada icon1.

  7. Axuste a propiedade OnSelect da icona Cancelar nesta fórmula:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Configurar a icona de Cancelar.

  8. No separador Visualización, seleccione Orixes de datos.

  9. No panel Datos, seleccione Engadir orixe de datos>Microsoft Dataverse>Contactos>Conectar.

  10. En Gallery2, engada un control de Caixa de combinación, asegúrese de que sexa nomeado ComboBox1 e logo configure a súa propiedade Elementos en Contactos.

    Configurar a propiedade Elementos da caixa de combinación.

  11. No separador Propiedades, configure Permitir a selección múltiple en Desactivado.

    Configurar a propiedade Deseño da caixa de combinación.

  12. Insira unha icona de Engadir e axuste a súa propiedade OnSelect nesta fórmula:

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

    Configurar icona de Engadir.

Con esta aplicación, os usuarios agora poden relacionar e cancelar relacións libremente dun conxunto de contactos con cada produto.

  • Para engadir un contacto a un produto, seleccione o contacto na caixa de combinación situada na parte inferior da pantalla e logo seleccione a icona Engadir.

  • Para eliminar un contacto dun produto, seleccione a icona Cancelar para ese contacto.

    A diferenza de un a moitos, unha relación de moitos a moitos permite que os usuarios asocien o mesmo contacto con varios produtos.

Demostrar as funcións Relate e Unrelate nunha aplicación de moitos a moitos.

Ao revés: relacionar e cancelar a relación dos produtos con múltiples contactos

As relacións de moitos a moitos son simétricas. Pode ampliar o exemplo para engadir produtos a un contacto e despois cambiar entre as dúas pantallas para amosar como a relación aparece desde calquera dirección.

  1. Estableza a propiedade OnVisible de Screen1 en Refresh( Products ).

    Cando actualiza unha relación de un a varios ou de varios a varios, só se actualizan os datos da primeira táboa de argumentos da chamada Relate ou Unrelate. O segundo debe actualizarse manualmente se desexa cambiar entre as pantallas desta aplicación.

    Establecer a propiedade OnVisible na función Refresh.

  2. Duplique Screen1.

    O duplicado nomearase Screen1_1 e formará a base para mirar as relacións dende o lado dos contactos.

    Duplicar unha pantalla.

  3. Para crear a vista inversa, cambie estas fórmulas nos controis 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 )

    O resultado parecerá moi similar á pantalla anterior pero chega á relación desde o lado dos Contactos.

    Amosar relación de moitos a moitos comezando cos contactos.

  4. Inserir unha icona Frechas cara arriba e configure a súa propiedade OnSelect en Navigate( Screen1, None ). Faga o mesmo en Screen1 coa fórmula Navigate( Screen1_1, None ).

    Engadir navegación entre pantallas.

Con esta nova pantalla, os usuarios poden engadir un contacto a un produto e despois pasar á vista dos contactos e ver o produto asociado. As relacións son simétricas e compártense entre as dúas pantallas.

Demostrar a relación de moitos a moitos a ambos os dous lados.