A maioria dos aplicativos do Microsoft PowerApps usa informações externas armazenadas nos serviços de nuvem chamados Fontes de dados. Um exemplo comum é uma tabela em um arquivo do Excel armazenado no OneDrive for Business. Os aplicativos acessam essas fontes de dados usando Conexões.

Este artigo descreve os diferentes tipos de fontes de dados e como trabalhar com fontes de dados de tabela.

É fácil criar um aplicativo que faça a leitura e gravação básicas em uma fonte de dados. Mas, às vezes, você precisa de mais controle sobre como os dados fluem dentro e fora do seu aplicativo. Este artigo descreve como as funções Patch, DataSourceInfo, Validar e Erros fornecem mais controle.

Tipos de fontes de dados

Fontes de dados podem ser conectadas a um serviço de nuvem, ou elas podem ser locais para um aplicativo.

Fontes de dados conectadas

As fontes de dados mais comuns são tabelas, que podem ser usadas para recuperar e armazenar informações. Você pode usar conexões a fontes de dados para ler e gravar dados em pastas de trabalho do Microsoft Excel, listas do SharePoint, tabelas SQL e muitos outros formatos, que podem ser armazenados nos serviços de nuvem como o OneDrive for Business, DropBox, SQL Server etc.

Há outros tipos de fontes de dados que não são tabelas, como email, calendários, twitter e notificações (em breve). Este artigo não aborda esses outros tipos de fontes de dados.

Fontes de dados locais

Ao usar os controles Galeria, Exibir de e Editar formulário, é fácil criar um aplicativo que lê e grava dados de uma fonte de dados. Para começar, leia o artigo Entender formulários de dados.

Quando você pede ao PowerApps para criar um aplicativo com base nos dados, esses controles serão usados. Nos bastidores, o aplicativo usa uma tabela interna para armazenar e manipular os dados provenientes da fonte de dados.

Um tipo especial de fonte de dados é a Coleção, que é local para o aplicativo e não apoiado por uma conexão a um serviço na nuvem, portanto, as informações não podem ser compartilhadas entre dispositivos para o mesmo usuário ou entre os usuários. As coleções podem ser carregadas e salvas localmente.

Tipos de tabelas

Tabelas internas para um aplicativo do PowerApps são valores fixos, assim como um número ou uma cadeia de caracteres é um valor. Tabelas internas não são armazenadas em qualquer lugar, elas existem apenas na memória do aplicativo. Você não pode modificar diretamente a estrutura e os dados de uma tabela. Em vez disso, o que você pode fazer é criar uma nova tabela por meio de uma fórmula: use essa fórmula para fazer uma cópia modificada da tabela original.

As tabelas externas são armazenadas em uma fonte de dados para recuperação e compartilhamento posteriores. O PowerApps fornece "conexões" para ler e gravar dados armazenados. Em uma conexão, você pode acessar várias tabelas de informações. Selecione quais tabelas usar em seu aplicativo e cada uma se tornará uma fonte de dados separada.

Para saber mais, Trabalhando com tabelas entra em mais detalhes sobre tabelas internas, mas também se aplica a tabelas externas que residem em um serviço de nuvem.

Trabalhando com tabelas

Você pode usar fontes de dados de tabela da mesma maneira que você usa uma tabela interna do PowerApps. Assim como uma tabela interna, cada fonte de dados tem registros, colunas e propriedades que podem ser usadas em fórmulas. Além disso:

  • A fonte de dados tem os mesmos nomes de colunas e tipos de dados da tabela subjacente na conexão.
  • A fonte de dados é carregada automaticamente do serviço quando o aplicativo for carregado. Você pode forçar os dados para serem atualizados usando a função Renovar.
  • Conforme os usuários executam um aplicativo, eles podem criar, modificar e excluir registros e obter essas alterações de volta à tabela subjacente no serviço.
    • Registros podem ser criados com as funções Patch e Coletar.
    • Registros podem ser modificados com as funções Patch, Atualizar e AtualizarSe.
    • Registros podem ser criados com as funções Remover e RemoverSe.
    • Erros ao trabalhar com uma fonte de dados estão disponíveis por meio da função Erros.
  • As funções DataSourceInfo, Padrões e Validar fornecem informações sobre a fonte de dados que pode ser usada para otimizar a experiência do usuário.

Criando fontes de dados

