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
- Insira a fonte 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.
- Insira os seguintes valores de dimensão: D1, _D2 e D3.
Classificação na memória
- Configure uma fonte de dados DS2 do tipo Campo calculado que contém a expressão
ORDERBY("InMemory", DS1, DS1.Value)
. - Observe que a expressão
FIRST(DS2).Value
retorna o valor de texto "D1", a expressãoINDEX(DS2, COUNT(DS2)).Value
retorna o valor de texto "_D2", e a expressãoSTRINGJOIN(DS2, DS2.Value, "|")
retorna o valor de texto "D1|D3|_D2".
Classificar no banco de dados
- Insira uma fonte de dados DS3 do tipo Registros de tabela que se refere à entidade FinancialDimensionValueEntity.
- Configure uma fonte de dados DS4 do tipo Campo calculado que contém a expressão
FILTER(DS3, DS3.FinancialDimension="CostCenter")
. - Configure uma fonte de dados DS5 do tipo Campo calculado que contém a expressão
ORDERBY(DS4, DS4.DimensionValue)
. - Observe que a expressão
FIRST(DS5).Value
retorna o valor de texto "_D2", a expressãoINDEX(DS5, COUNT(DS5)).Value
retorna o valor de texto "D3" e a expressãoSTRINGJOIN(DS5, DS5.Value, "|")
retorna o valor de texto "_D2|D1|D3".