Trabajar con relaciones en Power Apps

Completado

Como era de esperar, Power Apps tiene todas las funciones y controles que necesita para crear y utilizar relaciones en sus aplicaciones. En la mayoría de las aplicaciones, hay dos formas principales de usar las relaciones. La primera es el escenario que se ha descrito en el módulo anterior: almacenar datos en varias tablas y después usar relaciones para volver a conectar los datos. En esta unidad, obtendrá información sobre cómo conectar un cliente y una tabla de facturas.

El segundo uso común de las relaciones consiste en consultar al elemento primario desde el registro secundario. En este ejemplo, obtendrá información sobre cómo consultar el nombre del cliente cuando se examina de forma directa el registro de la factura.

Conectar una tabla principal y secundaria en Power Apps

En este ejemplo verá cómo hacer referencia a una relación principal y secundaria utilizando el filtro de Power Apps y una función LookUp.

La tabla Cliente es la principal en esta relación, lo que significa que un cliente puede tener muchas facturas. Tenga en cuenta que en la tabla Customer no hay ninguna referencia a la tabla Invoice. En este ejemplo, el nombre del origen de datos para esta tabla es CustomerTable. La tabla será similar a la siguiente.

Id. NombreCliente NúmeroTeléfonoCliente
1 Contoso 513-555-1212
2 Fabrikam 206-555-1313
3 Tailspin Toys 404-555-1414

La tabla Invoice es el elemento secundario de esta relación. En este ejemplo, el nombre del origen de datos para esta tabla es InvoiceTable. La tabla será similar a la siguiente.

Id. FechaFactura DescripciónFactura ImporteFactura IdCliente
1 5/16/2020 Elementos 412.33 1
2 5/1/2020 Servicio 205.44 3
3 5/6/2020 Viaje 132.98 1
4 5/31/2020 Elementos 75.55 2

En Power Apps, utilice el control Gallery para mostrar el contenido de la tabla Cliente. Use el control Gallery con los siguientes pasos:

  1. Inserte un control Gallery en el lienzo.

  2. Establezca la propiedad Items en CustomerTable.

La galería mostrará una lista de todos los registros de cliente de la tabla. Se trata de Gallery1.

Para mostrar todo el contenido de InvoiceTable, siga estos pasos:

  1. Inserte un control Gallery en el lienzo.

  2. Establezca la propiedad Items en InvoiceTable.

Esta galería mostrará una lista de todos los registros de factura de la tabla. Se trata de Gallery2.

Ahora, para mostrar solo las facturas para el cliente seleccionado en el control Gallery1, tendrá que modificar la propiedad Items de Gallery2.

  1. Establezca la propiedad Items de Gallery2 en lo siguiente:

    Filter(InvoiceTable, CustomerID.ID = Gallery1.Selected.ID)
    

La fórmula hará lo siguiente.

Argumento de fórmula Entrada de fórmula Notas
source InvoiceTable
logical_test CustomerID.ID = Gallery1.Selected.ID CustomerID es el nombre de columna de InvoiceTable. Gallery1.Selected. El id. es el valor de la columna Id. del registro seleccionado en la galería.

Ahora, Gallery2 solo mostrará los registros de factura del cliente seleccionado en Gallery1.

Búsqueda de información almacenada en el elemento primario desde el elemento secundario

En el ejemplo anterior se ha mostrado cómo desplazarse desde arriba hacia abajo. En ocasiones tendrá que subir desde la parte inferior. Por ejemplo, en InvoiceTable, si examina el registro de la factura con un valor ID de 2, sabrá que está asociada al cliente que tiene un valor ID de 3. Esto es diferente si quiere saber el nombre o el número de teléfono del cliente. Para hacer esto en Power Apps, puede utilizar la función LookUp.

La función LookUp permite consultar en un origen de datos un único registro que cumpla los criterios de evaluación. En este ejemplo, usará las mismas tablas que en el anterior, pero comenzará con una pantalla en blanco para evitar confusiones.

Para mostrar todo el contenido de InvoiceTable, siga estos pasos:

  1. Inserte un control Gallery en el lienzo.

  2. Establezca la propiedad Items en InvoiceTable.

  3. Establezca Layout en Title, Subtitle y body.

  4. En el panel Data, establezca Title en FechaFactura, Subtitle en ImporteFactura y Body en IdCliente.

Esta galería mostrará una lista de todos los registros de factura de la tabla. Se trata de Gallery3.

Captura de pantalla de galería con una lista de todos los registros de facturas.

Mostrar el valor de identificador para cada cliente no proporciona ayuda al usuario de la aplicación. Para mostrar el nombre del cliente, en lugar del identificador, siga estos pasos.

  1. En Gallery3, seleccione la etiqueta de Body y establezca la propiedad Text en lo siguiente:

    LookUp(CustomerTable, ID = ThisItem.CustomerID, CustomerName)
    

La fórmula hará lo siguiente:

Argumento de fórmula Entrada de fórmula Notas
source CustomerTable
logical_test ID = ThisItem.CustomerID ID es el nombre de columna de CustomerTable. ThisItem.CustomerID es el valor de la columna CustomerID para el registro actual de la galería.
resultado CustomerName Es la columna que se devolverá para los registros que coincidan con logical_test.

Después de realizar este cambio, Gallery3 es mucho más fácil de usar.

Captura de pantalla de galería con una lista de registros de facturas fácil de usar.

Notas sobre rendimiento

El ejemplo anterior se usa para demostrar el concepto de búsqueda desde el elemento secundario al elemento primario. Puede haber ramificaciones de rendimiento al realizar búsquedas desde una galería. En este ejemplo, la función LookUp podría consultar cuatro veces el origen de datos, una para cada registro de InvoiceTable. Si la tabla Factura tiene cientos de registros, la búsqueda se ejecutará cientos de veces. Asegúrese de tener en cuenta las ramificaciones de rendimiento antes de implementar llamadas a orígenes de datos en una galería.

Una mejor opción que tener en cuenta para este escenario consiste en usar una colección u otro medio para consultar y almacenar todos los registros de cliente y, después, realizar la búsqueda en la colección. Para obtener más información sobre el rendimiento de los datos, consulte la entrada del blog sobre Consideraciones de rendimiento con Power Apps.

En la siguiente unidad, aprenderá cómo Microsoft Dataverse elimina todos los problemas asociados a los datos relacionados al explorar en profundidad y de forma automática por usted.