Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
ORDER BY ATTRIBUTE
|
ORDER BY ATTRIBUTE ( {tabela ;} campoObjeto ; rotaAtrib ; > ou < {; campoObjeto2 ; rotaAtrib2 ; > ou <2 ; ... ; campoObjetoN ; rotaAtribN ; > ou <N} {; *} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
tabela | Tabela |
![]() |
Tabela para a qual vai ordenar registros selecionados, ou a tabela padrão, se omitido | |||||
campoObjeto | Campo Objeto |
![]() |
Campo Objeto contendo o atributo de ordenação | |||||
rotaAtrib | String |
![]() |
Nome ou rota do atributo para o qual vai estabelecer a ordem para cada nível | |||||
> ou < | Operador |
![]() |
Direção de ordenação para cada nível: > para ordenar em ordem ascendente, ou < para ordenar em ordem descendente. | |||||
* | Operador |
![]() |
Continuar a bandeira de ordem | |||||
O comando ORDER BY ATTRIBUTE ordena (reordena) os registros da seleção atual de tabela para o processo atual baseado no conteúdo de rotaAtrib de campoObjeto. Depois de terminada a ordenação, o novo primeiro registro da seleçãol se converte no registro atual.
Se omitir o parâmetro tabela, o comando se aplica a tabela por padrão, se tiver sido especificado. Do contrário, 4D utiliza a tabla do primeiro campo passado como um parâmetro.
Em campoObjeto, passe o campo Objeto cujo atributo deseja utilizar para a ordenação. Este campo pode pertencer a tabela ou a uma tabela relacionada com tabela com uma relação automática ou manual. Neste caso, a ordenação é sempre sequêncial.
Em rotaAtrib, passe a rota de atributo cujos valores desejar utilizar para ordenar os registros, por exemplo "criancas.genero.idade".
Notas:
Se os atributos campo contiverem valores em tipos de dados diferentes (ou seja, números, strings, booleanos), primeiro se agrupam por tipo, depois por valor.
Se o valor de atributo de campo for nulo para alguns registros (ou seja, o valor de atributo for nulo ou rotaAtrib não existir no campo):
Pode ordenar a seleção em um ou em vários níveis. Para cada nível de ordenação, se especifica um campo, um rotaAtrib e o sentido de ordenação em > ou <. Se passar o símbolo (>) "maior que", a orden é ascendente. Se passar o símbolo (<) "menor que", a ordem é descendente. Se não for especificado o sentido de ordenação, a ordem ascendente é o valor predeterminado.
Se só for especificado um campo (um nível de ordenação) e estiver indexado, o índice será utilizado para a orden. Se o campo não estiver indexado ou se houver mais de um campo, a orden é sequêncial.
Para várias ordenações (ordenações em vários campos), pode chamar a ORDER BY ATTRIBUTE tantas vezes quantas sejam necessárias e especificar o parâmetro opcional *, com exceção da última chamada ORDER BY ATTRIBUTE, que inicia a operação de ordenação. Esta funcionalidade é útil para a gestão de ordenações múltiplas em interfaces de usuário personalizadas. Lembre que pode combinar as chamadas ORDER BY ATTRIBUTE com chamadas ORDER BY.
Nota: com esta sintaxe, pode passar um só nível de ordenação (campo) por chamada ORDER BY ATTRIBUTE.
Não importa que forma de ordenação tenha sido definido, se a operação de ordenação for demorar algum tiempo, 4D mostra automaticamente uma mensagem que contém um termômetro de progresso. Esta mensagem pode ser ativada e desativada mediante o uso dos comandos MESSAGES ON e MESSAGES OFF. Se o termômetro de progresso é exibido, o usuário pode clicar no botão Stop para interromper a ordenação. Ok é estabelecido em 1. Se a ordenação é interrompida, Ok é estabelecido como 0 (zero).
Se desejar ordenar a seleção atual por idade (descendente) e depois por nome (ascendente), a ordem por padrão é:
// [Customer]OB_Info contents partial export {"LastName":"Giorgio","age":33,"client":true}, {"LastName":"Sarah","age":42,"client":true}, {"LastName":"Mikken","age":"Forty-six","client":true}, {"LastName":"Wesson","age":44,"client":true}, {"LastName":"Johnson","age":44,"client":false}, {"LastName":"Hamp","age":"Sixty","client":true}, {"LastName":"Smeldorf","age":33,"client":true}, {"LastName":"Martin","client":true], {"LastName":"Evan","age":36,"client":true}, {"LastName":"Collins","age":33,"client":true,"Sex":"female"}, {"LastName":"Garbando","age":60,"client":false,"Sex":"male"}, {"LastName":"Smeldorf","age":54,"client":true}, {"LastName":"Smith","age":42,"client":true}, {"LastName":"Jones","age":52,"client":true}, {"LastName":"Kerrey","age":44,"client":true}, {"LastName":"Gordini","client":true}, {"LastName":"Delaferme","age":54,"client":true}, {"LastName":"Belami","age":"Forty-six","client":true}, {"LastName":"Smeldorf","age":22,"client":true}, {"LastName":"Smeldorf","age":70,"client":true}
Se executar:
ORDER BY ATTRIBUTE([Customer];[Customer]OB_Info;"age";<;[Customer]OB_Info;"LastName";>)
Os registros estão na seguinte ordem:
{"LastName":"Smeldorf","age":70,"client":true} {"LastName":"Garbando","age":60,"client":false,"Sex":"male"}, {"LastName":"Delaferme","age":54,"client":true}, {"LastName":"Smeldorf","age":54,"client":true}, {"LastName":"Jones","age":52,"client":true}, {"LastName":"Johnson","age":44,"client":false}, {"LastName":"Kerrey","age":44,"client":true}, {"LastName":"Wesson","age":44,"client":true}, {"LastName":"Sarah","age":42,"client":true}, {"LastName":"Smith","age":42,"client":true}, {"LastName":"Evan","age":36,"client":true}, {"LastName":"Collins","age":33,"client":true,"Sex":"female"}, {"LastName":"Giorgio","age":33,"client":true}, {"LastName":"Smeldorf","age":33,"client":true}, {"LastName":"Smeldorf","age":22,"client":true}, {"LastName":"Hamp","age":"Sixty","client":true}, //valores string na idade {"LastName":"Belami","age":"Forty-six","client":true}, //são lidados separadamente {"LastName":"Mikken","age":"Forty-six","client":true} {"LastName":"Gordini","client":true}, //ao final porque {"LastName":"Martin","client":true} //age (idade) é null (falta)
Produto: 4D
Tema: Pesquisas
Número
1407
Criado por: 4D v16 R2
Manual de linguagem 4D ( 4D v20 R7)