Salvando Formulário offline - Power App

As coleções locais são os principais mecanismo para gereciarmos dados offline sem alterar muito a lógica do aplicativo.

E para criarmos essas coleções e armazena-las localmente precisamos utilizar funções:

SaveData:  Armazena uma coleção para um uso posterior com um nome, mesmo recarregando a aplicação o dado não é perdido, só quando dá um clear.

LoadData: Recarrega novamente o uma coleção pelo nome que foi salvo no SaveData.

ClearData: Apaga o armazenamento com um nome específico ou apaga todo o armazenamento associado ao aplicativo se nenhum nome for fornecido.

Limitações

As funções LoadData e SaveData serve para auxiliar o armazenamento de um volume pequeno de dados, são limitadas pela quantidade de memória do dispositivo, pelo fato da coleção ser armazenado na memória. Segundo a documentação da Microsoft geralmente você terá de 30 a 70 megabytes de memória disponível.

 Base de Dados e exibindo na Galeria 

Criamos uma lista chamada CadastroProdutos no SharePoint com as seguintes colunas:


Criar uma Galleria para mostrar os dados do SharePoint, mesmo offline. Para isso iremos utilizar  uma coleção para armazenar os dados e salvar-los localmente quando estiver online.

No OnStart do App, vamos criar a coleção com os dados vindo do SharePoint quando App estiver online e com a função SaveData salvar na coleção local, quando este App estiver offline carregaremos esse dado para a coleção. 



Na fonte de dados da galeria, vamos inserir a coleção que criamos no OnStart do aplicativo.




Criando Formulário para Salvar Online e Offline

Inserindo um formulário conectando com a base CadastroProdutos para cadastrar os novos produtos 




Vamos inserir uma label no cabeçalho para nos avisar quando estiver online ou offline.



Vamos inserir um ícone e no OnSelected colocar a função para salvar  os dados. Primeiro condição que temos que testar é se o App está online, se estiver só precisamos salvar normalmente com a função SubmitForm, mas caso não estiver online vamos Coletar esses dados do formulário e salvar em uma coleção, dentro dessa mesma condição chamar a funça SaveData para salvar esses dados na coleção Offline.






Vamos adicionar um controle Timer na tela, que vai ter algumas propriedades para nos axiliar a salvar os dados coletados offline.




Na propriedade Duration vamos definir para 1000


Na propriedade AutoStart e a propriedade Repeat vamos definir para true



Na propriedade OnTimerEnd vamos definir o seguinte. Primeiro vamos testar se o aplicativo está conectadoe e se a coleção que salvamos dados offline tem algum registro. Caso essas duas condições está sendo atendida, vamos fazer um ForAll para que cada




No OnStart do App








Para entender melhor você pode está acessando a documentação da Microsof por aqui App offline