Commande TRIER et compilateur

Dans la doc de la commande Trier on peut lire cela :

: Doc 4D v17

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
.

Si c’est vrai, pourquoi le compilateur ne retourne aucune erreur si on passe plusieurs champs successifs avec le symbole * sur une seule ligne :?:

Facile : dès qu’il voit * en paramètre, le compilateur décide qu’il n’y a rien à contrôler ni même à comprendre :mrgreen:

C’est sûr que comme ça y a moins de travail… :evil:

Pour rester sérieux, j’ai trouvé des exemples de ligne de code qui ne respectent pas cette alerte.
De 2 choses l’une, ou cette alerte est fausse dans la doc, ou ces morceaux de code n’ont jamais fonctionné correctement :?::roll:

Je renchéris sur l’analyse du code du compilateur, il pourrait également alerter si les champs ne sont pas sur la même table ET qu’ils ne sont pas de 1 vers N pour prévenir que la recherche ne fonctionnera pas (ou mal) si on n’a pas des liens automatiques.

Ce serait “confortable”, certes, mais…

Vérifier que les champs sont sur la même table fera beaucoup de bruit pour rien puisqu’il est “légal” de trier sur un champ d’une autre table.
TRIER([INDIVIDU];[CIVILITE]libelle;>;*)
TRIER([INDIVIDU];[INDIVIDU]nomNaissance;>)

Pire, j’ai parfaitement le droit d’entrelacer 2 CHERCHER comme un sagouin :
CHERCHER([table1];[table1]truc=“a@”;)
CHERCHER([table2];[table2]chose>1;
)
CHERCHER([table1];|;[table1]truc=“b@”;)
CHERCHER([table2];[table2]chose<10;
)
CHERCHER([table1])
CHERCHER([table2])

Il aura du mal à suivre, le compilo…

Par contre cela fait un moment que je me dis que j’en ai un peu marre de répéter le nom de la table dans les CHERCHER et TRIER enchainés. Avec ORDA, une fois qu’on lui a dit ds.laTable, il ne nous demande plus de bégayer.

T’as pas compris ce que je disais; dans une ligne:

ex: TRIER([INDIVIDU];[CIVILITE]libelle;>;*)

si la table [CIVILITE] n’est pas reliée avec un lien auto à ta table [INDIVIDU]
ben c’est tout ton tri qui est pourri. Sauf si tu as activé le lien auto par une autre commande.

Ce serait simplement un warning, au meme titre qu’il te passe un warning si tu utilises des pointeurs.

Ha ok, désolé.