Compreender referências de registo e pesquisas polimórficas em aplicações de tela

Quando escreveu um trabalho de pesquisa na escola, é provável que tenha fornecido uma lista das suas referências no final. Não incluía uma cópia do material de segundo plano real utilizado, mas sim uma hiperligação Web, título de livro e autor, ou outras informações, para que alguém possa monitorizar a origem original. Misturou diferentes tipos de origens numa única lista, artigos de jornal junto de gravações de áudio, cada um com os respetivos detalhes específicos para uma citação apropriada. Por exemplo, os artigos da Wikipédia normalmente incluem uma longa lista de referências.

Em aplicações de tela, costuma trabalhar com cópias de registos transferidas a partir de origens de dados. Utilize as funções de pesquisa e filtro e a Propriedade selecionada do controlo de galeria para identificar o registo específico que pretende. Todos os registos de Filtrar ou Selecionados serão do mesmo tipo de tabela, para que possa utilizar campos com uma simples notação .Campo. Estas cópias incluem frequentemente informações de referência para que possa utilizar a função Patch para atualizar a origem original.

As aplicações de tela também suportam referências de registo. Tal como com uma referência ao trabalho de pesquisa, uma referência de registo refere-se a um registo sem incluir uma cópia completa do mesmo. Uma referência deste tipo pode referir-se a um registo em qualquer tabela. À semelhança das referências de um trabalho de investigação, pode misturar registos de diferentes tabelas numa única coluna.

Muitas operações em referências a registos são idênticas a trabalhar com registos. Pode comparar referências de registo entre si e para registos completos. Pode definir o valor de uma referência de registo com a função Patch, tal como faria uma pesquisa com um registo completo.

Há uma diferença importante de utilização: não é possível aceder diretamente aos campos de uma referência de registo sem antes estabelecer a que tabela se refere. Isto deve-se ao facto de as aplicações de tela exigirem que todos os tipos sejam conhecidos quando escrever fórmulas. Uma vez que não sabe o tipo de uma referência de registo até à aplicação estar em execução, não pode utilizar a simples notação Campo diretamente. Primeiro, tem de determinar dinamicamente o tipo de tabela com a função IsType e, em seguida, tem de utilizar a notação .Campo no resultado da função AsType.

Tipo de tabela refere-se ao esquema de cada registo numa tabela. Cada tabela tem um conjunto exclusivo de campos com diferentes nomes e tipos de dados. Cada registo da tabela herda essa estrutura; dois registos têm o mesmo tipo de tabela se forem provenientes da mesma tabela.

Nota

Pode escolher de entre muitos conectores diferentes para se ligar a diferentes tipos de origem de dados para aplicações de tela. No entanto, ao trabalhar com aplicações de tela no Power Apps Studio, as colunas no Microsoft Dataverse são referidas como campos, em semelhança a todas as outras origens de dados. O termo Coluna é apenas utilizado quando se refere a uma coluna no Dataverse. Mais informações: Atualizações de terminologia do Dataverse

Pesquisas polimórficas

Microsoft Dataverse suporta relações entre registos. Cada registo na tabela Contas tem uma coluna de pesquisa Contacto Principal para um registo na tabela Contactos. A pesquisa só pode referir-se a um registo em Contactos e não pode referir-se, por exemplo, a um registo na tabela Equipas. Este último detalhe é importante porque sabe sempre quais são as colunas que estarão disponíveis para a pesquisa.

O Dataverse também suporta pesquisas polimórficas, que podem se referir a um registo de qualquer tabela num conjunto. Por exemplo, a coluna Proprietário pode referir-se a um registo na tabela Utilizadores ou Equipas. A mesma coluna de pesquisa em diferentes registos pode referir-se a registos em diferentes tabelas. Neste caso, nem sempre se sabe que colunas estarão disponíveis.

