Saltar para o conteúdo principal
Versão: 20 R7 BETA

SORT ARRAY

SORT ARRAY ( array {; array2 ; ... ; arrayN}{; > or <} )

ParâmetroTipoDescrição
arrayArrayArray a ser ordenado
> or <Operador">" para ordenar em ordem crescente, ou "<" para ordernar em ordem decrescente, ou ordem crescente se omitido

Descrição

O comando SORT ARRAY ordena um ou mais arrays em ordem ascendente ou descendente.

  • Notas:
    Você não pode ordenar arrays Ponteiro ou imagem. Você pode classificar os elementos de um array bidimensional (i.e., a2DArray{$vlThisElem}), mas você não pode classificar o array bidimensional em si (i.e., a2DArray).
    Pode ordenar arrays Objeto. Elementos Null são agrupados e elementos array são ordenados com ordem interna

O último parâmetro especifica se ordenar o array em ordem ascendente ou descendente. O símbolo "maior que" (>) indica uma classificação crescente, o símbolo de "menor que" (<) indica uma ordenação descendente. Se você não especificar a ordem de classificação, então, a classificação é ascendente.

Se mais de um array for especificado, os arrays são classificados segundo a ordem de classificação do primeiro array; nenhuma ordenação multinível é realizada aqui.

No seu lugar pode utilizar o comando MULTI SORT ARRAY se deseja ordenar arrays sincronizados.

Exemplo 1

O exemplo a seguir cria duas matrizes e, em seguida, ordena-as pela empresa:

 ALL RECORDS([Pessoas])
 SELECTION TO ARRAY([Pessoas]Nome;asNomes;[Pessoas]Empresa;asEmpresas)
 SORT ARRAY(asEmpresas;asNomes;>)

No entanto, devido a que SORT ARRAY não realiza ordenação multi-nível, você vai acabar com os nomes das pessoas em ordem aleatória dentro de cada empresa. Para ordenar as pessoas pelo nome, dentro de cada empresa, você poderia escrever:

 ALL RECORDS([Pessoas])
 ORDER BY([Pessoas];[Pessoas]Empresa;>;[Pessoas]Nome;>)
 SELECTION TO ARRAY([Pessoas]Nome;asNomes;[Pessoas]Empresa;asEmpresas)

Exemplo 2

Você exibe os nomes da tabela [Pessoas] em uma janela flutuante. Quando você clicar nos botões na janela, você pode classificar essa lista de nomes de A a Z ou de Z a A. Como várias pessoas podem ter o mesmo nome, você também pode usar um campo de número [Pessoas]ID, que é índice único. Quando você clicar na lista de nomes, você irá recuperar o registro para o nome que você clicou. Por manter um array sincronizado e escondido de números de identificação, você terá certeza que vai acessar o registro correspondente ao nome que você clicou:

  // Método de objeto do array asNomes
 Case of
    :(Form event code=On Load)
       ALL RECORDS([Pessoas])
       SELECTION TO ARRAY([Pessoas]Nome;asNomes;[Pessoas]Numero ID;todosIDs)
       SORT ARRAY(asNomes;todosIDs;>)
    :(Form event code=On Unload)
       CLEAR VARIABLE(asNomes)
       CLEAR VARIABLE(todosiDs)
    :(Form event code=On Clicked)
       If(asNomes#0)
  // Utilize o array todoslDs para obter o registro correto
          QUERY([Pessoas];[Pessoas]Numero ID=todosIDs{asNomes})
  // Fazer algo com o registro
       End if
 End case
 
  // Método de objeto do botão bA2Z
  // Ordenação dos arrays em ordem crescente conservando a sincronização
 SORT ARRAY(asNomes;todosIDs;>)
 
  // Método de objeto do botão bZ2A
  // Ordenação dos arrays em ordem decrescente conservando a sincronização
 SORT ARRAY(asNomes;todosIDs;<)

Ver também

Find in sorted array
MULTI SORT ARRAY
ORDER BY
SELECTION TO ARRAY