Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 15-02-2012 12:36:51

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

PB 11.5.1.4843 et la syntaxe de SetSort()

On dirait que Sybase s'est encore pris les pieds dans le tapis avec des specs en "logique floue" pour les tris dans une DW...

Déjà la doc de SetStort() est un WFT en soi (extrait) :

The following table shows the recognized values for order. These values are case insensitive. For example, as, s, AS, or S all specify a case-sensitive sort in ascending order.

Order value                    Resulting sort order
a, asc, ascending, ai, i    Case-insensitive ascending
d, desc, descending, di    Case-insensitive descending
as, s                            Case-sensitive ascending
ds                                Case-sensitive descending

Autrement dit, dans la syntaxe SetSort("colonne type_de_tri") on peut utiliser un tas de syntaxes différentes pour choisir entre ascendant / descendant et sensible ou insensible à la casse (cette partie je viens de la découvrir).

Seulement il semble que ces différentes syntaxes soient mal interprétées (voire même buggent, étonnant )

Si dans une DW je fais

Code: pb

setsort( "col desc" )
sort()

et que juste derrière je fais

Code: pb

describe("datawindow.table.sort") // il me retourne -> "col desc D"

Le 'D' majuscule montre bien que ce n'est pas issu de la syntaxe qui lui est donnée au départ.

Mon problème c'est que dans notre appli on reparse la syntaxe des tris pour afficher des boîtes de dialogue personnalisées à la place de la boite de tri "système" qui est un peu compliquée pour un luser standard et que cette syntaxe à la con plante notre parsing...

Du coup je teste les autres valeurs possibles et voici le résultat (je n'ai pas cherché à vérifier si la gestion de la casse était ok, ici je résume différentes valeurs successives avec les ..) :

Tri ascendant, théoriquement "insentive"
col a -> col A   <--- le seul tri ascendant qui fonctionne correctement
col asc -> col asc A
col ai -> col ai A
col i -> col i A

non supporté, mais semble fonctionner
col asc..ascending -> col asc..ascending A

ascendant "sensitive"
col as -> col as D (!!!)
col s -> col s D (!!!)


descendant "insensitive"
col d -> col D   <--- le seul tri descendant qui fonctionne correctement
col desc -> col desc D
col descending -> col descending D
col di -> col di D

Apparemment pas du tout supporté (mais ce n'est pas dans la doc)
col de..des -> col de..des A
col desce..descendin -> col desce..descendin A

descendant sensitive
col ds -> col ds D


Bon, le bug on va le contourner (en utilisant exclusivement 'A' et 'D'), mais vous aviez déjà remarqué ça ?


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22