Se você já usou outra ferramenta de programação, como Visual Basic ou JavaScript, deve estar se perguntando: onde estão as variáveis? O PowerApps é um pouco diferente e exige uma abordagem diferente. Em vez de buscar uma variável, pergunte-se: O que eu faria no Excel?

Em outras ferramentas, você pode ter realizado explicitamente um cálculo e armazenado o resultado em uma variável. No entanto, o PowerApps e o Excel automaticamente recalculam fórmulas à medida que os dados de entrada mudam, por isso geralmente não é necessário criar nem atualizar as variáveis. Ao utilizar essa abordagem sempre que possível, é mais fácil criar, compreender e manter seu aplicativo.

Em alguns casos, você precisará usar variáveis no PowerApps, que estende o modelo do Excel, adicionando fórmulas de comportamento. Essas fórmulas são executadas quando, por exemplo, um usuário seleciona um botão. Dentro de uma fórmula de comportamento, geralmente, é útil definir uma variável a ser usada em outras fórmulas.

Em geral, evite usar variáveis. Mas, às vezes, apenas uma variável pode habilitar a experiência que você deseja.

Converter Excel em PowerApps

Excel

Vamos examinar como o Excel funciona. Uma célula pode conter um valor, como um número ou uma cadeia de caracteres ou uma fórmula com base nos valores de outras células. Depois que o usuário insere um valor diferente em uma célula, o Excel recalcula automaticamente todas as fórmulas que dependem do valor novo. Você não precisa fazer nenhuma programação para habilitar esse comportamento.

O Excel não tem variáveis. O valor de uma célula que contém uma fórmula muda com base em sua entrada, mas não há nenhuma maneira de lembrar o resultado de uma fórmula e armazená-lo em uma célula ou em qualquer outro lugar. Se você alterar o valor de uma célula, a planilha inteira poderá ser alterada e qualquer valor calculado anteriormente será perdido. Um usuário do Excel pode copiar e colar células, mas isso está sob o controle manual do usuário e não é possível com fórmulas.

PowerApps

Aplicativos que você cria no PowerApps se comportam de maneira muito parecida com o Excel. Em vez de atualizar células, é possível adicionar controles em qualquer local que desejar em uma tela e nomeá-los para uso em fórmulas.

Por exemplo, você pode replicar o comportamento do Excel em um aplicativo adicionando um controle Rótulo, chamado TextBox1, e dois controles Entrada de texto, chamados TextInput1 e TextInput2. Se você definir a propriedade Texto de TextBox1 como TextInput1 + TextInput2, ela sempre exibirá a soma de quaisquer números que estiverem em TextInput1 e TextInput2 automaticamente.

Observe que o controle TextBox1 está selecionado, mostrando sua fórmula de Texto na barra de fórmulas na parte superior da tela. Aqui, encontramos a fórmula TextInput1 + TextInput2. Esta fórmula cria uma dependência entre esses controles, assim como as dependências são criadas entre as células em uma planilha do Excel. Vamos alterar o valor de TextInput1:

A fórmula para TextBox1 foi automaticamente recalculada, exibindo o novo valor.

no PowerApps, você pode usar fórmulas para determinar não apenas o valor principal de um controle, mas também propriedades como a formatação. No próximo exemplo, uma fórmula para a propriedade Color do rótulo mostrará automaticamente os valores negativos em vermelho. A função If deve ser bem semelhante à do Excel:
If( Value(TextBox1.Text) < 0, Red, Black )

Agora, se o resultado de nosso cálculo em TextBox1 for negativo, o número será exibido em vermelho:

Você pode usar fórmulas para uma ampla variedade de cenários:

  • Ao usar o GPS do seu dispositivo, um controle de mapa pode exibir seu local atual com uma fórmula que usa Location.Latitude e Location.Longitude. À medida que você se move, o mapa rastreará automaticamente seu local.
  • Outros usuários podem atualizar as fontes de dados. Por exemplo, outras pessoas de sua equipe podem atualizar itens em uma lista do SharePoint. Quando você atualiza uma fonte de dados, todas as fórmulas dependentes são recalculadas automaticamente para refletir os dados atualizados. Ao aprofundar ainda mais o exemplo, você poderá definir a propriedade Itens de uma galeria como a fórmula Filter( SharePointList), que exibirá automaticamente o conjunto de registros recém-filtrado.

