Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
TRIER PAR ATTRIBUT
|
TRIER PAR ATTRIBUT ( {laTable ;} champObjet ; cheminAttribut ; > ou < {; champObjet2 ; cheminAttribut2 ; > ou <2 ; ... ; champObjetN ; cheminAttributN ; > ou <N} {; *} ) | ||||||||
Paramètre | Type | Description | ||||||
laTable | Table |
![]() |
Table dans laquelle la sélection est triée ou Table par défaut si ce paramètre est omis | |||||
champObjet | Champ objet |
![]() |
Champ objet dont les attributs sont à utiliser pour le tri | |||||
cheminAttribut | Chaîne |
![]() |
Nom ou chemin d'attribut pour chaque niveau que l'on veut trier | |||||
> ou < | Opérateur |
![]() |
Sens de tri pour chaque niveau : > pour trier par ordre ascendant, ou < pour trier par ordre descendant. | |||||
* | Opérateur |
![]() |
Attente d'exécution du tri | |||||
La commande TRIER PAR ATTRIBUT trie (réorganise) les enregistrements de la sélection courante de laTable pour le process courant, basé sur les contenus des cheminAttribut des champObjet. Après réorganisation des enregistrements, le nouveau premier enregistrement de la sélection courante devient l'enregistrement courant.
Si vous omettez le paramètre laTable, la commande s'applique à la table par défaut, si celle-ci a été spécifiée. Sinon 4D utilise la table du premier champ passé en paramètre.
Dans champObjet, passez le champ Objet dont vous voulez utiliser l'attribut pour le tri. Ce champ peut appartenir laTable ou à une table en lien Aller à partir de laTable, avec un lien automatique ou manuel. Dans ce cas, le tri est toujours séquentiel.
Dans le paramètre cheminAttribut, indiquez le chemin d'accès de l'attribut dont vous souhaitez utiliser les valeurs pour trier les enregistrements, par exemple "children.girls.age".
Notes :
Si l'attribut du champ contient des valeurs de types différents (c'est-à-dire nombres, textes, booléens...), elles sont d'abord regroupées par type, puis par valeur.
Si la valeur d'un attribut de champ est null pour des enregistrements (c'est-à-dire la valeur de l'attribut est null ou cheminAttribut n'existe pas dans le champ) :
Vous pouvez trier la sélection sur un ou plusieurs niveaux. Pour chaque niveau de tri, vous précisez un champObjet, un cheminAttribut et un ordre de tri > ou <. Si vous passez le symbole "plus grand que" (>), le tri sera ascendant. Si vous passez le symble "plus petit que" (<), le tri sera descendant. Si vous ne spécifiez pas d'ordre de tri, le tri sera ascendant par défaut.
Si un seul champ est précisé (un niveau de tri) et que celui-ci est indexé, l'index est utilisé pour le tri. Si le champ n'est pas indexé ou que vous utilisez plus d'un champ, le tri est exécuté séquentiellement.
Pour les tris multiples (tris sur plusieurs champs), vous pouvez appeler la commande TRIER PAR ATTRIBUT autant de fois que nécessaire et utiliser le paramètre optionnel *, excepté pour le dernier appel de TRIER PAR ATTRIBUT, qui lance l'opération de tri. Cette fonctionnalité est utile pour la gestion du multi-tri dans des interfaces utilisateurs personnalisées. Notez que vous pouvez combiner les appels à la commande TRIER PAR ATTRIBUT avec les appels à la commande TRIER.
Note : Avec cette syntaxe, vous ne pouvez passer qu'un seul niveau de tri (champ) pour l'appel à TRIER PAR ATTRIBUT.
Quelle que soit la façon dont le tri a été défini, si l'opération de tri doit prendre du temps, 4D affiche automatiquement un message avec thermomètre de progression. L'affichage de ce message peut être contrôlé grâce aux commandes LAISSER MESSAGES et SUPPRIMER MESSAGES. Si le thermomètre de progression est affiché, l'utilisateur peut cliquer sur le bouton Stop pour interrompre le tri. Si le tri n'est pas interrompu, la variable OK passe à 1. Sinon, si le tri est interrompu, la variable OK passe à 0 (zéro).
Vous souhaitez trier la sélection courante par âge (descendant) puis par nom (ascendant). L'ordre par défaut est :
// [Customer]OB_Info contient un export partiel {"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}
Après exécution du tri :
TRIER PAR ATTRIBUT([Customer];[Customer]OB_Info;"age";<;[Customer]OB_Info;"LastName";>)
Les enregistrements sont dans l'ordre suivant :
{"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}, //les valeurs de type chaîne dans age {"LastName":"Belami","age":"Forty-six","client":true}, //sont gérés séparément {"LastName":"Mikken","age":"Forty-six","client":true} {"LastName":"Gordini","client":true}, //en fin car {"LastName":"Martin","client":true} //age est null (manquant)
Produit : 4D
Thème : Recherches et tris
Numéro :
1407
Nom intl. : ORDER BY ATTRIBUTE
Créé : 4D v16 R2
4D - Langage ( 4D v20 R7)