As referências de registo de tela foram concebidas para trabalhar com pesquisas polimórficas no Dataverse. Também pode utilizar referências de registo fora deste contexto, que é o modo como os dois conceitos são diferentes.

Na secção seguinte, começará a explorar estes conceitos ao trabalhar com a pesquisa de proprietário.

Mostrar as colunas de um proprietário de registos

Todas as tabelas do Dataverse incluem uma coluna Proprietário. Esta coluna não pode ser removida, não se pode adicionar outra e requer sempre um valor.

Para mostrar esta coluna na tabela Conta:

  1. Inicie sessão no Power Apps.

  2. Na barra do painel esquerdo, selecione Dados > Tabelas.

  3. Na lista de tabelas, selecione Conta.

  4. No canto superior direito, abra a lista de filtros (definida como predefinição por predefinição) e, em seguida, selecione tudo.

  5. Desloque-se para baixo até aparecer a coluna Proprietário.

    Coluna Proprietário da tabela Conta.

Esta coluna de pesquisa pode referir-se a um registo da tabela Equipas ou Utilizadores. Nem todos os registos destas tabelas têm permissão de Proprietário; verifique as funções suportadas se tiver algum problema.

Este gráfico mostra uma simples galeria de Contas, onde a tabela Contas foi adicionada à aplicação como uma origem de dados:

Contas mostradas num controlo Galeria.

Importante

Ao longo deste tópico, os gráficos mostram alguns nomes e outros valores que não fazem parte dos dados de exemplo fornecidos com o Dataverse. Os passos demonstram de forma precisa como configurar controlos para um resultado específico, mas a sua experiência varia consoante os dados da sua organização.

Para mostrar o proprietário de cada conta na Galeria, poderá ficar tentado a utilizar a fórmula ThisItem.Owner.Name. No entanto, o campo de nome na tabela Equipa é Nome da Equipa e o campo de nome na tabela Utilizador é Nome Completo. A aplicação não pode saber com que tipo de pesquisa está a trabalhar até executar a aplicação e pode variar entre os registos na tabela Contas.

Necessita de uma fórmula que se possa adaptar a esta variância. Também é necessário adicionar as origens de dados para os tipos de tabela em que o Proprietário pode estar (neste caso, Utilizadores e Equipas). Adicione estas três origens de dados à sua aplicação:

Tabelas Contas, Equipas e Utilizadores no painel Dados.

Com estas origens de dados em vigor, utilize esta fórmula para apresentar o nome de um utilizador ou de uma equipa:

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Contas mostradas num controlo Galeria com o campo Proprietário apresentado.

Nesta fórmula, a tabela IsType testa o campo Proprietário em relação à tabela Equipas. Se tiver esse tipo de tabela, a função AsType converte-o num registo de Equipa. Nesta altura, pode aceder a todos os campos da tabela Equipas, incluindo Nome da Equipa, utilizando a notação .Campo. Se IsType determinar que o Proprietário não é um registo da tabela Equipa, esse campo tem de ser um registo na tabela Utilizadores porque o campo Proprietário é obrigatório (não pode estar em branco).

Para utilizar campos de uma referência de registo, primeiro tem de utilizar a função AsType para os converter num tipo de tabela específico. Não é possível aceder diretamente aos campos do campo Proprietário porque o sistema não sabe que tipo de tabela pretende utilizar.

A função AsType devolve um erro se o campo Proprietário não corresponder ao tipo de tabela que está a ser solicitado, por isso pode utilizar a função IfError para simplificar esta fórmula. Em primeiro lugar, ative a funcionalidade experimental Gestão de erros no nível de fórmulas:

Mudança experimental para passar para gestão de erros no nível de fórmulas.

Em seguida, substitua a fórmula anterior por esta:

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Filtrar com base num proprietário

Parabéns: concluiu o aspeto mais difícil de trabalhar com uma referência a um registo. Outros casos de utilização são mais simples porque não acedem a campos do registo. Como um incidente no ponto, faça a filtragem, que irá explorar nesta secção.