Benefícios

Usar fórmulas para criar aplicativos tem muitas vantagens:

  • Se você conhece o Excel, também conhece o PowerApps. O modelo e a linguagem de fórmula são os mesmos.
  • Se você usou outras ferramentas de programação, pense na quantidade de códigos necessária para executar esses exemplos. No Visual Basic, você precisaria escrever um manipulador de eventos para o evento de alteração em cada controle de entrada de texto. O código para realizar o cálculo em cada um deles é redundante e pode ficar fora de sincronia, ou você precisaria escrever uma sub-rotina comum. No PowerApps, você realizou tudo com uma única fórmula de uma linha.
  • Para compreender de onde o texto de TextBox1 é proveniente, você sabe exatamente onde procurar: a fórmula na propriedade Texto. Não há nenhuma outra forma de afetar o texto deste controle. Em uma ferramenta de programação tradicional, qualquer manipulador de eventos ou sub-rotina poderia alterar o valor do rótulo, de qualquer lugar no programa. Isso pode dificultar o rastreamento de quando e onde uma variável foi alterada.
  • Se o usuário altera um controle deslizante e, em seguida, muda de ideia, ele pode alterar o controle deslizante de volta para seu valor original. E é como se nada nunca tivesse sido alterado: o aplicativo mostrará os mesmos valores de controle como fazia antes. Não há nenhuma ramificação para experimentar e perguntar "e se", assim como não há nada no Excel.

Em geral, se você puder obter um efeito usando uma fórmula, será melhor. Deixe que o mecanismo da fórmula no PowerApps trabalhe para você.

Saber quando usar variáveis

Vamos alterar nosso adicionador simples para atuar como uma calculadora antiga, com um total acumulado. Se você selecionar um botão Adicionar, um número será adicionado ao total acumulado. Se você selecionar um botão Limpar, redefinirá o total acumulado para zero.

Nossa calculadora usa algo que não existe no Excel: um botão. Neste aplicativo, não é possível usar somente fórmulas para calcular o total acumulado porque seu valor depende de uma série de ações que o usuário realiza. Em vez disso, nosso total acumulado deve ser registrado e atualizado manualmente. A maioria das ferramentas de programação armazena essas informações em uma variável.

Às vezes, você precisará que uma variável para o seu aplicativo se comporte da maneira desejada. Mas a abordagem vem com Advertências:

  • Você deve atualizar manualmente o total acumulado. O recálculo automático não fará isso para você.
  • O total acumulado não pode mais ser calculado com base nos valores de outros controles. Ele depende de quantas vezes o usuário selecionou o botão Adicionar e qual valor estava no controle de entrada de texto em cada uma das vezes. O usuário inseriu 77 e selecionou Adicionar duas vezes, ou ele especificou 24 e 130 para cada uma das adições? Você não pode determinar a diferença depois que o total atingiu 154.
  • As alterações no total podem vir de caminhos diferentes. Neste exemplo, os botões Adicionar e Limpar podem atualizar o total. Se o aplicativo não se comportar da maneira esperada, qual botão estará causando o problema?

Criar uma variável de contexto

Para criar nossa calculadora, precisamos de uma variável para manter o total acumulado. As variáveis mais simples no PowerApps são variáveis de contexto.

Como funcionam as variáveis de contexto:

  • Crie e defina variáveis de contexto usando a função AtualizarContexto. Se uma variável de contexto ainda não existir quando você atualizou pela primeira vez, ela será criada com um valor padrão em branco.
  • Crie e atualize as variáveis de contexto com registros. Em outras ferramentas de programação, geralmente você usa "=" para a atribuição, como em "x = 1". Para variáveis de contexto, use { x: 1 } em vez disso. Quando você usa uma variável de contexto, use seu nome diretamente.
  • Também é possível definir uma variável de contexto quando uma tela é exibida, usando a função Navegar. Se pensar em uma tela como um tipo de procedimento ou uma sub-rotina, isso será semelhante ao parâmetro que passa em outras ferramentas de programação.
  • Exceto para Navegar, as variáveis de contexto são limitadas ao contexto de uma única tela, que é de onde elas obtêm o nome. Você não pode usar nem defini-las fora deste contexto.
  • Variáveis de contexto podem conter qualquer valor, incluindo cadeias de caracteres, números, registros e tabelas.
  • Quando o usuário fecha um aplicativo, todas as suas variáveis de contexto são perdidas.

Vamos recompilar nossa calculadora usando uma variável de contexto:

  1. Adicione um controle de entrada de texto, chamado TextInput1, e dois botões, chamados Button1 e Button2.

  2. Defina a propriedade Texto de Button1 como "Adicionar" e defina a propriedade Texto de Button2 como "Limpar".

  3. Para atualizar o total acumulado sempre que um usuário seleciona o botão Adicionar, defina sua propriedade OnSelect como esta fórmula:
    UpdateContext( { RunningTotal: RunningTotal + Text1 } ).

    Na primeira vez que um usuário selecionar o botão Adicionar e AtualizarContexto for chamado, RunningTotal é criado com um valor padrão em branco. Além disso, ele será tratado como zero.

  4. Para definir o total acumulado como 0, sempre que o usuário seleciona o botão Limpar, defina sua propriedade OnSelect como esta fórmula:
    UpdateContext( { RunningTotal: 0 } )

    Novamente, AtualizarContexto é usado com a fórmula UpdateContext( { RunningTotal: 0 } ).

  5. Adicione um controle Rótulo e defina sua propriedade Text como RunningTotal.

    Esta fórmula será automaticamente recalculada e exibirá ao usuário o valor de RunningTotal à medida que ele mudar de acordo com os botões que o usuário selecionar.

  6. Visualize o aplicativo e nossa calculadora estará como descrito acima.

Criar uma coleção

Para fazer referência a uma variável de qualquer tela (não apenas aquela na qual ela foi criada), use uma coleção para armazenar uma variável global.

Como coleções funcionam:

  • Crie e defina coleções usando a função LimparColeta. Como alternativa, você pode usar a função Coletar, mas isso exigirá efetivamente outra variável em vez de substituir a antiga.
  • Uma coleção é uma fonte de dados e, portanto, uma tabela. Para acessar um único valor em uma coleção, use a função Primeiro e extraia um campo do registro resultante. Se você usar um único valor com LimparColeta, esse será o campo Valor, como neste exemplo:
    First( VariableName ).Value
  • Todas as fórmulas podem acessar uma coleção de qualquer tela no aplicativo.
  • Quando um usuário fecha um aplicativo, todas as suas coleções são removidas.

Vamos recriar nossa calculadora usando uma coleção:

  1. Adicione um controle de Entrada de texto, chamado TextInput1 e dois botões, chamados Button1 e Button2.

  2. Defina a propriedade Texto de Button1 como "Adicionar" e defina a propriedade Texto de Button2 como "Limpar".

  3. Para atualizar o total acumulado sempre que um usuário seleciona o botão Adicionar, defina sua propriedade OnSelect como esta fórmula:
    ClearCollect( RunningTotal, First( RunningTotal ).Value + TextInput1 )

    Ao usar LimparColeta com um único valor, um registro será criado na coleção com um único campo de Valor. Na primeira vez que o usuário seleciona o botão Adicionar e LimparColeta for chamado, RunningTotal estará vazio. Além disso, Primeiro retornará em branco e será tratado como zero.

  4. Para definir o total acumulado como 0, sempre que um usuário seleciona o botão Limpar, defina sua propriedade OnSelect como esta fórmula:
    ClearCollect( RunningTotal, 0 )

    Novamente, LimparColeta é usado com a fórmula ClearCollect( RunningTotal, 0 ).

  5. Para adicionar o total acumulado, adicione um rótulo e defina sua propriedade Text com esta fórmula:
    First(RunningTotal).Value

    Essa fórmula extrai o campo Valor do primeiro registro da coleção RunningTotal. O rótulo mostrará automaticamente o valor de RunningTotal à medida que ele mudar, de acordo com os botões selecionados pelo usuário.

  6. Para executar a calculadora, pressione F5 para abrir a Versão Prévia, insira números no controle de entrada de texto e selecione botões.

  7. Para retornar ao espaço de trabalho padrão, pressione Esc.

  8. Para ver os valores em sua coleção, selecione Coleções no menu Arquivo.