Compreender origens de dados para aplicações de tela
No Power Apps, a maioria das aplicações de tela utiliza informações externas armazenadas em serviços Cloud denominados Origens de Dados. Um exemplo comum é uma tabela num ficheiro do Excel armazenado no OneDrive para Empresas. As aplicações acedem a estas origens de dados através de Ligações.
Este artigo descreve os diferentes tipos de origens de dados e como trabalhar com origens de dados de tabelas.
É fácil criar uma aplicação que faça a leitura e escrita básicas numa origem de dados. Mas, por vezes, quer ter mais controlo sobre a forma como os dados entram e saem da sua aplicação. Este artigo descreve como as funções Patch, DataSourceInfo, Validar e Erros oferecem mais controlo.
Variantes de origens de dados
As origens de dados podem ser ligadas a um serviço cloud ou podem ser locais em relação a uma aplicação.
Origens de dados ligadas
As origens de dados mais comuns são as tabelas, que pode utilizar para obter e armazenar informações. Pode utilizar ligações a origens de dados para ler e escrever dados em livros do Microsoft Excel, listas criadas utilizando Listas Microsoft, bibliotecas do SharePoint, tabelas SQL e muitos outros formatos, que podem ser armazenados nos serviços cloud, como o OneDrive para Empresas, o DropBox e o SQL Server.
As origens de dados para além de tabelas incluem e-mail, calendários, Twitter e notificações, mas este artigo não aborda estes outros tipos de origens de dados.
Origens de dados locais
Através dos controlos Galeria, Apresentar formulário e Editar formulário, é fácil criar uma aplicação que lê e escreve dados de uma origem de dados. Para começar, leia o artigo Compreender formulários de dados.
Quando pedir ao Power Apps para criar uma aplicação a partir de dados, estes controlos são utilizados. Nos bastidores, a aplicação utiliza uma tabela interna para armazenar e manipular os dados provenientes da origem de dados.
Um tipo especial de origem de dados é a Coleção, que é local em relação à aplicação e não é apoiada por uma ligação a um serviço na cloud, pelo que as informações não podem ser partilhadas entre dispositivos para o mesmo utilizador ou entre utilizadores. As coleções podem ser carregadas e guardadas localmente.
Variantes de tabelas
As tabelas que são internas em relação a uma aplicação do Power Apps são valores fixos, da mesma forma que um número ou uma cadeia é um valor. As tabelas internas não são armazenadas em nenhum lugar, existindo apenas na memória da sua aplicação. Não é possível modificar diretamente a estrutura e os dados de uma tabela. O que pode fazer em alternativa é criar uma nova tabela através de uma fórmula: essa fórmula é utilizada para fazer uma cópia modificada da tabela original.
As tabelas externas são armazenadas numa origem de dados para posterior obtenção e partilha. O Power Apps fornece "ligações" para ler e escrever dados armazenados. Numa ligação, pode aceder a várias tabelas de informações. O utilizador seleciona as tabelas a utilizar na sua aplicação e cada uma delas tornar-se numa origem de dados separada.
Para saber mais, a secção Trabalhar com tabelas explica em maior pormenor as tabelas internas, mas também é aplicável a tabelas externas que residem num serviço cloud.
Trabalhar com tabelas
Pode utilizar as origens de dados de tabelas da mesma forma que utiliza uma tabela interna do Power Apps. Tal como uma tabela interna, cada origem de dados tem registos, colunas e propriedades que pode utilizar em fórmulas. Além disso:
A origem de dados tem os mesmos nomes de colunas e tipos de dados que a tabela subjacente na ligação.
Nota
Para origens de dados do SharePoint e do Excel que contenham nomes de colunas com espaços, o Power Apps substitui-os por "_x0020_". Por exemplo, o "Nome da Coluna" no SharePoint ou no Excel aparecerá como "Column_x0020_Name" no Power Apps, quando apresentado no esquema de dados ou utilizado uma fórmula.
A origem de dados é carregada automaticamente a partir do serviço quando a aplicação é carregada. Pode forçar a atualização dos dados através da função Atualizar.
À medida que os utilizadores executam uma aplicação, podem criar, modificar e eliminar registos e enviar novamente por push essas alterações para a tabela subjacente no serviço.
As funções DataSourceInfo, Predefinições e Validar fornecem informações sobre a origem de dados que pode utilizar para otimizar a experiência de utilizador.
Criar origens de dados
O Power Apps não pode ser utilizado para criar uma origem de dados ligada ou modificar a respetiva estrutura; a origem de dados já tem de existir num serviço algures. Por exemplo, para criar uma tabela num livro do Excel armazenado no OneDrive, primeiro utiliza o Excel Online no OneDrive para criar um livro. Em seguida, cria uma ligação para o mesmo a partir da sua aplicação.
No entanto, as origens de dados de coleção podem ser criadas e modificadas dentro de uma aplicação, mas são apenas temporárias.
Apresentar um ou mais registos
O diagrama acima mostra o fluxo de informações quando uma aplicação lê as informações de uma origem de dados:
- As informações são armazenadas e partilhadas através de um serviço de armazenamento (neste caso, Listas Microsoft ou SharePoint Online).
- Uma ligação disponibiliza estas informações para a aplicação. A aplicação trata da autenticação do utilizador para aceder às informações.
- Quando a aplicação é iniciada ou a função Atualizar é premida, as informações são retiradas da ligação para uma origem de dados na aplicação para utilização local.
- As fórmulas são utilizadas para ler as informações e expô-las em controlos que o utilizador pode ver. Para visualizar os registos de uma origem de dados, pode utilizar uma galeria num ecrã e ligar a propriedade Itens à origem de dados: Galeria.Items = DataSource. Para ligar controlos na galeria à galeria, utilize a propriedade Predefinição dos controlos.
- A origem de dados também é uma tabela. Por isso, pode utilizar Filtrar, Ordenar, AddColumns e outras funções para refinar e aumentar a origem de dados antes de utilizá-la como um todo. Também pode utilizar Pesquisar, Primeiro, Último e outras funções para trabalhar com registos individuais.
Modificar um registo
Na secção anterior, vimos como ler uma origem de dados. Repare que as setas no diagrama acima são unidirecionais. As alterações a uma origem de dados não são novamente enviadas por push através das mesmas fórmulas com as quais os dados foram obtidos. Em vez disso, são utilizadas novas fórmulas. Muitas vezes, o ecrã utilizado para editar um registo é diferente do ecrã utilizado para procurar registos, sobretudo num dispositivo móvel.
Tenha em atenção que, para modificar um registo existente de uma origem de dados, o registo tem de ter vindo originalmente da origem de dados. O registo pode ter percorrido uma galeria, uma variável de contexto e qualquer número de fórmulas, mas deve ser possível identificar a sua origem até à origem de dados. Isto é importante porque as informações adicionais viajam com o registo que as identifica exclusivamente, garantindo que modifica o registo correto.
O diagrama acima mostra o fluxo de informações para atualizar uma origem de dados:
- Um controlo Editar formulário fornece um recipiente para cartões de entrada, que são constituídos por controlos de introdução pelo utilizador, tais como um controlo de introdução de texto ou um controlo de deslize. As propriedades DataSource e Item são utilizadas para identificar o registo a editar.
- Cada cartão de entrada tem uma propriedade Predefinição, que normalmente é definida para o campo do registo ThisItem do formulário. Em seguida, os controlos no cartão de entrada recebem os respetivos valores de entrada de Predefinição. Normalmente, não é necessário modificar esta situação.
- Cada cartão de entrada expõe uma propriedade Atualizar. Esta propriedade mapeia a entrada do utilizador para um campo específico do registo para efetuar um write back para a origem de dados. Normalmente, não é necessário modificar esta situação.
- Um botão ou um controlo Imagem no ecrã permite ao utilizador guardar as alterações ao registo. A fórmula OnSelect do controlo chama a função SubmitForm para fazer este trabalho. SubmitForm lê todas as propriedades Atualizar dos cartões e utiliza-as para efetuar um write back para a origem de dados.
- Por vezes, ocorrerão problemas. Uma ligação de rede pode estar inativa ou uma verificação de validação é executada pelo serviço da qual a aplicação não tem conhecimento. As propriedades Erro e ErrorKind do controlo de formulário disponibilizam estas informações, para que possa apresentá-las ao utilizador.
Para ter um controlo mais otimizado sobre o processo, também pode utilizar a função Patch e Erros. O controlo Editar formulário expõe uma propriedade Atualizações, para que o utilizador possa ler os valores dos campos no formulário. Também pode utilizar esta propriedade para chamar um conector personalizado numa ligação, ignorando completamente as funções Patch e SubmitForm.
Validação
Antes de fazer uma alteração a um registo, a aplicação deve fazer o possível por garantir que a alteração é aceitável. Existem duas razões para tal:
- Comentários imediatos para o utilizador. A melhor altura para corrigir um problema é exatamente quando acontece, quando ainda está fresco na mente do utilizador. Literalmente, com cada toque ou batimento de tecla, pode aparecer texto a vermelho que identifica um problema na sua entrada.
- Menos tráfego de rede e menor latência de utilizador. Mais problemas detetados na aplicação significa menos conversas pela rede para detetar e resolver problemas. Cada conversa demora tempo durante o qual o utilizador terá de aguardar antes de poder avançar.
O Power Apps oferece duas ferramentas para validação:
- A origem de dados pode fornecer informações sobre o que é e não é válido. Por exemplo, os números podem ter valores mínimos e máximos e pode ser necessário uma ou mais entradas. Pode aceder a estas informações com a função DataSourceInfo.
- A função Validar utiliza estas mesmas informações para verificar o valor de uma única coluna ou de um registo completo.
Processamento de erros
Excelente, validou o seu registo. Chegou a hora de atualizar esse registo com a função Patch!
No entanto, infelizmente, ainda pode ocorrer um problema. A rede está inativa, a validação no serviço falhou ou o utilizador não tem as permissões corretas, apenas para citar alguns dos possíveis erros com que a aplicação se pode deparar. A aplicação tem de responder adequadamente a situações de erro, fornecendo comentários ao utilizador e uma forma de corrigir a situação.
Quando ocorrem erros relacionados com uma origem de dados, a aplicação regista automaticamente a informação de erro e disponibiliza-a através da função Erros. Os erros são associados aos registos que tiveram os problemas. Se o problema for algo que o utilizador possa corrigir, tal como um problema de validação, o utilizador pode voltar a submeter o registo e os erros serão limpos.
Se ocorrer um erro quando um registo for criado com a função Patch ou Colecionar, não existe qualquer registo ao qual associar erros. Neste caso, a função Patch devolverá em branco e poderá ser utilizado como o argumento do registo para Erros. Os erros de criação são limpos com a operação seguinte.
A função Erros devolve uma tabela de informações de erro. Estas informações podem incluir as informações de coluna, caso o erro possa ser atribuído a uma coluna específica. Utilize mensagens de erro ao nível da coluna em controlos de etiqueta que estão próximos do local onde a coluna se encontra no ecrã de edição. Utilize mensagens de erro ao nível do registo onde a Coluna na tabela de erros está em branco, numa localização próxima do botão Guardar para o registo completo.
Trabalhar com origens de dados de grande dimensão
Quando está a criar relatórios a partir de origens de dados de grande dimensão (talvez milhões de registos), quer minimizar o tráfego de rede. Digamos que pretende apresentar um relatório sobre todos os Clientes que têm o StatusCode "Platinum" na cidade de Nova Iorque. E que a tabela de Clientes contém milhões de registos.
Não quer introduzir esses milhões de Clientes na sua aplicação e, em seguida, escolher aqueles que quer. O que quer é que essa escolha aconteça dentro do serviço cloud onde a tabela está armazenada e enviar apenas os registos que escolheu pela rede.
Muitas das funções, mas não todas, que pode utilizar para escolher registos podem ser delegadas, o que significa que são executadas dentro do serviço cloud. Para saber como fazer isto, pode ler o artigo sobre a Delegação.
Coleções
As coleções são um tipo especial de origem de dados. São locais em relação à aplicação e não são apoiadas por uma ligação a um serviço na cloud, pelo que as informações não podem ser partilhadas entre dispositivos para o mesmo utilizador ou entre utilizadores. Funcionam como qualquer outra origem de dados, com algumas exceções:
- As coleções podem ser criadas dinamicamente com a função Colecionar. Não precisam de ser estabelecidas com antecedência, tal como acontece com as origens de dados baseadas em ligação.
- As colunas de uma coleção podem ser modificadas em qualquer altura com a função Colecionar.
- As coleções permitem registos duplicados. Pode existir mais de uma cópia do mesmo registo numa coleção. As funções, como Remover, funcionarão na primeira correspondência que encontrarem, a menos que o argumento Tudo seja fornecido.
- Pode utilizar as funções SaveData e LoadData para guardar e recarregar uma cópia da coleção. As informações são armazenadas numa localização privada à qual outros utilizadores, aplicações ou dispositivos não podem aceder.
- Pode utilizar os controlos Exportar e Importar para guardar e recarregar uma cópia da coleção para um ficheiro com o qual o utilizador pode interagir.
Para obter mais informações sobre como trabalhar com uma coleção como uma origem de dados, veja criar e atualizar uma coleção.
As coleções são frequentemente utilizadas para armazenar o estado global para a aplicação. Veja Trabalhar com variáveis para obter as opções disponíveis para gerir o estado.
Nota
Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)
O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).