Adicione um controlo de caixa de combinação acima da galeria e defina estas propriedades do novo controlo:

  • Itens: Users
  • SelectMultiple: false

Controlo de caixa de combinação adicional sobre a galeria com a propriedade Itens definida para utilizadores.

Para filtrar a galeria por um utilizador específico selecionado a partir desta caixa de combinação, defina a Propriedade itens da Galeria como esta fórmula:

Filter( Accounts, Owner = ComboBox1.Selected )

Galeria filtrada com base no valor definido no controlo da caixa de combinação.

Importante

As instruções existentes neste tópico são precisas se seguirem exatamente os passos. No entanto, qualquer fórmula que faça referência a um controlo pelo respetivo nome falhará se o controlo tiver um nome diferente. Se eliminar e adicionar um controlo do mesmo tipo, o número no final do nome do controlo é alterado. Para qualquer fórmula que mostre um erro, confirme que contém os nomes corretos de todos os controlos.

Não é necessário utilizar IsType ou AsType porque está a comparar referências de registo com outras referências de registo ou a registos completos. A aplicação conhece o tipo de tabela de ComboBox1.Selected porque é derivado da tabela Utilizadores. As contas para as quais o proprietário é uma equipa não correspondem ao critério de filtro.

Pode ser um pouco mais visionário ao suportar a filtragem por um utilizador ou uma equipa.

  1. Coloque algum espaço perto da parte superior do ecrã, redimensione a galeria e mova a caixa de combinação, introduza um controlo de rádio sobre a galeria e, em seguida, defina estas propriedades para o novo controlo:

    • Itens: [ "All", "Users", "Teams" ]
    • Esquema: Layout.Horizontal
  2. Para o controlo de caixa de combinação, defina esta propriedade (se a caixa de combinação desaparecer, selecione utilizadores no controlo do rádio):

    • Visível: Radio1.Selected.Value = "Users"
  3. Copie e cole o controlo de caixa de combinação, mova a cópia diretamente sobre o original e, em seguida, defina estas propriedades para a cópia:

    • Itens: Teams
    • Visível: Radio1.Selected.Value = "Teams"

    A aplicação irá apresentar apenas uma caixa de combinação de cada vez, consoante o estado do controlo do rádio. Visto que estão diretamente acima uns dos outros, parecerão ser os mesmos controles que alteram o respetivo conteúdo.

  4. Finalmente, defina a propriedade Itens do controlo Galeria para esta fórmula:

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

    Galeria filtrada que mostra todos os registos ou um utilizador ou equipa específico.

Com estas alterações, pode mostrar todos os registos ou filtrá-los com base num utilizador ou numa equipa:

Animação mostrando diferentes resultados filtrados com base no controlo do rádio e nas caixas de combinação.

A fórmula é totalmente delegável. A parte que está a comparar os valores do botão de opção é uma constante em todos os registos e é avaliada antes de o resto do filtro ser enviado para o Dataverse.

Se pretender filtrar com base no tipo de proprietário, pode utilizar a função IsType, mas ainda não está delegável.

Filtrar por tipo de proprietário utilizando o tipo de IsType.

Atualizar o proprietário utilizando o Patch

Pode atualizar o campo de proprietário da mesma forma que qualquer outra pesquisa. Para definir o proprietário da conta atualmente selecionado na primeira equipa:

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

Esta abordagem não difere de uma pesquisa normal porque a aplicação sabe o tipo de primeiro (Equipas). Se pretender o primeiro utilizador, substitua essa parte pelo primeiro (utilizadores). A função Patch sabe que o campo Proprietário pode ser definido para qualquer um destes dois tipos de tabela.