o PowerApps não pode ser usado para criar uma fonte de dados conectada nem para modificar sua estrutura; a fonte de dados já deve existir em um serviço em algum lugar. Por exemplo, para criar uma tabela em uma pasta de trabalho do Excel armazenada no OneDrive, primeiro use o Excel Online no OneDrive para criar uma pasta de trabalho. Em seguida, crie uma conexão com ela em seu aplicativo.

No entanto, as fontes de dados de coleção podem ser criadas e modificadas dentro de um aplicativo, mas são apenas temporárias.

Exibir um ou mais registros

O diagrama acima mostra o fluxo de informações quando um aplicativo lê as informações em uma fonte de dados:

  • As informações são armazenadas e compartilhadas por meio de um serviço de armazenamento (nesse caso, uma lista do SharePoint de um site do Office 365).
  • Uma conexão torna essas informações disponíveis para o aplicativo. A conexão cuida da autenticação do usuário para acessar as informações.
  • Quando o aplicativo é iniciado ou a função Renovar é pressionada, as informações são retiradas da conexão para uma fonte de dados no aplicativo para uso local.
  • As fórmulas são usadas para ler as informações e expô-las em controles que o usuário pode ver. Você pode exibir os registros de uma fonte de dados usando uma galeria em uma tela e gravando a propriedade Itens na fonte de dados: Gallery.Items = DataSource. Conecte controles da galeria à galeria usando a propriedade Default dos controles.
  • A fonte de dados também é uma tabela. Portanto, você pode usar Filtrar, Classificar, AdicionarColunas e outras funções para refinar e aumentar a fonte de dados antes de usá-la como um todo. Também é possível usar Pesquisa, Primeiro, Último e outras funções para trabalhar com registros individuais.

Modificar um registro

Na seção anterior, você viu como ler uma fonte de dados. Observe que as setas no diagrama acima são uma maneira. Alterações em uma fonte de dados não são recuperadas pelas mesmas fórmulas com as quais os dados foram recuperados. Em vez disso, novas fórmulas são usadas. Geralmente, a tela usada para editar um registro é diferente da que procura registros, especialmente em um dispositivo móvel.

Observe que, para modificar um registro existente de uma fonte de dados, o registro deve ser originalmente proveniente da fonte de dados. O registro pode ter passado por uma galeria, uma variável de contexto e qualquer quantidade de fórmulas, mas a origem deve ser rastreada até a fonte de dados. Isso é importante porque informações adicionais são passadas com o registro que as identifica com exclusividade, garantindo que você modifique o registro correto.

O diagrama acima mostra o fluxo de informações para atualizar uma fonte de dados:

  • Um controle Editar formulário fornece um contêiner para as fichas de entrada, que são compostas por controles de entrada do usuário como uma caixa de texto de entrada ou um controle deslizante. As propriedades DataSource e Item são usadas para identificar o registro para editar.
  • Cada cartão de entrada tem uma propriedade Padrão, que, geralmente, é definida como o campo do registro ThisItem do formulário. Os controles no cartão de entrada terão então seus valores de entrada de Padrão. Normalmente, não é necessário modificar isso.
  • Cada cartão de entrada expõe uma propriedade Atualizar. Essa propriedade mapeia a entrada do usuário para um campo específico do registro para gravar de volta na fonte de dados. Normalmente, não é necessário modificar isso.
  • Um controle de botão ou de imagem na tela permite que o usuário salve as alterações no registro. A fórmula OnSelect do controle chama a função SubmitForm para fazer esse trabalho. SubmitForm lê todos as propriedades Atualizar das fichas e usa isso para gravar na fonte de dados.
  • Às vezes, haverá problemas. Uma conexão de rede pode estar inativa ou uma verificação de validação é feita pelo serviço desconhecida pelo aplicativo. As propriedades Erro e ErrorKind do controle de formulário disponibilizam essas informações para que você possa exibi-las para o usuário.

Para refinar ainda mais o controle sobre o processo, também é possível usar a função Patch e Erros. O controle Editar formulário expõe uma propriedade Atualizações para que você possa ler os valores dos campos no formulário. Você também pode usar essa propriedade para chamar uma API personalizada em uma conexão, ignorando completamente as funções Patch e SubmitForm.

Validação

