TRIER

4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 5


TRIER ({table}{; champ{; > ou <{; champ2; > ou <2; ...; champN; > ou <N}{; *}}})

ParamètreTypeDescription
tableTableTable de laquelle réordonner la sélection courante
ou Table par défaut si ce paramètre est omis
champChampChamp sur lequel effectuer le tri pour chaque
niveau
> ou <Sens du tri pour chaque niveau :
> demander un tri croissant ou
< demander un tri décroissant
*Attente d'exécution du tri

Description

TRIER trie (réordonne) les enregistrements de la sélection courante de table pour le process courant. Une fois le tri effectué, le premier enregistrement de la nouvelle sélection courante devient le nouvel enregistrement courant.

Si vous omettez le paramètre table, la commande s'applique à la table par défaut. Si aucune table par défaut n'a été définie, une erreur est retournée.

Si vous ne passez ni le paramètre champ, ni les paramètres >, < ou *, TRIER affiche la boîte de dialogue de l'Editeur de tri de 4D pour table. Cet éditeur est présenté ci-dessous :

Pour plus d'informations sur l'utilisation de cet éditeur, reportez-vous au manuel Mode Développement de 4D.

L'utilisateur construit le tri puis clique sur le bouton Trier. Si le tri est correctement effectué, la variable système OK prend la valeur 1. Si l'utilisateur clique sur Annuler, aucun tri n'est effectué et la variable OK prend la valeur 0 (zéro).

Exemples

(1) L'exemple suivant affiche la boîte de dialogue de Tri pour la table [Produits] :

   TRIER ([Produits])

(2) L'exemple suivant affiche la boîte de dialogue de Tri pour la table par défaut (si elle a été définie) :

   TRIER

Si vous spécifiez les paramètres champ et > ou <, la boîte de dialogue standard de Tri ne s'affiche pas et le tri est entièrement défini par programmation. Vous pouvez trier la sélection courante sur un plusieurs niveaux. Pour chaque niveau de tri, vous passez un champ dans le paramètre champ et un ordre de tri dans > ou <. Si vous passez le paramètre "supérieur à " (>), l'ordre est croissant. Si vous passez le paramètre "inférieur à " (<), l'ordre est décroissant.

Exemples

(3) L'exemple suivant trie la sélection courante de [Produits] par nom dans un ordre croissant :

   TRIER ([Produits]; [Produits]Nom;>)

(4) L'exemple suivant trie la sélection courante de [Produits] par nom dans un ordre décroissant :

   TRIER ([Produits]; [Produits]Nom;<)

(5) L'exemple suivant trie la sélection courante de [Produits] par type et par prix dans un ordre croissant à chaque niveau :

   TRIER ([Produits]; [Produits]Type;>; [Produits]Prix;>)

(6) L'exemple suivant trie la sélection courante de [Produits] par type et par prix dans un ordre décroissant à chaque niveau :

   TRIER ([Produits]; [Produits]Type;<; [Produits]Prix;<)

(7) L'exemple suivant trie la sélection courante de [Produits] par type dans un ordre croissant et par prix dans un ordre décroissant :

   TRIER ([Produits]; [Produits]Type;>; [Produits]Prix;<)

(8) L'exemple suivant trie la sélection courante de [Produits] par type dans un ordre décroissant et par prix dans un ordre croissant :

   TRIER ([Produits]; [Produits]Type;<; [Produits]Prix;>)

Si vous omettez le paramètre d'ordre > ou <, le tri est croissant par défaut.

Exemple

(9) L'exemple suivant trie la sélection courante de [Produits] par nom dans un ordre croissant :

   TRIER ([Produits]; [Produits]Nom)

Si un seul champ est spécifié (tri sur un niveau) et s'il est indexé, le tri tire parti de l'index. Si le champ n'est pas indexé ou si plus d'un champ est utilisé, le tri est effectué de manière séquentielle. Le champ peut appartenir à la table de la sélection que vous triez ou à une table 1 liée à table par un lien automatique (la table réordonnée doit être la table N). Dans ce cas, le tri est toujours séquentiel.