Para adicionar esta capacidade à aplicação:

  1. No painel vista de árvore, selecione o controlo do rádio e os dois controlos de caixa de combinação ao mesmo tempo.

  2. No menu de reticências, selecione copiar estes itens.

    Cópia de vários controlos utilizando a vista de árvore.

  3. No mesmo menu, selecione Colar.

    Colar vários controlos utilizando a vista de árvore.

  4. Mover os controlos copiados à direita da galeria.

    Mover os controlos copiados para a direita da galeria.

  5. Selecione o controlo de rádio copiado e, em seguida, altere estas propriedades:

    • Itens: [ "Users", "Teams" ]
    • Predefinição: If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    Remover toda a escolha do controlo de rádio.

  6. No controlo do rádio, selecione utilizadores para que o controlo de caixa de combinação que lista os utilizadores fique visível.

  7. Selecione o controlo de caixa de combinação visível e, em seguida, defina a Propriedade DefaultSelectedItems como esta fórmula:

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Definição predefinida para a caixa de combinação utilizadores.

  8. No controlo do rádio, selecione Equipas para que o controlo de caixa de combinação que lista as equipas fique visível.

  9. Selecione o controlo do rádio fora do controlo da agora invisível caixa de combinação para os utilizadores.

  10. Selecione o controlo de caixa de combinação para equipas visível e, em seguida, defina a sua propriedade DefaultSelectedItems como esta fórmula:

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Definição predefinida para a caixa de combinação Equipas.

  11. Inserir um controlo de botão, movê-lo sob o controlo de caixa de combinação e, em seguida, definir a propriedade de texto do botão como "Patch Owner".

  12. Defina a propriedade OnSelect do botão como esta fórmula:

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Conjunto de fórmulas no botão de controlo.

Os controlos de rádio e caixa de combinação copiados mostram o proprietário da conta selecionada atualmente na galeria. Com os mesmos controlos, pode definir o proprietário da conta para qualquer equipa ou utilizador selecionando o botão:

Animação que mostra o patch do proprietário com um utilizador ou uma equipa.

Mostrar o proprietário utilizando um formulário

Pode mostrar um campo de proprietário dentro de um formulário adicionando um cartão personalizado. A partir desta escrita, não pode alterar o valor do campo com um controlo de formulário.

  1. Inserir um controlo de formulário de edição e, em seguida, redimensioná-lo e movê-lo para o canto inferior direito.

  2. No separador propriedades perto do lado direito do ecrã, abra a lista origem de dados e, em seguida, selecione Contas.

    Controlo de formulário que mostra campos adicionais com valores em branco.

  3. Definir a propriedade Item do formulário como Gallery1.Selected.

    Controlo de formulário que mostra campos adicionais preenchidos a partir do item selecionado na Galeria.

  4. No separador Propriedades perto do lado direito do ecrã, selecione Editar campos.

  5. No painel Campos, selecione as reticências e, em seguida, selecione Adicionar um cartão personalizado.

    Comando para adicionar um cartão personalizado.

    A nova placa é apresentada na parte inferior do controlo de formulário.

  6. Redimensione o cartão como seja necessário para mostrar todo o texto.

    Cartão personalizado inserido, em branco.

  7. Inserir um controlo de etiqueta no cartão personalizado e, em seguida, definir a propriedade de texto da etiqueta para a fórmula utilizada na Galeria:

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    Cartão personalizado que mostra o campo de proprietário num controlo de etiqueta.

Para cada seleção na Galeria, mais campos da conta, incluindo o proprietário do registo, aparecem no formulário. Se alterar o proprietário utilizando o botão Patch, o controlo de formulário também mostra essa alteração.

Animação que mostra o controlo do formulário responder às alterações na Galeria.

Mostrar as colunas de um cliente

No Dataverse, a coluna de pesquisa Cliente é outra pesquisa polimórfica que é muito semelhante ao Proprietário.

A coluna Proprietário está limitada a uma por tabela, mas as tabelas podem incluir zero, uma ou mais colunas de pesquisa Cliente. A tabela do sistema Contactos inclui a coluna Nome da Empresa, que é uma coluna de pesquisa Cliente.