Antes de fazer uma alteração em um registro, o aplicativo deve fazer o que for possível para certificar-se de que a alteração será aceitável. Há dois motivos para isso:

  • Comentários imediatos ao usuário. O melhor momento para corrigir um problema é exatamente quando ele ocorre, quando está fresco na memória do usuário. Literalmente, em cada toque ou pressionamento de tecla, um texto vermelho pode aparecer identificando um problema com sua entrada.
  • Menos tráfego de rede e menor latência de usuário. Mais problemas detectados no aplicativo significa menos conversas pela rede para detectar e resolver problemas. Cada conversa leva tempo durante o qual o usuário deve aguardar antes de prosseguir.

O PowerApps oferece duas ferramentas para validação:

  • A fonte de dados pode fornecer informações sobre o que é e o que não é válido. Por exemplo, os números podem ter valores mínimo e máximo e uma ou mais entradas podem ser necessárias. Você pode acessar essas informações com a função DataSourceInfo.
  • A função Validar usa essas mesmas informações para verificar o valor de uma única coluna ou de um registro inteiro.

Tratamento de erro

Ótimo, você validou o registro. Tempo para atualizar esse registro com Patch!

Mas, infelizmente, ainda pode haver algum problema. A rede está inativa, a validação no serviço falhou, ou o usuário não tem as permissões corretas, apenas citar alguns dos possíveis erros que seu aplicativo pode encontrar. Ele precisa responder adequadamente a situações de erro, fornecendo comentários ao usuário e um meio para que ele o utilize corretamente.

Quando ocorrem erros com uma fonte de dados, seu aplicativo automaticamente registra as informações do erro e as disponibiliza por meio da função Erros. Erros estão associados aos registros com os problemas. Se o problema for algo que o usuário possa corrigir, como um problema de validação, ele poderá reenviar o registro e os erros serão cancelados.

Se um erro ocorrer quando um registro for criado com Patch ou Coletar, não haverá nenhum registro para associar a um erro. Nesse caso, em branco será retornado por Patch e pode ser usado como o argumento de registro de Erros. Erros de criação são apagados com a próxima operação.

A função Erros retorna uma tabela de informações de erros. Essas informações poderão incluir as informações de coluna se o erro puder ser atribuído a uma determinada coluna. Use as mensagens de erro de nível de coluna em controles de rótulo que estão próximas de onde a coluna está localizada na tela de edição. Use as mensagens de erro de nível de registro nos casos em que a Coluna na tabela de erros esteja em branco, em um local próximo ao botão Salvar para todo o registro.

Trabalhando com grandes fontes de dados

Quando estiver criando relatórios de fontes de dados grandes (talvez milhões de registros), é possível minimizar o tráfego de rede. Digamos que você deseja relatar todos os clientes com um StatusCode "Platinum" na cidade de Nova York. E essa tabela de clientes contém milhões de registros.

Você não quer colocar esses milhões de clientes em seu aplicativo e, por isso, escolhe aqueles que deseja. O que você precisa é que essa escolha ocorra dentro do serviço de nuvem em que a tabela está armazenada e enviar somente os registros escolhidos pela rede.

Muitas, mas nem todas as funções que você pode usar para escolher registros podem ser delegadas, o que significa que elas serão executadas no serviço de nuvem. Você pode aprender como fazer isso lendo sobre Delegação.

Coleções

Coleções são um tipo especial de fonte de dados. Elas são locais para o aplicativo e não são apoiadas por uma conexão a um serviço na nuvem, portanto, as informações não podem ser compartilhadas entre dispositivos para o mesmo usuário ou entre os usuários. Elas funcionam como qualquer outra fonte de dados, com algumas exceções:

  • Coleções podem ser criadas dinamicamente com a função Coletar. Elas não precisam ser estabelecidas antes do tempo, como fontes de dados com base em conexão.
  • As colunas de uma coleção podem ser modificadas a qualquer momento usando a função Coletar.
  • Coleções permitem registros duplicados. Mais de uma cópia do mesmo registro pode existir em uma coleção. Funções como Remover operarão na primeira correspondência que encontrarem, a menos que o argumento Tudo seja fornecido.
  • Você pode usar as funções SalvarDados e CarregarDados para salvar e recarregar uma cópia da coleção. As informações são armazenadas em um local privado que outros usuários, aplicativos ou dispositivos não podem acessar.
  • Você pode usar os controles Exportar e Importar para salvar e recarregar uma cópia da coleção em um arquivo com o qual o usuário pode interagir.

Para obter mais informações sobre como trabalhar com uma coleção como uma fonte de dados, consulte criar e atualizar uma coleção.

Coleções normalmente são usadas para manter o estado global para o aplicativo. Consulte trabalhando com variáveis para as opções disponíveis para gerenciar o estado.