Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Função | Aplica-se a |
|---|---|
| AsType |
|
| IsType |
|
Verifica se uma referência de registro é um tipo de tabela específico (IsType) e trata a referência como esse tipo (AsType).
Nota
Os comandos PAC CLI pac power-fx não suportam IsType.
Descrição
As AsType funções e IsType podem ser usadas para converter referências de registro (por exemplo, pesquisas polimórficas no Dataverse) e valores dinâmicos em valores digitados que podem ser usados diretamente.
Referências de Registo
Leia Noções sobre referências de registo e pesquisas polimórficas para obter uma introdução mais ampla e mais detalhes.
Um campo de pesquisa geralmente refere-se a registos numa tabela em particular. Como o tipo de tabela está bem estabelecido, aceda aos campos da procura usando uma simples notação de pontos. Por exemplo, Primeira(Contas). 'Contacto principal'. 'Nome Completo caminha da tabela Contas para o registo de contacto primário na tabela Contactos e extrai o campo Nome Completo.
Microsoft Dataverse também suporta campos de pesquisa polimórfica, que se podem referir a registos de um conjunto de tabelas, como nestes exemplos.
| Campo de pesquisa | Podem fazer referência a |
|---|---|
| Proprietário | Utilizadores ou Equipas |
| Cliente | Contas ou Contactos |
| Relativo a | Contas, Contactos, Artigos da Base de Dados de Conhecimentos, etc. |
Nas fórmulas de aplicações de tela, utilize referências de registos para trabalhar com pesquisas polimórficas. Como uma referência de registro pode se referir a tabelas diferentes, você não pode saber quais campos estão disponíveis em tempo de execução quando você escreve uma fórmula. A notação Registo.Campo não está disponível. Essas fórmulas precisam se adaptar aos registros que o aplicativo encontra quando é executado.
A IsType função verifica se uma referência de registro se refere a um tipo de tabela específico. A função devolve um valor booleano TRUE ou FALSE.
A AsType função trata uma referência de registro como um tipo de tabela específico, também chamado de transmissão. Use o resultado como se fosse um registro da tabela e use a notação Record.Field para acessar todos os campos desse registro. Se a referência não for do tipo específico, ocorrerá um erro.
Use essas funções juntas para primeiro verificar o tipo de tabela de um registro e, em seguida, tratá-lo como um registro desse tipo para que os campos estejam disponíveis:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Você precisará dessas funções somente se acessar os campos de uma referência de registro. Por exemplo, você usa referências de registro na função Filtro sem IsType ou AsType:
Filter( Accounts, Owner = First( Users ) )
Da mesma forma, pode utilizar referências de registo com a função Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Quando você usa essas funções em um contexto de registro, como dentro de um controle de formulário Galeria ou Edição , talvez seja necessário que o operador de desambiguação global faça referência ao tipo de tabela. Por exemplo, esta fórmula funciona para uma galeria que apresenta uma lista de contactos em que o Nome da Empresa é uma pesquisa de Cliente :
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Para ambas as funções, especifique o tipo usando o nome da fonte de dados conectada à tabela. Para que a fórmula funcione, adicione uma fonte de dados ao aplicativo para todos os tipos que você deseja verificar ou transmitir. Por exemplo, adicione a tabela Usuários como uma fonte de dados se quiser usar IsType e AsType com uma pesquisa de Proprietário e registros dessa tabela. Adicione apenas as fontes de dados que você usa em seu aplicativo; Você não precisa adicionar todas as tabelas que uma pesquisa poderia referenciar.
Se a referência do registro estiver em branco, IsType retornará FALSO e AsType retornará em branco. Todos os campos de registo em branco também estarão em branco.
Valores dinâmicos
Importante
- Usar AsType e IsType com valores dinâmicos é um recurso experimental.
- As caraterísticas experimentais não se destinam à produção e poderão não estar completas. Estas caraterísticas estão disponíveis antes do lançamento oficial, para que possa ter acesso antecipado e enviar comentários. Mais informações: Compreender caraterísticas experimentais, de pré-visualização e retiradas em aplicações de tela
- O comportamento descrito neste artigo só está disponível quando a caraterística experimental de Tipos definidos pelo utilizador em Definições > Próximas caraterísticas > Experimentais está ativada (está desativada por predefinição).
- O seu feedback é valioso para nós. Diga-nos o que pensa no fórum da comunidade de caraterísticas experimentais do Power Apps.
Um valor dinâmico de uma API da Web ou a função [ParseJSON ] precisa ser convertido em um valor digitado específico antes que você possa usá-lo no Power Fx. Seguem-se algumas opções:
- Digite implicitamente o campo no ponto em que você o usa. Por exemplo, um objeto é convertido em um número se você usá-lo com o
+operador, se ele puder ser convertido em um número. Essa opção pode causar conversões inesperadas e não pode converter registros e tabelas como um todo. - Tipifique explicitamente cada campo individualmente com Decimal, Text, DateTime, GUID e outros funções de tipo construtor. Esta opção é a mais invasiva para suas fórmulas, porque você precisa fazer cada campo separadamente.
- Tipifique explicitamente JSON com o segundo argumento da função ParseJSON. Esta opção é fácil e evita a necessidade do valor Dynamic .
- Digite explicitamente um valor Dynamic usando a AsType função. Você também pode verificar o tipo antes de tentar a conversão com a IsType função.
Sintaxe
AsType( RecordReference, TableType )
- RecordReference – Obrigatório. Uma referência de registro, geralmente um campo de pesquisa que se refere a um registro em qualquer uma das várias tabelas.
- TableType - Obrigatório. A tabela específica para a qual o registro será gravado.
AsType( DynamicValue, TypeSpecification )
- DynamicValue - Obrigatório. Um valor dinâmico da função ParseJSON ou chamada de API.
- TypeSpecification — Obrigatório. Um nome de tipo ou especificação de tipo que você define com a função Tipo.
IsType( RecordReference, TableType )
- RecordReference – Obrigatório. Uma referência de registo, muitas vezes um campo de pesquisa que se pode referir a um registo em qualquer uma das várias tabelas.
- TableType - Obrigatório. A tabela específica para testar.
IsType( DynamicValue, TypeSpecification )
- DynamicValue - Obrigatório. Um valor dinâmico da função ParseJSON ou uma chamada de API.
- TypeSpecification — Obrigatório. Um nome de tipo ou especificação de tipo definido com a função Type.
Exemplos
Referências de Registo
Compreender as referências de registo e as pesquisas polimórficas contém exemplos extensivos.
Crie uma aplicação de tela em branco para tablets.
No painel esquerdo, selecione Adicionar>dados e, em seguida, adicione as tabelas Contas e Contactos .
No painel esquerdo, selecione + (Inserir) >Layout>Galeria vertical em branco.
Selecione Ligar os dados e, em seguida, selecione Contactos como origem de dados.
Defina o layout da galeria como Título e subtítulo.
No painel Dados, abra a lista Title1 e, em seguida, selecione Nome Completo.
Selecione o controlo de etiqueta Subtitle1.
Defina a propriedade Text de Subtitle1 para esta fórmula:
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' )
O subtítulo na galeria mostra estes valores:
- "--" se o "Nome da Empresa" for blank.
- "Conta: " e o campo Nome da Conta da tabela Contas se o campo Nome da Empresa se referir a uma conta.
- "Contato: " e o campo Nome Completo da tabela Contatos se o campo Nome da Empresa se referir a um contato.
Seus resultados podem diferir porque os dados de amostra podem ser modificados para mostrar mais tipos de resultados.
Valores dinâmicos
Os exemplos a seguir mostram um registro JSON simples interpretado de várias maneiras por ParseJSON, AsTypee IsType no Pac CLI Power Fx REPL.
Neste primeiro exemplo, nenhuma informação de tipo é fornecida ao ParseJSON, portanto, retorna um valor dinâmico.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>
O campo é implicitamente convertido num número quando utilizado num contexto numérico.
>> 1 + rec.a
2
Alternativamente, este exemplo converte explicitamente o registo num registro com tipo do Power Fx com o segundo argumento como ParseJSON.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
E outra alternativa, este exemplo converte explicitamente o registro em um registro Power Fx digitado usando AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Finalmente, se você não tiver certeza, este exemplo testa o tipo antes de convertê-lo com a IsType função.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true