Funções Remove e RemoveIf

Aplica-se a: Aplicações de tela Aplicações condicionadas por modelo CLI do Power Platform

Remove registos de uma origem de dados.

Nota

Os comandos PAC CLI pac power-fx não suportam a função RemoveIf.

Description

Função Remove

Utilize a função Remove para remover um ou mais registos específicos de uma origem de dados.

Para as coleções, todo o registo tem de corresponder. Pode utilizar o argumento RemoveFlags.All para remover todas as cópias de um registo; caso contrário, apenas uma cópia do registo é removida.

Função RemoveIf

Utilize a função RemoveIf para remover um ou mais registos com base numa condição ou num conjunto de condições. Cada condição pode ser uma fórmula que resulta num valor true ou false e pode referenciar colunas da origem de dados por nome. Cada condição é avaliada individualmente para cada registo e cada registo será removido se todas as condições forem avaliadas como verdadeiras.

Remove e RemoveIf devolvem a origem de dados modificada como uma tabela. Pode utilizar ambas as funções apenas em fórmulas de comportamento.

Também pode utilizar a função Clear para remover todos os registos numa coleção.

Delegação

Quando utilizada com uma origem de dados, estas funções não podem ser delegadas. Só será obtida a primeira parte da origem de dados e, em seguida, a função aplicada. Isto pode não representar o cenário completo. Poderá ser apresentada uma mensagem de aviso na hora da criação para o lembrar desta limitação.

Suporte à delegação (Experimental)

O suporte à delegação para RemoveIf está agora em Pré-visualização Experimental (Desligado por predefinição) para origens de dados que o suportam. Se uma origem de dados não suportar esta funcionalidade, o Power Apps envia uma consulta para o servidor e obtém todos os dados que correspondem à expressão de filtro até ao máximo de 500, 2000 ou ao tamanho da página de dados. Em seguida, irá efetuar uma operação de eliminação em cada um desses registos com chamadas individuais para o servidor.

Sintaxe

Remove( DataSource, Record1 [, Record2, ... ] [, RemoveFlags.All ] )

  • DataSource – Obrigatório. A origem de dados que contém um ou mais registos que pretende remover.
  • Record(s) – Obrigatório. Um ou mais registos a remover.
  • RemoveFlags.All — Opcional. Numa coleção, o mesmo registo pode aparecer mais do que uma vez. Pode adicionar o argumento RemoveFlags.All para remover todas as cópias do registo.

Remove( DataSource, Table [, RemoveFlags.All ] )

  • DataSource – Obrigatório. A origem de dados que contém os registos que pretende remover.
  • Table – Obrigatório. Uma tabela de registos a remover.
  • RemoveFlags.All — Opcional. Numa coleção, o mesmo registo pode aparecer mais do que uma vez. Pode adicionar o argumento RemoveFlags.All para remover todas as cópias do registo.

RemoveIf( DataSource, Condition [, ... ] )

  • DataSource – Obrigatório. A origem de dados que contém um ou mais registos que pretende remover.
  • Condition(s) – Obrigatório. Uma fórmula que avalia como true um ou mais registos a remover. Pode utilizar nomes de colunas do argumento DataSource na fórmula. Se especificar várias Conditions, devem ser todas avaliadas como true para um ou mais registos a remover.

Exemplos - fórmulas únicas

Nestes exemplos, vai remover um ou mais registos de uma origem de dados denominada IceCream e que começa com os dados nesta tabela:

Exemplo de IceCream.

Criar uma coleção com registos de exemplo

Para criar uma coleção com estes dados:

  1. Insira um controlo Button.

  2. Defina a propriedade OnSelect do controlo button para a fórmula abaixo:

    ClearCollect( IceCream,
                  { ID: 1, Flavor: "Chocolate",  Quantity: 100 },
                  { ID: 2, Flavor: "Vanilla",    Quantity: 200 },
                  { ID: 3, Flavor: "Strawberry", Quantity: 300 }
    )
    
  3. Selecione o botão enquanto mantém premida a tecla Alt:

