Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
j'ai une datawindow avec un group. Pouvons nous modifier par un bout de code les champs qui constituent mon groupe.
En clair dans ma datawindow j'ai dans le champ "group definition" as_champs1, je voudrais en appuyant sur un bouton changer cette définition par as_champs1, as_champs2.
J'ai analysé la source de ma datawindow et le champs est répertorié comme
group(level=1 header.height=0 trailer.height=0 by=("champs1" )
J'ai cherché sur le forum et sur l'aide pb mais je n'ai rien trouvé, je ne dois pas connaître le champ exact.
Merci d'avance.
PB 9.0.3 sous windows XP
Oracle 10G
Dernière modification par Curios (06-08-2010 13:42:14)
Hors ligne
pas sûr que ce soit possible.
Pourquoi tu veux faire ça ?
Parfois, quand tu veux faire un truc trpo compliqué, il vaut mieux tout remettre à plat
Hors ligne
Le but est de faire une statistique dynamique.
Exemple :
J'ai un nombre de ventes par magasins et vendeurs.
Je voudrais avoir la possibilité avec une même stat de ressortir le nombre de vente par magasin ou par vendeur ou (par magasin et par vendeur).
Le nombre de champs à utiliser n'est pas prédéfini à l'avance.
J'ai une solution en créant un compute_field par champs à mettre dans mon group mais dans mon cas il faut au minimum que je créé 4 computefield. Ensuite j'ai juste à mettre dans mon code compute_field1 = as_magasin, compute_field2 = as_vendeur et faire un groupcalc().
Hors ligne
Tu peux faire un computed field dont l'expression est as_champs1 et grouper par ce computed.
Ensuite tu change dynamiquement l'expression du compute par champs1+champs2, sans oublier de refaire un groupcalc() et un sort().
NB :
Edit : tu as posté entretemps un msg avec les computed...
Hors ligne
Salut,
La manipulation directe du GROUP est impossible. ( il n'existe pas de fonction ou de propriété pour les manipuler )
La seule méthode ( un peu bidouille) est de récupérer la syntaxe de ta datawindow et de modifier la chaine correspondant au groupe
String ls_syntax string ls_error dw_1.Describe("Datawindow.Syntax" ) // Ajouter le code de recherche dans la chaine ls_syntax pour trouver la position du group //remplacer par ce que tu veut ... ... // puis recréer la datawindow avec la nouvelle syntaxe que tu as modifier dw_2.Create( ls_syntax, ls_error)
NB : Attention si tu change le nombre de colonne dans ton group n'oubli pas de modifier l'ordre de tri de ta datawindow
cdt
Yanis
Dernière modification par Yanis (06-08-2010 13:15:36)
Hors ligne
Merci les gars, je valide la discussion comme résolue.
Je vais essayer de modifier la datawindow syntax pour voir ce que ça donne.
Hors ligne