Tabela Contactos com a coluna Nome da Empresa como um tipo de dados do Cliente que não é necessário.

Pode adicionar mais colunas de pesquisa Cliente a uma tabela selecionando o tipo de dados Cliente para uma nova coluna.

Tipo de dados do cliente a partir da lista de tipos de dados ao criar uma coluna.

Um campo de pesquisa Cliente pode referir-se a um registo da tabela Contas ou Contactos. Irá utilizar as funções IsType e AsType com estas tabelas, como tal agora é uma boa altura para as adicionar como origens de dados (pode deixar Equipas e Utilizadores no seu lugar).

Tabelas Contas, Utilizadores e Contactos no painel Dados.

O tratamento dos campos cliente e proprietário é tão semelhante que pode copiar literalmente a aplicação (Ficheiro > Guardar como e, em seguida, especificar um nome diferente) e efetuar estas recolocações simples:

Localização Exemplo de proprietário Exemplo de cliente
Ao longo Proprietário "Nome do cliente"
Ao longo Utilizadores Contas
Ao longo Equipas Contactos
Propriedade Itens da galeria Contas Contactos
Propriedade Itens do formulário Contas Contactos
O primeiro argumento do patch
Na propriedade OnSelect do botão
Contas Contactos
Filtrar propriedade itens do rádio [ "Todos", "Utilizadores", "Equipas" ] [ "Todos", "Contas", "Contactos" ]
Propriedade itens do patch do rádio [ "Utilizadores", "Equipas" ] [ "Contas", "Contactos" ]
Propriedade visível da caixa de combinação "Utilizadores" e "Equipas" "Contas" e "Contactos"

Por exemplo, a nova galeria deve ter esta propriedade de itens:

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

Aplicação de cliente derivada da aplicação proprietário com alterações simples aplicadas.

Duas diferenças importantes entre o Cliente e o proprietário requerem uma atualização das fórmulas existentes na galeria e no formulário:

  1. As relações um-para-muitos entre Contas e Contactos têm precedência quando se refere a estes tipos de tabela por nome. Em vez de contas, utilizar [@contas]; em vez de contactos, utilizar [@contactos]. Ao utilizar o operador global de desambiguação, certifique-se de que se refere ao tipo de tabela em IsType e AsType. Este problema só existe no contexto do registo da galeria e dos controlos de formulário.

  2. O campo de proprietário deve ter um valor, mas os campos de cliente podem ficar em branco. Para mostrar o resultado correto sem um nome de tipo, teste para este caso com a função IsBlank e , em vez disso, mostre uma cadeia de texto vazia.

Ambas as alterações encontram-se na mesma fórmula, que é apresentada no cartão personalizado no formulário, bem como na propriedade Texto do controlo etiqueta da Galeria:

