Função de ER ORDERBY
A função ORDERBY
devolve a lista especificada como um valor Lista de registos depois de ter sido ordenada de acordo com os argumentos especificados. Estes 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])
Nota
Esta sintaxe é suportada pela versão 10.0.25 e posterior do Microsoft Dynamics 365 Finance.
Argumentos
location
: Cadeia
A localização onde a ordenação deve ser executada. As opções seguintes são válidas:
- "Consulta"
- "InMemory"
list
: Lista de registos
O caminho válido de uma origem de dados do tipo de dados Lista de registos.
expression 1
: Campo
O caminho válido de um campo da origem de dados referenciado pelo argumento list
da função chamada. O campo referenciado tem de ser um campo do tipo de dados primitivos. Este argumento é obrigatório.
expression N
: Campo
O caminho válido de um campo da origem de dados referenciado pelo argumento list
da função chamada. O campo referenciado tem de ser um campo do tipo de dados primitivos. Estes argumentos adicionais são opcionais.
Valores de retorno
Lista de registos
A lista de registos resultante.
Notas de utilização
Sintaxe 1
A ordenação dos dados é sempre efetuada na memória do servidor de aplicações. Para obter mais detalhes, consulte o exemplo 1.
Sintaxe 2
Ordenar na memória
Quando o argumento location
é especificado como InMemory, a ordenação dos dados é efetuada na memória de um servidor de aplicações. Para obter mais detalhes, consulte o exemplo 2.
Ordenar na base de dados
Quando o argumento location
é especificado como Consulta, a ordenação dos dados é efetuada ao nível da base de dados. Neste caso, o argumento list
tem de apontar para uma das seguintes origens de dados de Relatórios eletrónicos (ER) que especifica a origem da aplicação para a qual pode ser estabelecida uma consulta direta de base de dados:
- Origem de dados do tipo Registos de tabelas
- Relação de uma origem de dados do tipo Registos de tabelas
- Origem de dados do tipo Campo de cálculo
Os argumentos expression 1
e expression N
têm de apontar para os campos de uma origem de dados de ER que especifica os campos relevantes da origem da aplicação para a qual também pode ser estabelecida uma consulta direta de base de dados.
Se não for possível estabelecer uma consulta direta de base de dados, ocorre um erro de validação no estruturador de mapeamento de modelos de ER. A mensagem que recebe diz que a expressão ER que inclui a função ORDERBY
não pode ser executada em runtime.
Para um melhor desempenho, recomendamos que utilize a opção Consulta quando a ordenação estiver configurada para origens de dados da aplicação que possam conter um grande número de registos (por exemplo, para tabelas de aplicações transacionais).
Nota
A função ORDEBY
em si própria não pode ser traduzida para uma consulta direta de base de dados. Portanto, uma origem de dados de ER que contenha esta função não é consultável. Também não pode ser utilizada no âmbito de funções de ER, tais como FILTER e ALLITEMSQUERY, em que apenas podem ser utilizadas origens de dados consultáveis.
Para obter mais detalhes, consulte o exemplo 3 e o exemplo 4.
Comparabilidade
Como o motor de base de dados SQL e o servidor de aplicações do Finance podem utilizar um valor de classificação diferente para um único caráter, o resultado de ordenação da mesma lista de registos pode ser diferente quando um campo de Cadeia é utilizado para a ordenação. Para obter mais detalhes, consulte o exemplo 5.
Exemplo 1: Execução predefinida na memória
Se introduzir a origem de dados DS do tipo Campo calculado e contiver a expressão SPLIT ("C|B|A", "|")
, a expressão FIRST( ORDERBY( DS, DS. Value)).Value
devolve o valor de texto "A".
Exemplo 2: Execução explícita na memória
Se o Fornecedor for configurado como uma origem de dados de ER do tipo Registos de tabelas que se refere à tabela VendTable, a expressão ORDERBY (Vendor, Vendor.'name()')
e a expressão ORDERBY ("InMemory", Vendor, Vendor.'name()')
devolvem uma lista de fornecedores ordenados por nome por ordem ascendente.
Quando configura a expressão ORDERBY ("Query", Vendor, Vendor.'name()')
no estruturador de mapeamento de modelos de ER, ocorre um erro de validação durante a estruturação, porque o caminho Vendor.'name()'
refere-se a um método de aplicação com uma lógica que não pode ser traduzido para uma consulta direta de base de dados.
Exemplo 3: Consulta de base de dados
Se TaxTransaction for configurada como uma origem de dados de ER do tipo Registos de tabelas que se refere à tabela TaxTrans, a expressão ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode)
ordena os registos ao nível da base de dados de aplicação e devolve uma lista de transações fiscais ordenada pelo código fiscal por ordem ascendente.
Exemplo 4: Origens de dados consultáveis
Se TaxTransaction for configurada como origem de dados de ER do tipo Registos de tabelas que se refere à tabela TaxTrans, a origem de dados de ER TaxTransactionFiltered pode ser configurada para conter a expressão FILTER(TaxTransaction, TaxCode="VAT19")
que irá obter transações para um código fiscal especificado. Como a origem de dados de ER TaxTransactionFiltered configurada é consultável, a expressão ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate)
pode ser configurada para devolver a lista de transações fiscais filtradas ordenada pela data de transação por ordem ascendente.
Se configurar TaxTransactionOrdered como uma origem de dados de ER do tipo Campo calculado que contém a expressão ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate)
e uma origem de dados de ER do tipo Campo calculado que contém a expressão FILTER(TaxTransactionOrdered, TaxCode="VAT19")
, ocorre um erro de validação durante a estruturação no estruturador de mapeamento de modelos de ER. Este erro ocorre porque o primeiro argumento da função FILTER tem de referir-se a uma origem de dados de ER consultável, mas a origem de dados TaxTransactionOrdered que contém a função ORDERBY
não é consultável.
Exemplo 5: Comparabilidade
Pré-requisitos
- Introduza a origem de dados DS1 do tipo Campo calculado que contém a expressão
SPLIT ("D1|_D2|D3", "|")
. - Abra a página Valores de dimensão financeira e selecione a dimensão CostCenter.
- Introduza os seguintes valores de dimensão: D1, _D2 e D3.
Ordenar na memória
- Configure a origem de dados DS2 do tipo Campo calculado que contém a expressão
ORDERBY("InMemory", DS1, DS1.Value)
. - Tenha em atenção que a expressão
FIRST(DS2).Value
devolve o valor de texto "D1", a expressãoINDEX(DS2, COUNT(DS2)).Value
devolve o valor de texto "_D2" e a expressãoSTRINGJOIN(DS2, DS2.Value, "|")
devolve o valor de texto "D1|D3|_D2".
Ordenar na base de dados
- Introduza a origem de dados DS3 do tipo Registos de tabelas que se refere à entidade FinancialDimensionValueEntity.
- Configure a origem de dados DS4 do tipo Campo calculado que contém a expressão
FILTER(DS3, DS3.FinancialDimension="CostCenter")
. - Configure a origem de dados DS5 do tipo Campo calculado que contém a expressão
ORDERBY(DS4, DS4.DimensionValue)
. - Tenha em atenção que a expressão
FIRST(DS5).Value
devolve o valor de texto "_D2", a expressãoINDEX(DS5, COUNT(DS5)).Value
devolve o valor de texto "D3" e a expressãoSTRINGJOIN(DS5, DS5.Value, "|")
devolve o valor de texto "_D2|D1|D3".