Mover dados entre fontes de dados e coleções usando Coleção

Concluído

As coleções são uma fonte de dados especial. São locais para o aplicativo e não têm suporte em uma conexão com um serviço na nuvem; portanto, as informações não podem ser compartilhadas entre dispositivos para o mesmo usuário ou entre usuários. As coleções podem ser criadas dinamicamente com a função Collect. Elas não precisam ser estabelecidas com antecedência, como ocorre com as fontes de dados baseadas em conexão. Em outras palavras, as coleções são apenas variáveis; portanto, seu conteúdo não será salvo se o usuário fechar o aplicativo. Qualquer outra pessoa que execute o aplicativo não poderá acessar nenhum dado que eles contenham. Para salvar as informações de uma coleção, precisamos gravá-las como uma fonte de dados. Vamos abordar duas maneiras principais de salvar dados de coleção em sua fonte de dados.

Usar a função Collect

A função Collect adiciona registros a uma fonte de dados. Pode adicionar um único valor, um registro ou uma tabela a uma coleção. Pode ser usada para criar uma coleção e gravar em uma fonte de dados, como uma lista do SharePoint ou uma tabela do Dataverse. Permite que você grave dados em massa sem usar uma função ForAll/Patch para percorrer os dados.

Ao usar Collect para gravar em uma fonte de dados, você pode especificar os itens como um registro se os nomes das colunas e a estrutura de dados corresponderem a sua fonte. Portanto, algo como esta fórmula grava um único registro nos dados, da mesma forma que uma função Patch faria:

Collect('YourDataSource', {Title: 'First Try', StartDate: Today()})

Contanto que a fonte de dados tenha colunas chamadas 'Title' e ' StartDate ' (e sejam tipos de dados, texto e data, respectivamente), essa fórmula cria um registro na fonte de dados em que Title é 'First Try' e StartDate é a data de hoje.

Você pode encadear muitos registros adicionando-os após o primeiro registro, desde que escreva o tipo de dados correto que corresponda ao tipo de dados da coluna e inclua todas as colunas obrigatórias.

Você também pode gravar uma tabela inteira em sua fonte de dados por meio da instrução Collect, repetindo, desde que a estrutura de dados seja correspondente.

Por fim, você pode usar uma versão simplificada da fórmula para gravar uma coleção inteira na fonte de dados por meio de uma sintaxe como esta:

Collect('YourDataSource', colMyCollection)

Assim como quando estávamos gravando um único registro na fonte de dados, quando você usa Collect para gravar uma tabela inteira na fonte de dados, sua estrutura de dados e nomes de colunas devem corresponder às colunas nas quais você está gravando. A principal vantagem de usar uma função Collect para escrever é que o código é simples.

Em resumo, lembre-se destas três condições ao usar Collect para gravar na fonte de dados:

  • As colunas na coleção devem existir na fonte de dados. A fonte de dados pode ter outras colunas (como colunas geradas pelo sistema), mas as colunas das quais você está escrevendo na coleção devem estar presentes na fonte de dados na qual você está gravando. (Se a coleção tiver uma coluna de texto chamada Widget, a fonte de dados também deverá ter uma coluna de texto chamada Widget.)

  • O tipo de dados (como Texto, Número ou Data) de cada coluna na coleção precisa corresponder ao tipo de dados da coluna de destino.

  • A coleção deve incluir dados para quaisquer colunas obrigatórias na fonte de dados.

Dica

Se necessário, você pode usar funções para transformar a coleção para corresponder à fonte de dados, como:

  • AddColumns
  • DropColumns
  • RenameColumns
  • ShowColumns

Para saber mais, consulte Funções AddColumns, DropColumns, RenameColumns e ShowColumns no Power Apps.

Para obter mais informações sobre a função Coleção e as coleções, consulte coletar documentação.

Patch e ForAll

Patch é uma função que permite modificar ou criar um registro na fonte de dados. ForAll é uma função que permite executar uma fórmula para cada registro em uma tabela, e coleções são tabelas. Você pode combinar essas funções para atualizar sua fonte de dados com o conteúdo da sua coleção. Embora haja mais codificação envolvida versus a técnica Collect, usar um ForAll/Patch funciona melhor quando você deseja aplicar mais lógica.

Por exemplo, você pode criar uma coleção chamada collectColorData que contém três colunas: Name, FavoriteColor e UpdateSource. A coluna UpdateSource pode ser booliana (verdadeira ou falsa). Durante o trabalho com o aplicativo, o usuário atualiza o valor na coluna e, em seguida, seleciona o botão Atualizar Fonte. Você pode definir a propriedade OnSelect do botão com esta fórmula:

ForAll(Filter(collectColorData, UpdateSource = true),
Patch(DataSourceName, Defaults(DataSourceName), {NameColumnSource: Name,
FavoriteColorColumnSource: FavoriteColor}))

Essa fórmula adicionaria novos registros à fonte de dados denominada DataSourceName, definindo as colunas NameColumnSource e FavoriteColorColumnSource com os valores da coleção, mas apenas para os registros em que UpdateSource foi definido como verdadeiro.

Esse exemplo pode ser otimizado, mas demonstra o conceito e os elementos para salvar dinamicamente sua coleção em uma fonte de dados.

Para obter mais informações sobre ForAll, consulte a Documentação de ForAll.

Para obter mais informações sobre Patch, consulte a Documentação de Patch.

Agora que exploramos maneiras de gravar dados de uma coleção em uma fonte de dados e por que podemos usar uma ou outra, vamos fazer um exercício em que praticamos o trabalho com dados e coleções externas.