If( IsBlank( ThisItem.'Company Name' ), "",
    IsType( ThisItem.'Company Name', Accounts ),
        "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Atualizar a propriedade de texto do controlo de legenda de etiqueta na galeria.

Com estas alterações, pode ver e alterar o campo Nome da Empresa na tabela Contactos.

Animação que mostra o modo como a seleção de um contacto altera os outros controlos e o formulário.

Compreender colunas de pesquisa Relativo a

A coluna de pesquisa Relativo a difere um pouco das colunas com as quais já trabalhou neste tópico. Começará por aplicar os padrões que este tópico descreveu anteriormente e, em seguida, irá aprender outros truques.

Pode começar simplesmente com a tabela Faxes. Esta tabela tem uma coluna de pesquisa Relativo a polimórfica, que pode referir-se a Contas, Contactos e outras tabelas. Pode utilizar a aplicação para os clientes e modificá-la para faxes.

Localização Exemplo de cliente Exemplo de faxes
Ao longo "Nome do cliente" Relativo a
Propriedade Itens da galeria Contactos Faxes
Propriedade Itens do formulário Contactos Faxes
O primeiro argumento do patch
Na propriedade OnSelect do botão
Contactos Faxes

Novamente, terá de adicionar uma origem de dados: desta vez para Faxes. No separador Ver, selecione Origens de dados:

Painel de dados que mostra as tabelas Contas, Equipas, Utilizadores, Contactos e Faxes.

Uma diferença importante de Sobre é que não se limita a contas e contactos. Na verdade, a lista de tabelas é extensível com tabelas personalizadas. A maior parte da aplicação pode acomodar este ponto sem modificação, mas tem de atualizar a fórmula para a etiqueta na galeria e o formulário:

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

Propriedade de texto atualizada para o controlo de legenda relativo a pesquisas Sobre.

Depois de efetuar estas alterações, tem de trabalhar com a pesquisa Sobre tal como fizeram as pesquisas proprietário e Cliente.

Animação que mostra o modo como a seleção de um item na galeria altera os outros controlos e o formulário.

Compreender as relações Sobre

Sobre difere de proprietário e cliente porque o primeiro envolve uma relação de muitos para um. Por definição, uma relação reversa, um-para-muitos permite-lhe escrever primeiro (contas). Faxes.

Vamos recuar e ver as definições de tabela. No Dataverse, as tabelas como Faxes, Tarefas, E-mails, Notas, Chamadas Telefónicas, Cartas e Chats são designadas como atividades. Também pode criar as suas próprias tabelas de atividade personalizada. Quando vê ou cria uma tabela de atividades, as suas definições são apresentadas em Mais definições.

Definição de tabela de atividades ao criar uma tabela.

Outras tabelas podem estar relacionadas com uma tabela de atividades se estiverem ativadas como uma tarefa de atividade nas definições da tabela. Contas, Contactos e muitas outras tabelas padrão são designadas desse modo (de novo, sob Mais definições).

Definição de tarefa de atividade ao criar uma tabela.

Todas as tabelas de atividade e tabelas de tarefas de atividade têm uma relação implícita. Se alterar o filtro para Tudo na parte superior do ecrã, selecione a tabela Faxes e, em seguida, selecione o separador Relações. São apresentadas todas as tabelas que podem ser alvo de uma pesquisa Relativo a.

Relações da tabela Faxes que mostra Relativo a relações muitos-para-um.

Se mostrar as relações para a tabela Contas, são apresentadas todas as tabelas que podem ser uma origem de um campo de pesquisa Relativo a .

Relações da tabela Conta que mostra Relativo a relações um-para-muitos.

Qual é o significado disto?

  • Quando escreve fórmulas, tem de considerar que a lista de tabelas de atividades não é fixa e pode criar as suas próprias tabelas. A fórmula tem de processar corretamente uma tabela de atividades que não esperava.
  • As tarefas e atividades de atividade têm uma relação um-para-muitos. Pode pedir facilmente para todos os faxes que estejam relacionados com uma conta.

Para explorar este conceito na aplicação:

  1. Adicionar outra ecrã.

    Inserir um ecrã vazio.

  2. Inserir um controlo Galeria, redimensioná-lo e, em seguida, movê-lo para o lado esquerdo do ecrã.

  3. No separador Propriedades, perto do lado direito do ecrã, defina a propriedade Itens da galeria como Contas.

    Definir itens para contas no painel de propriedades.

  4. Defina o esquema da galeria como título e, em seguida, defina o campo de título como nome da conta.

    No painel de propriedades, defina o Esquema do controlo Galeria para Título.

  5. Adicione uma segunda galeria, redimensione-a e, em seguida, mova-a para o lado direito do ecrã.

  6. Defina a nova propriedade Itens da galeria como Gallery2.Selected.Faxes.

    Este passo devolve a lista filtrada de faxes para uma determinada conta.

    Defina a propriedade Itens da galeria que mostra faxes.

  7. Defina o esquema da galeria para título e subtítulo e, em seguida, defina o campo de título para mostrar o campo de assunto (que poderá ser o assunto em minúsculas).

    Definir título para campo de assunto.

À medida que seleciona um item na lista de contas, a lista de faxes mostra faxes apenas para essa conta.

Animação mostrando a seleção na Galeria de contas que determina a lista de faxes.

Tabela de atividades

Tal como a secção anterior descreve, pode mostrar todos os faxes relativos a uma conta. No entanto, também pode mostrar todas as atividades de uma conta, incluindo faxes, mensagens de correio eletrónico, chamadas telefónicas e outras interações.

Para este último cenário, utilize a tabela Atividade. Pode mostrar esta tabela ativando Tudo no canto superior direito para remover o filtro da lista de tabelas.

Lista de tabelas que mostram a tabela Atividade.

A tabela Atividade é especial. Sempre que adiciona um registo à tabela Faxes, o sistema também cria um registo na tabela Atividade com as colunas que são comuns em todas as tabelas de atividade. Dessas colunas, Assunto é uma das mais interessantes.

Pode mostrar todas as atividades alterando apenas uma linha no exemplo anterior. Substituir Gallery2.Selected.Faxes por Gallery2.Selected.Activities.

Alteração da propriedade itens para a segunda Galeria, alterando de faxes para atividades.

Os registos são provenientes da tabela Atividade, mas, no entanto, pode utilizar a função IsType para identificar que tipo de atividade são. Mais uma vez, antes de utilizar IsType com um tipo de tabela, tem de adicionar a origem de dados.

Painel Dados que mostra todas as tabelas necessárias para a função IsType.

Utilizando esta fórmula, pode mostrar o tipo de registo num controlo de etiqueta na galeria:

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Definir a propriedade Texto como uma fórmula para mostrar informações para faxes, chamadas telefónicas e outras atividades.

Também pode utilizar AsType para aceder aos campos do tipo específico. Por exemplo, esta fórmula determina o tipo de cada atividade e, para chamadas telefónicas, mostra o número de telefone e a direção de chamada da tabela Números de telefone:

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Propriedade de texto expandida com mais informações para uma chamada telefónica.

Como resultado, a aplicação mostra uma lista completa de atividades. O campo assunto é apresentado para todos os tipos de atividades, quer a fórmula as leve em conta ou não. Para os tipos de atividade sobre as quais tem conhecimento, pode mostrar os nomes dos tipos e as informações específicas de tipo sobre cada atividade.

Ecrã concluído mostrando informações para diferentes tipos de atividades.

Tabela Notas

Até agora, todos os exemplos Relativo a basearam-se em atividades, mas a tabela Notas representa outro caso.

Quando cria uma tabela, pode ativar os anexos.

Ativar anexos e notas ao criar uma tabela.

Se selecionar a caixa de verificação para ativar anexos, irá criar uma relação Relativo a com a tabela Notas, conforme este gráfico o mostra para a tabela Contas:

Tabela Conta a mostrar a relação com Notas através de uma relação um-para-muitos.

A não ser esta diferença, utiliza a pesquisa Sobre mesma forma como utiliza atividades. As tabelas que são ativadas para anexos têm uma relação um-para-muitos com Notas, conforme neste exemplo:

First( Accounts ).Notes

Nota

A partir da redação deste documento, a pesquisa Relativo a não está disponível para a tabela Notas. Não é possível ler ou filtrar com base na coluna Relativo a e não pode definir a coluna utilizando o Patch.

No entanto, a relação inversa de Notas um-para-muitos está disponível, pelo que pode filtrar uma lista de notas para um registo que esteja ativado para anexos. Também pode utilizar a função Relacionar para adicionar uma nota à tabela Notas do registo, mas a nota tem de ser criada primeiro, tal como neste exemplo:

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

Partes de atividade

Desde a elaboração deste documento, as aplicações de tela não suportam partes de atividade.

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).