Exemples

(10) L'exemple suivant effectue un tri indexé si le champ [Produits]Nom est indexé :

   TRIER ([Produits]; [Produits]Nom;>)

(11) L'exemple suivant effectue un tri séquentiel, que les champs soient ou non indexés :

   TRIER ([Produits]; [Produits]Type;>;[Produits]Prix;>)

(12) L'exemple suivant effectue un tri séquentiel à l'aide d'un champ lié :

   TRIER ([Factures];[Société]Nom;>) ` les factures sont triées par ordre alphabétique sur le champ Nom de la société

Pour indiquer que le tri ne doit pas être immédiatement effectué, passez en dernier paramètre le symbole *. 4D attendra de rencontrer une nouvelle ligne de tri ne se terminant pas par * pour exécuter le tri. Cette possibilité est utile pour gérer les tris multicritères dans le cadre d'interfaces personnalisées.

Attention : lorsque vous utilisez cette syntaxe, vous ne pouvez passer qu'un seul niveau de tri (un seul champ) par ligne d'instruction.

Exemple

(13) Dans un formulaire sortie affiché en mode Application, vous souhaitez permettre aux utilisateurs de trier une colonne par ordre croissant en cliquant simplement sur son en-tête.

Si l'utilisateur maintient la touche Maj enfoncée et clique ensuite sur plusieurs autres colonnes, le tri est multicritères, c'est-à-dire que les colonnes sont triées sur autant de niveaux qu'il y a de clics :

Chaque en-tête de colonne contient un bouton inversé dont la méthode est du type suivant :

   MULTITRIS (->[CDs]Titre)   `Bouton de l'en-tête de la colonne Titre

Chaque bouton appelle la méthode projet MULTITRIS en passant un pointeur sur le champ de la colonne. Voici le contenu de la méthode projet MULTITRIS :

      ` Méthode projet MULTITRIS
      ` MULTITRIS (Pointeur)
      ` MULTITRIS (->[Table]Champ)

   C_POINTEUR($1)
   C_ENTIER LONG($nbCrit)

      `Construction des critères
   Si (Non(Majuscule enfoncee))   `Si le tri est simple
      TABLEAU POINTEUR(tPtrTriChp;1)  `Créons un tableau à 1 élément
      tPtrTriChp{1}:=$1   `Champ sur lequel l'utilisateur a cliqué
   Sinon   `Si la touche Maj était enfoncée (tri multicritère)
      $nbCrit:=Chercher dans tableau(tPtrTriChp;$1)  `Vérifions que le critère n'est pas déjà présent
      Si ($nbCrit<0)  `Critère inexistant
         INSERER DANS TABLEAU(tPtrTriChp;Taille tableau(tPtrTriChp)+1;1)  `Remplissons le tableau
         tPtrTriChp{Taille tableau(tPtrTriChp)}:=$1
      Fin de si 
   Fin de si 
      `Exécution du tri
   $nbCrit:=Taille tableau(tPtrTriChp)
   Si ($nbCrit>0)  `S'il y a au moins un élément dans le tableau de pointeurs
      Boucle ($i;1;$nbCrit)   `Pour chaque critère défini
         TRIER([CDs];(tPtrTriChp{$i})->;>;*)  `On construit le tri
      Fin de boucle 
      TRIER([CDs])  `Pas de * : on effectue le tri
   Fin de si 

Quelle que soit la manière dont le tri est défini, si l'opération risque de prendre un certain temps, 4D affiche automatiquement un message contenant un thermomètre de progression. Vous pouvez décider d'afficher ou de ne pas afficher ce message pour le process à l'aide des commandes SUPPRIMER MESSAGES et LAISSER MESSAGES. Si le thermomètre de progression est affiché, l'utilisateur peut cliquer sur le bouton Stop pour interrompre l'opération. Si le tri s'est correctement déroulé, la variable système OK prend la valeur 1. Sinon, si le tri est interrompu, OK prend la valeur 0 (zéro).

Référence

TRIER PAR FORMULE.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant