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


Bonjour,
J'ai une datawindow sous forme de liste construite dynamiquement.
Je souhaite mettre en exergue certaines lignes en utilisant la propriété .background.color des champs composant les lignes d'enregistrement.
Dans la majeur partie des cas, il n'y a pas de problème... seulement, certaines données font partie d'un groupe.
Il n'y a aucune information relative aux différents groupes dans la DW, j'ai donc besoin de générer la liste des éléments du groupe puis regarder si ma donnée s'y trouve.
Et là, c'est le drame...
Certains groupes possèdent un nombre important d'éléments, ce qui génère une syntaxe énorme à mettre dans la propriété du dwo.
1°) Quelle est la taille limite de la syntaxe d'une propriété ?
2°) Ne pouvant pas ajouter de compute ou de colonne dans ma datawindow, est-ce qu'il y a moyen de faire des tests sur une données qui externe à la DW ?
Voilou
Dernière modification par myname (30-09-2008 15:21:50)
Hors ligne














Bonjour et par ici
Pour les posts, pense à préciser les versions et tout le toutim
myname a écrit:
J'ai une datawindow sous forme de liste construite dynamiquement.
les données et/ou la structure ? type de DW ? SQL ?
myname a écrit:
Je souhaite mettre en exergue certaines lignes en utilisant la propriété .background.color des champs composant les lignes d'enregistrement.
Dans la majeur partie des cas, il n'y a pas de problème... seulement, certaines données font partie d'un groupe.
Il n'y a aucune information relative aux différents groupes dans la DW, j'ai donc besoin de générer la liste des éléments du groupe puis regarder si ma donnée s'y trouve.
Et là, c'est le drame...
Certains groupes possèdent un nombre important d'éléments, ce qui génère une syntaxe énorme à mettre dans la propriété du dwo.
pourrais-tu nous faire voir un printscreen, un export de la syntaxe ?
myname a écrit:
1°) Quelle est la taille limite de la syntaxe d'une propriété ?
bonne colle
myname a écrit:
2°) Ne pouvant pas ajouter de compute ou de colonne dans ma datawindow, est-ce qu'il y a moyen de faire des tests sur une données qui externe à la DW ?
pourquoi pas de compute ?
oui, il y a moyen de faire des tests sur les données d'un DW quelque soit l'origine des données
Hors ligne










En pb6.5 c'est limité à 32 767 caractères a peu près si je ne souviens bien
Hors ligne


erasorz a écrit:
les données et/ou la structure ? type de DW ? SQL ?
La DataWindow est entièrement contruite en script selon les colonnes sélectionnées par l'utilisateur.
erasorz a écrit:
pourquoi pas de compute ?
oui, il y a moyen de faire des tests sur les données d'un DW quelque soit l'origine des données
Je ne peux pas changer la construction de la DataWindow, le but est simplement de modifier la propriété .background.color des champs et computes la composant.
Je vais développer davantage la problématique...
Admettons une datawindow simple avec une colonne nommée s_Garantie_Libelle.
Ce champ est un libelle de garantie.
Cette garantie fait partie d'un groupe de garantie.
Je souhaite modifier la couleur de toute les lignes correspondant à un groupe de garantie donné... seulement, je n'ai aucune donnée concernant le groupe dans ma datawindow.
Une solution consiste à récupérer les Libelles de l'ensemble des garanties correspondant au groupe donné et mettre un bout de code similaire "If( s_Garantie_Libelle in ( 'liste des libelles séparés par une virgule'), couleur_rouge, couleur_défaut)"
Le problème intervient lorsque le groupe de garantie comporte beaucoup d'éléments.
La syntaxe devient alors énorme...
PS : Concernant l'environnement, je suis sur PB9 / Sybase 12.5
Dernière modification par myname (24-09-2008 10:08:16)
Hors ligne














je dis que c'est ballot de ne rien pouvoir ajouter à la DW
il te suffirait de rajouter le groupe de garantie (en invisible) et de coder un background.color en fonction en expression de DW
autrement ça devient effectivement très lourd et difficilement maintenable
Hors ligne


Finalement, j'ai trouvé la solution...
J'ai fait une petite fonction qui gère les contrôles dont j'ai besoin.
Du coup, dans le .background.color, je code l'appel de ma fonction tout simplement.
Par exemple :
Pour une fonction : integer uf_IsInGroup( String as_Value, String as_Group)
dw_ToHighLight.Modify( "unChamp.BackGround.Color='654~tif(uf_IsInGroup( monChampValue, unGroupe), 456, 654)'")
Voilou
Hors ligne











Bonjour,
Merci à toi pour ta réponse. N'oublies pas le [RESOLU]
Hors ligne