Compartilhar via


Função de ER ORDERBY

A função ORDERBY retorna a lista especificada como um valor de Lista de registros após ela ser classificada de acordo com os argumentos especificados. Esses argumentos podem ser definidos como expressões.

Sintaxe 1

ORDERBY (list, expression 1[, expression 2, …, expression N])

Sintaxe 2

ORDERBY (location, list, expression 1[, expression 2, …, expression N])

Observação

Esta sintaxe é compatível com o Microsoft Dynamics 365 Finance versão 10.0.25 e posterior.

Argumentos

location: Cadeia de caracteres

O local em que a classificação deve ser executada. As seguintes opções são válidas:

  • "Consulta"
  • "InMemory"

list: Lista de registros

O caminho válido de uma fonte de dados do tipo Lista de registros.

expression 1: Campo

O caminho válido de um campo da fonte de dados que é referenciado pelo argumento list da função chamada. O campo referenciado deve ser um campo do tipo de dados primitivo. Esse argumento é obrigatório.

expression N: Campo

O caminho válido de um campo da fonte de dados que é referenciado pelo argumento list da função chamada. O campo referenciado deve ser um campo do tipo de dados primitivo. Esses argumentos adicionais são opcionais.

Valores de retorno

Lista de registros

A lista de registros resultante.

Notas de uso

Sintaxe 1

A classificação de dados sempre é feita na memória do servidor de aplicativos. Para obter mais detalhes, consulte exemplo 1.

Sintaxe 2

Classificação na memória

Quando o argumento location é especificado como InMemory, a classificação de dados é realizada na memória de um servidor de aplicativos. Para obter mais detalhes, consulte exemplo 2.

Classificar no banco de dados

Quando o argumento location é especificado como Consulta, a classificação de dados é feita no nível do banco de dados. Nesse caso, o argumento list deve apontar para uma das seguintes fontes de dados de relatório eletrônico (ER) que especifica a origem do aplicativo para a qual uma consulta de banco de dados direta pode ser estabelecida:

  • Fonte de dados do tipo Registros de tabela
  • Relação de uma fonte de dados do tipo Registros de tabela
  • Fonte de dados do tipo Campo de cálculo

Os argumentos expression 1 e expression N devem apontar para campos de uma fonte de dados de ER que especifique os campos relevantes da origem do aplicativo para a qual uma consulta de banco de dados direta também possa ser estabelecida.

Se não for possível estabelecer uma consulta direta de banco de dados, ocorrerá um erro de validação no designer de mapeamento de modelo de ER. A mensagem recebida informa que a expressão de ER que inclui a função ORDERBY não pode ser executada no runtime.

Para obter um melhor desempenho, é recomendável usar a opção Consulta quando a classificação estiver configurada para fontes de dados de aplicativos que possam conter o grande número de registros (por exemplo, para tabelas de aplicativos transacionais).

Observação

A função ORDEBY em si não pode ser convertida em uma consulta direta de banco de dados. Portanto, uma fonte de dados ER contendo essa função não é consultável. Também não pode ser usado no escopo de funções ER como FILTER e ALLITEMSQUERY, em que somente as fontes de dados consultáveis podem ser usadas.

Para obter mais detalhes, consulte exemplo 3 e exemplo 4.

Comparabilidade

Como o mecanismo de banco de dados SQL e o servidor de aplicativos Finance podem usar um valor de classificação diferente para um único caractere, o resultado da classificação da mesma lista de registros pode ser diferente quando um campo Cadeia de caracteres é usado para classificação. Para obter mais detalhes, consulte exemplo 5.

Exemplo 1: execução padrão na memória

Se você inserir a fonte de dados DS do tipo Campo calculado e ela contiver a expressão SPLIT ("C|B|A", "|"), a expressão FIRST( ORDERBY( DS, DS. Value)).Value retornará o valor de texto "A".

Exemplo 2: execução explícita na memória

Se Fornecedor estiver configurado como uma fonte de dados ER do tipo Registros de tabela que se refere à tabela VendTable, as expressões ORDERBY (Vendor, Vendor.'name()') e ORDERBY ("InMemory", Vendor, Vendor.'name()') retornarão uma lista de fornecedores que é classificada por nome em ordem crescente.

Quando você configura a expressão ORDERBY ("Query", Vendor, Vendor.'name()') no designer de mapeamento do modelo ER, um erro de validação ocorre no tempo de design, porque o caminho Vendor.'name()' se refere a um método de aplicativo que tem lógica que não pode ser convertida em uma consulta direta do banco de dados.

Exemplo 3: consulta de banco de dados

Se TaxTransaction estiver configurado como uma fonte de dados ER do tipo de Registros de tabela que se refere à tabela TaxTrans, a expressão ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) classificará registros no nível de banco de dados do aplicativo e retornará uma lista de transações de imposto classificada por código de imposto em ordem crescente.

Exemplo 4: fontes de dados consultáveis

Se TaxTransaction estiver configurado como uma fonte de dados ER do tipo Registros de tabela que se refere à tabela TaxTrans, a fonte de dados ER TaxTransactionFiltered poderá ser configurada para que contenha a expressão FILTER(TaxTransaction, TaxCode="VAT19") que buscará transações para um código de imposto especificado. Como a fonte de dados ER TaxTransactionFiltered configurada é consultável, a expressão ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) pode ser configurada para retornar a lista de transações de impostos filtrados classificadas por data de transação em ordem crescente.

Se você configurar TaxTransactionOrdered como uma fonte de dados ER do tipo Campo calculado que contém a expressão ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate) e uma fonte de dados ER do tipo Campo calculado contendo a expressão FILTER(TaxTransactionOrdered, TaxCode="VAT19"), ocorrerá um erro de validação no tempo de design no designer de mapeamento do modelo ER. Esse erro ocorre porque o primeiro argumento da função FILTER deve se referir a uma fonte de dados ER consultável, mas a fonte de dados TaxTransactionOrdered que contém a função ORDERBY não pode ser consultada.

Exemplo 5: comparabilidade

Pré-requisitos

  1. Insira a fonte de dados DS1 do tipo Campo calculado que contém a expressão SPLIT ("D1|_D2|D3", "|").
  2. Abra a página Valores de dimensão financeira e selecione a dimensão CostCenter.
  3. Insira os seguintes valores de dimensão: D1, _D2 e D3.

Classificação na memória

  1. Configure uma fonte de dados DS2 do tipo Campo calculado que contém a expressão ORDERBY("InMemory", DS1, DS1.Value).
  2. Observe que a expressão FIRST(DS2).Value retorna o valor de texto "D1", a expressão INDEX(DS2, COUNT(DS2)).Value retorna o valor de texto "_D2", e a expressão STRINGJOIN(DS2, DS2.Value, "|") retorna o valor de texto "D1|D3|_D2".

Classificar no banco de dados

  1. Insira uma fonte de dados DS3 do tipo Registros de tabela que se refere à entidade FinancialDimensionValueEntity.
  2. Configure uma fonte de dados DS4 do tipo Campo calculado que contém a expressão FILTER(DS3, DS3.FinancialDimension="CostCenter").
  3. Configure uma fonte de dados DS5 do tipo Campo calculado que contém a expressão ORDERBY(DS4, DS4.DimensionValue).
  4. Observe que a expressão FIRST(DS5).Value retorna o valor de texto "_D2", a expressão INDEX(DS5, COUNT(DS5)).Value retorna o valor de texto "D3" e a expressão STRINGJOIN(DS5, DS5.Value, "|") retorna o valor de texto "_D2|D1|D3".

Recursos adicionais

Funções de listagem