Tempo de leitura:
Neste artigo vou mostrar-te como podes usar a função Patch do Power Apps, uma das mais utilizadas e importantes para poderes adicionar ou atualizar registos numa base de dados!
Em Power Apps, podes sempre usar o controlo de formulário, que de uma forma simplificada permite-te 1) ligar a uma base de dados, 2) selecionar os campos, e pressionar um botão através da função 3) SubmitForm para fazeres o “upload” de um registo ou alterar o mesmo numa base de dados.
Contudo se pretendes ter mais controlo ao nível de aspeto visual na tua aplicação, e acima de tudo para situações mais complexas, vais necessitar de saber trabalhar com a Função Patch.
Sintaxe da função:
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])
A função Patch em Power Apps modifica ou cria um ou mais registos de uma base de dados, o que significa que podes usar em 2 funcionalidades.
- Criar um registo: Quando usada com a função Defaults sobre o BaseRecord esta função permite criar um registo em branco na base de dados, caso não seja indicado nenhum valor para o registo.
- Modificar um Registo: Quando é aplicado um registo específico BaseRecord que depois pode ser alterado no argumento do registo.
No cenário vamos ver vários exemplos para preencher um registo numa base de dados, em que temos vários tipos de colunas (Escolha, Pesquisa, Datas, Imagens para perceberes como funciona a função nestes contextos.
Cenário
No cenário tenho já uma aplicação com um ecrã ligado a uma base de dados de SharePoint. Que podes usar com outra base de dados.

No cenário tenho também já uma Galeria para mostrar os dados e um conjunto de controlos associados para cada campo que será preenchido na aplicação.

Inserir um botão para a função Patch
Vamos então agora iniciar a lógica, inserindo um botão que vai permitir executar a função Patch.

Na propriedade OnSelect começamos a colocar a expressão Patch:
Patch(Jogadores; Defaults(Jogadores);{})
- Jogadores: Base de Dados
- Defaults (Jogadores ): Registo Default (Novo) na Base de dados
- {}: Registo em Branco -> Esta opção só é possível porque a base de dados não contém nenhum campo obrigatório. Na função Patch, se a base de dados tiver um ou mais campos obrigatórios, deves já incluir os campos na criação do registo.

Esta é a lógica da função. O que se segue é apenas a introdução de informação para preencher os campos de acordo com os dados.
Preencher campos de texto
Para preencher campos de texto, basta colocar um valor de texto, uma string. Neste caso estamos a usar controlos de introdução de texto, mas podes colocar qualquer valor que seja texto.

Preencher campos escolha (Choice Column)
As colunas de escolha de valores, são consideradas colunas complexas pelo tipo de dados. Neste caso, uma coluna de Choice, tem um conjunto de valores, mas usando uma List Box por exemplo, basta aceder ao valor selecionado.

Preencher campos de Data
Um campo de data apenas precisa de uma Data, que pode ser colocada de qualquer forma e feitio 😄.
Neste caso temos um controlo de seleção de data que é perfeito para preencher este campo.

Preencher campos Numéricos
Temos no exemplo 2 campos numéricos. A idade, que está definida numa Caixa de Entrada de Texto e a altura, que está num controlo de slider.
A Idade, tem de ser convertida em número, uma vez que uma Caixa de Entrada de Texto devolve texto. O Controlo de Slider devolve naturalmente um valor.

Preencher Lista Pendente com Tabela
Uma lista pendente pode ter vários valores, como os valores uma coluna Choice, mas também pode ter uma tabela com registos.
O controlo de Lista Pendente do País tem os seguintes dados na propriedade Itens:
[“Portugal”; “Espanha”; “Itália”; “Alemanha”]
Que corresponde a uma tabela com apenas uma coluna.

Para preencher este valor usamos a mesma logica, que foi colocada na Posição, mas temos agora de indicar o registo .Value

Preencher Valores Booleanos
O próximo valor do registo é um valor Booleano com um campo de Sim / Não. Neste caso apenas necessitamos de aplicar o valor do controlo.

Preencher Colunas de Pesquisa (LookUp)
Uma coluna de pesquisa é provavelmente o tipo de coluna / campo mais complexo. Este tipo de campo depende da base de dados utilizada e como recorre a outra tabela temos de indicar, sobre a forma de registo qual o registo associado à coluna de pesquisa.
Clube: {
Id: drp_Clube.Selected.ID;
Value: drp_Clube.Selected.Clube
}

Preencher Coluna de Foto
Para preencher uma coluna de foto, temos de dar um valor de imagem. O controlo de imagem é ideal para colocar. No exemplo estou a usar o controlo AddMedia que permite adicionar uma foto do computador e usar a imagem.

Para adicionar registos com a função Patch basta colocar os campos necessário para completar o registo na base de dados.
Alterar um Registo Existente
Para realizarmos a alteração a um registo já existente na Base de Dados o procedimento é semelhante, onde apenas temos de identificar o registo que pretendemos alterar. A sintaxe mantém-se igual apenas com a alteração do registo Base!
Patch( DataSource, BaseRecord, ChangeRecord1 [, ChangeRecord2, … ])
Armazenar o registo numa variável
Um dos métodos mais simples de identificar o registo base é através de uma variável que pode ser definida através de uma variável global ou local, conforme a preferência.
Set(varJogador; ThisItem)

A opção ThisItem permite armazenar todo o registo na variável.
É possível confirmar os dados por exemplo através de uma etiqueta de texto.

Definir a função para modificar o registo existente
Num novo botão vamos colocar a mesma função Patch apenas com a indicação do registo base diferente. Podemos fazer uma cópia do Botão original!

Alternativa à variável…
A função LookUp também é bastante utilizada nestes cenários, uma vez que podemos localizar o primeiro registo da tabela que satisfaz uma condição. Semelhante à função Vlookup no Excel!
LookUp(Jogadores; ID = gal_Jogador.Selected.ID).Nome
No exemplo a função LookUp localiza o registo, mas como estamos a testar numa etiqueta de texto, temos de escolher o campo a mostrar na caixa de texto.

Na função Patch apenas necessitamos do registo.

Assim com a função Patch é possível atualizar registos ou criar novos numa Base de Dados!
Próximo artigo:
Artigo Anterior:
Artigos por Categoria
- Microsoft Excel (40)
- Power Apps (16)
- Power Automate (3)
- Power BI (10)
- Power Query (12)
- Python (3)
- VBA (7)

Leave a Reply