Remover registos de exemplo da coleção utilizando uma fórmula

Fórmula Description Result
Remove( IceCream,
LookUp( IceCream, Flavor="Chocolate" ))
Remove o registo Chocolate da origem de dados. Resultado com Baunilha e Morango.

A origem de dados IceCream foi modificada.
Remove( IceCream,
LookUp( IceCream, Flavor="Chocolate" ), LookUp( IceCream, Flavor="Morango" ) )
Remove dois registos da origem de dados. Resultado apenas com Baunilha.

A origem de dados IceCream foi modificada.
RemoveIf( IceCream, Quantity > 150 ) Remove os registos que tenham uma Quantity superior a 150. Resultado apenas com Chocolate.

A origem de dados IceCream foi modificada.
RemoveIf( IceCream, Quantity > 150, Left( Flavor, 1 ) = "S" ) Remove os registos que tenham uma Quantity superior a 150 e cujo Flavor comece pela letra S. Resultado com Chocolate e Baunilha.


A origem de dados IceCream foi modificada.
RemoveIf( IceCream, true ) Remove todos os registos da origem de dados. Resultado sem IceCream.

A origem de dados IceCream foi modificada.

Neste exemplo, irá utilizar um controlo Gallery para listar os registos numa tabela. E, em seguida, utilize a função Remove para remover seletivamente um item.

Preparar os dados de exemplo

Este exemplo utiliza a tabela Contactos em Microsoft Dataverse disponível com as aplicações e dados da amostra. Pode implementar aplicações e dados de exemplo quando cria um ambiente. Também pode utilizar qualquer outra origem de dados.

Neste exemplo, irá remover um item utilizando um botão que esteja fora da galeria.

  1. Crie uma nova aplicação de tela em branco através de um Esquema de telefone.

    Uma aplicação de tela em branco através do esquema de telefone.

  2. Selecione Inserir no painel de navegação esquerdo.

  3. Selecione Galeria vertical.
    É adicionado um controlo Gallery ao seu ecrã.

    Utilizar o painel de ferramentas Inserir para adicionar um controlo gallery vertical.

  4. É-lhe solicitado que selecione uma origem de dados onde possa selecionar uma origem de dados a partir das origens de dados disponíveis.
    Por exemplo, selecione a tabela Contactos para utilizar dados da amostra:

    Selecionar a tabela Contactos para exibir na galeria.

    A galeria mostra itens desta tabela:

    Galeria adicionada mostrando a tabela contactos.

  5. Insira um controlo Button a partir do painel esquerdo:

    Utilizar o painel de ferramentas Inserir para adicionar um controlo button.

  6. Mova o botão adicionado abaixo dos itens da galeria:

    Botão Mover.

  7. Atualize a propriedade de texto do botão para Remover registo. Também pode utilizar o texto que pretender:

    Mudar o nome do botão.

  8. Defina a propriedade OnSelect para este controlo button com a seguinte fórmula:

    Remove( Contacts, Gallery1.Selected )
    

    Definir a propriedade OnSelect do controlo button.

    O controlo gallery disponibiliza o registo selecionado atualmente utilizando a propriedade Selected. A função Remove referencia este registo selecionado para removê-lo.

  9. Pré-visualize a aplicação com o botão Reproduzir na parte superior direita ou prima F5 no teclado:

    Pré-visualizar aplicação.

  10. Selecione um registo a remover, como o registo Nancy neste exemplo:

    Selecione um registo.

  11. Selecione Remover registo:

    Galeria de contactos, agora sem o registo Nancy que foi removido.

    A seleção do botão remove o registo selecionado (neste exemplo, o registo de Nancy).

  12. Feche a pré-visualização da aplicação.

    Gorjeta

    Também pode utilizar o comportamento alternativo com a tecla Alt em vez de utilizar a pré-visualização da aplicação com o botão Reproduzir ou F5.

Neste exemplo, irá remover um item utilizando um ícone colocado dentro da galeria.

Criar uma coleção com dados de exemplo

Se já tiver dados de exemplo preparados, ignore este passo e vá para o ícone de Caixote do lixo dentro de uma galeria.

  1. Adicione um controlo Button ao seu ecrã.

  2. Defina a propriedade OnSelect à seguinte fórmula:

    ClearCollect( SampleContacts,
          { 'Full Name': "Yvonne McKay (sample)",      'Primary Email': "someone_a@example.com" },
          { 'Full Name': "Susanna Stubberod (sample)", 'Primary Email': "someone_b@example.com" },
          { 'Full Name': "Nancy Anderson (sample)",    'Primary Email': "someone_c@example.com" },
          { 'Full Name': "Maria Campbell (sample)",    'Primary Email': "someone_d@example.com" },
          { 'Full Name': "Robert Lyon (sample)",       'Primary Email': "someone_e@example.com" },
          { 'Full Name': "Paul Cannon (sample)",       'Primary Email': "someone_f@example.com" },
          { 'Full Name': "Rene Valdes (sample)",       'Primary Email': "someone_g@example.com" }
    )
    
  3. Selecione o botão enquanto mantém premida a tecla Alt.

É criada uma coleção de exemplo que pode utilizar no exemplo seguinte.

  1. Crie uma nova aplicação de tela em branco através de um Esquema de telefone.

    Uma aplicação de tela em branco através do esquema de telefone.

  2. Selecione Inserir no painel de navegação esquerdo.

  3. Selecione Galeria vertical.
    É adicionado um controlo Gallery ao seu ecrã.

    Utilizar o painel de ferramentas Inserir para adicionar um controlo gallery vertical.

  4. É-lhe solicitado que selecione uma origem de dados onde possa selecionar uma origem de dados a partir das origens de dados disponíveis.
    Por exemplo, selecione a tabela Contactos para utilizar dados da amostra:

    Selecionar a tabela Contactos para exibir na galeria.

    Se tiver criado uma coleção, selecione a sua coleção:

    Coleção de contactos de exemplo.

  5. Selecione um controlo no item superior da galeria.

    Para garantir que o passo seguinte insere o item no modelo da galeria e não fora da galeria, certifique-se de que segue este passo antes de avançar para o passo seguinte.

    Selecionar o registo superior numa galeria.

  6. Selecione Adicionar ícone no painel esquerdo.

    Utilizar o painel de ferramentas Inserir para adicionar um controlo de ícone.

    Nota

    Adicionar ícone insere um ícone + no lado esquerdo da galeria, replicado para cada item na galeria.

  7. No item superior, mova o ícone para o lado direito do ecrã.

    Ícone Mover.

  8. Selecione a propriedade Icon para o ícone e defina-a para a fórmula seguinte para atualizar a imagem de ícone como ícone de lixo:

    Icon.Trash
    

    Nota

    O prefixo Icon. só é mostrado quando está a editar ativamente a fórmula.

    Alterar o ícone para o ícone de caixote do lixo.

  9. Defina a propriedade OnSelect à seguinte fórmula:

    Remove( [@Contacts], ThisItem )
    

    Nota

    Deve utilizar o operador global de desambiguação[@...] neste exemplo com dados de amostra que utilizam a tabela Contactos para evitar conflitos com uma relação Um para Muitos. Se utilizar origens de dados, como uma lista ou uma tabela do SQL Server, não é necessário utilizar o operador de desambiguação global.

    OnSelect para o ícone de lixo.

  10. Pré-visualize a aplicação com o botão Reproduzir na parte superior direita ou prima F5 no teclado.

  11. Selecione o ícone de lixo junto a um registo; por exemplo, Maria:

    Galeria com um dos contactos removidos.

    O registo é eliminado:

    Registo eliminado.

  12. Feche a pré-visualização da aplicação.