Trabalhar com relacionamentos no Power Apps

Concluído

Na verdade, o Power Apps oferece um avançado conjunto de funções e controles sob medida para estabelecer e usar relacionamentos em seus aplicativos. Normalmente, há duas aplicações principais para os relacionamentos na maioria dos aplicativos.

Em primeiro lugar, conforme discutido anteriormente, isso envolve o armazenamento de dados em várias tabelas e o uso de relacionamentos para conectar esses dados de maneira transparente. Esta unidade orienta você na conexão de tabelas, como clientes e faturas, demonstrando como criar associações significativas entre elas.

Em segundo lugar, os relacionamentos são frequentemente usados para buscar informações do registro pai ao acessar diretamente o registro filho. Nesse caso, você aprenderá a recuperar o nome do cliente enquanto trabalha no contexto de um registro de fatura. Essa funcionalidade permite acessar e exibir com eficiência informações relevantes de registros relacionados, melhorando a usabilidade e a compreensibilidade do aplicativo.

Conectar as tabelas principal e secundária no Power Apps

Neste exemplo, veremos como fazer a referência de um relacionamento de pai e filho usando o filtro do Power Apps e uma função LookUp.

A tabela Cliente é o pai nesse relacionamento, o que significa que um cliente pode ter várias faturas. Observe que não há referência na tabela Cliente à tabela Fatura. Para esse exemplo, o nome da fonte de dados para a tabela é CustomerTable. A tabela é semelhante ao exemplo a seguir.

ID CustomerName CustomerPhoneNumber
1 Contoso 513-555-1212
2 Fabrikam 206-555-1313
3 Tailspin Toys 404-555-1414

A tabela Fatura é o filho nesse relacionamento. Para esse exemplo, o nome da fonte de dados da tabela é InvoiceTable. A tabela é semelhante ao exemplo a seguir.

ID InvoiceDate InvoiceDescription InvoiceAmount CustomerID
1 16/5/2020 Peças 412.33 1
2 1/5/2020 Serviço 205,44 3
3 6/5/2020 Viagem 132,98 1
4 31/5/2020 Peças 75,55 2

No Power Apps, se você tiver essas tabelas criadas como fontes de dados, poderá usar um controle Galeria para exibir o conteúdo da tabela Cliente. Você usa o controle Galeria com as seguintes etapas:

  1. Insira um controle da Galeria em sua tela.

  2. Defina a propriedade Items para CustomerTable.

A Galeria exibirá uma lista de todos os registros do cliente na tabela. Trata-se da Gallery1.

Para exibir o conteúdo completo de InvoiceTable, execute as seguintes etapas:

  1. Insira um controle da Galeria em sua tela.

  2. Você pode definir a propriedade Items para InvoiceTable.

A Galeria exibirá uma lista de todos os registros de fatura na tabela. Trata-se da Gallery2.

Agora, para exibir apenas as faturas do cliente selecionado em Gallery1, você precisaria modificar a propriedade items de Gallery2 com algo semelhante a:

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

A fórmula executará a ação a seguir.

Argumento da Fórmula Entrada da Fórmula Observações
origem InvoiceTable
logical_test CustomerID = Gallery1.Selected.ID CustomerID é o nome da coluna de InvoiceTable. Gallery1.Selected. A ID é o valor da coluna ID para o registro selecionado na galeria.

A fórmula faz com que Gallery2 exiba os registros de fatura do cliente selecionado em Gallery1.

Pesquisar informações armazenadas no pai do filho

Às vezes, surge a necessidade de navegar para cima ou "de baixo para cima" de um registro filho até seu registro pai associado. No cenário em que você está examinando os detalhes de um registro de fatura, digamos, com ID 2, e está ciente de sua associação com o cliente com ID 3, convém extrair mais detalhes da tabela principal.

Nesse caso, você pode usar o relacionamento entre as tabelas para recuperar informações relacionadas ao cliente, como nome ou número de telefone, referenciando os registros associados na tabela principal. Essa técnica permite reunir detalhes pertinentes de registros vinculados na tabela principal com base nas informações disponíveis no registro filho, fornecendo uma visão abrangente e facilitando a referência cruzada entre dados relacionados. No Power Apps, você pode usar a função LookUp para fazer exatamente isso.

A função LookUp permite que você consulte uma fonte de dados para um único registro que atenda aos critérios de avaliação. No exemplo a seguir, usaremos as mesmas tabelas do anterior, mas começaremos com uma tela em branco para evitar confusão.

Para exibir o conteúdo completo de InvoiceTable, você usaria as seguintes etapas:

  1. Insira um controle da Galeria em sua tela.

  2. Defina a propriedade Items como InvoiceTable.

  3. Defina o Layout como Título, Subtítulo e corpo.

  4. No painel Dados, defina Título como InvoiceDate, Subtítulo como InvoiceAmount e Corpo como CustomerID.

A Galeria exibirá uma lista de todos os registros de fatura na tabela. Se você deseja que os campos de data tenham a mesma aparência da imagem abaixo, modifique o campo Cargo para: Text(ThisItem.InvoiceDate,DateTimeFormat.ShortDate) This is Gallery3.

Captura de tela da galeria com uma lista de todos os registros de faturas.

Mostrar o valor da ID para cada cliente não fornece muitas informações ao usuário do aplicativo. Portanto, para exibir o nome do cliente, em vez da ID, podemos fazer o seguinte:

Em Gallery3, selecione o rótulo de Corpo e defina a propriedade Text como:

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

A fórmula executará a ação a seguir:

Argumento da fórmula Entrada da fórmula Observações
origem CustomerTable
logical_test ID = ThisItem.CustomerID A ID é o nome da coluna de CustomerTable. ThisItem.CustomerID é o valor da coluna CustomerID do registro atual na galeria.
resultado CustomerName Esta é a coluna que será retornada para os registros correspondentes a logical_test.

Depois de fazermos essa alteração, Gallery3 agora fornece o nome do fornecedor.

Captura de tela da lista de galeria amigável de registros de faturas.

Observações sobre desempenho

A realização de pesquisas de um registro filho para seu pai em uma Galeria pode ter implicações significativas no desempenho. No cenário demonstrado, o uso da função LookUp em uma Galeria dispararia consultas à fonte de dados diversas vezes, uma vez para cada registro em InvoiceTable.

Considere o seguinte: se sua InvoiceTable contiver centenas de registros, a função LookUp será executada o mesmo número de vezes. Isso significa que, potencialmente, ocorreriam centenas de chamadas de fontes de dados separadas. Como resultado, isso pode levar ao aumento do tráfego de rede e a tempos de processamento mais longos, afetando, em última análise, o desempenho do aplicativo.

Antes de implementar chamadas de fontes de dados, especialmente em uma Galeria em que vários registros são processados, é crucial avaliar as contrapartidas de desempenho. Otimizar essas consultas, talvez armazenando dados em cache ou reestruturando a lógica para minimizar chamadas repetitivas, é essencial para manter o desempenho ideal do aplicativo. Sempre considere a escala dos dados e o impacto potencial no desempenho ao implementar tais operações em um contexto de Galeria.

Uma opção melhor a ser considerada nesse cenário é usar uma coleção ou outro meio para consultar e armazenar todos os registros do cliente e realizar sua pesquisa na coleção. Para obter mais informações sobre desempenho de dados, consulte a postagem do blog sobre Considerações de desempenho com o Power Apps.

Na próxima unidade, você aprenderá como o Microsoft Dataverse remove todos os problemas associados aos dados relacionados, fazendo a busca automaticamente.