Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
rincevent a écrit:
Bonsoir ,
voilà le minimum à coder pour faire d'une colonne une dddw mais il te faut toujours une datawindow (ls_dddw_name ) définie qui fait le retrieve des donnéesCode: pb
datawindowchild ldwc_child ma_dw.Modify(ls_col + ".dddw.name='" + ls_dddw_name + "'") ma_dw.Modify(ls_col + ".dddw.displaycolumn='" + ls_displaycolumn_name + "'") ma_dw.Modify(ls_col + ".dddw.datacolumn='" + ls_datacolumn_name + "'") ma_dw.GetChild(ls_col, ldwc_child) ldwc_child.SetTransObject(SQLCA) ldwc_child.Retrieve()
ça réponds à ta question ?
Bonjour,
Merci pour ce code qui est très interessant et j'aimerais l'utiliser mais ou doit - il etre placé?
dans une methode de la dropdownlistbox?
a quoi correspondent les différentes variables?
Merci pour la réponse
Dernière modification par Himmreich (28-01-2014 14:27:11)
Hors ligne
Salut,
Alors les variables correspondent :
-au nom de la DW existante à utiliser pour la DropDownDW
-au nom de la colonne à utiliser pour l'affichage
-au nom de la colonne à utiliser pour les données
tu peux placer ce code dans un event de ta DW principale, le constructor par exemple.
Hors ligne
Le code donnée est pour les dropdowndatawindow c'est différent des dropdownlistbox
Ca sert à avoir des listes déroulantes dans les datawindow et la source des données de la liste déroulante provient d'une requête.
Par exemple tu as une datawindow d_t1 qui fait un select sur table_1
Dans la table_1 tu as un champ fk_id_t2 qui est une clé étrangère qui référence id_t2 de la table table_2
Maintenant tu as une datawindow d_t2 qui fait un select id_t2, lbl_t2 sur table_2
Dans ta d_t1 tu peux soit afficher la valeur de ta clé c'est à dire fk_id_t2 (pas très parlant) soit le libellé correspondant (plus user friendly) dans table_2 c'est à dire lbl_t2
Dans ce cas tu va utiliser une dropdowndatawindow pour que l'utilisateur puisse choisir la clé en fonction du libéllé
Avec cet exemple et le code donné:
ls_dddw_name = 'd_t2' c'est le nom de la datawindow source de la dropdown
ls_displaycolumn_name = 'lbl_t2' c'est le nom de la colonne de d_t2 que tu veux afficher dans ta dropdown
ls_datacolumn_name = 'id_t2' c'est le nom de la colonne dans d_t2 qui aura la même valeur que la colonne et d_t1
Tu cherches à faire quoi exactement ?
Hors ligne
J'ai une requête qui effectue un select de 9 champs.
Le premier etant la clé primaire (un numéro)
Je souhaite afficher les 8 champs sur une meme ligne avec pour séparateur le caractère " | ".
Je souhaiterai que chaque ligne soit affichée dans une dropdownlistbox
je ne sais pas si c'est possible en PB
Hors ligne
Ca sera une dropdowndatawindow (et non dropdownlistbox)
C'est possible, il faut créer une DW à deux colonnes : la clé primaire (invisible) et la concaténation de tes champs.
Ensuite tu insères cette DW dans une autre et spécifies le style DDDW, colonne value = la clé primaire, colonne display = le concatenate
Hors ligne
Merci pour votre aide
Hors ligne
erasorz a écrit:
Ca sera une dropdowndatawindow (et non dropdownlistbox)
C'est possible, il faut créer une DW à deux colonnes : la clé primaire (invisible) et la concaténation de tes champs.
Ensuite tu insères cette DW dans une autre et spécifies le style DDDW, colonne value = la clé primaire, colonne display = le concatenate
J'ai appliqué votre solution. en preview mes données s'affichent correctement mais execution rien ne s'affiche.
J'ai ecrit du code dans le constructeur de la DataWindow ou je fais un Retrieve de la DataWindowChild mais pas de résultat.
Hors ligne
Va falloir donner un peu plus d'infos si tu veux qu'on puisse t'aider, version de PB, valeurs de retour des différents fonctions utilisées (GetChild, SetTransObject, Retrieve) et expliquer ce que tu appelles "en preview"
Si tu vois déjà tes données dans le mode preview de la DW alors tu n'as pas besoin de ce bout de code. (enfin ça dépends de la version de PB)
c'est pour le faire en dynamique ce code, via script, si tu l'as déjà configuré "en dur" dans ta DW tu n'en as pas besoin
Hors ligne
rincevent a écrit:
Va falloir donner un peu plus d'infos si tu veux qu'on puisse t'aider, version de PB, valeurs de retour des différents fonctions utilisées (GetChild, SetTransObject, Retrieve) et expliquer ce que tu appelles "en preview"
Si tu vois déjà tes données dans le mode preview de la DW alors tu n'as pas besoin de ce bout de code. (enfin ça dépends de la version de PB)
c'est pour le faire en dynamique ce code, via script, si tu l'as déjà configuré "en dur" dans ta DW tu n'en as pas besoin
J'utilise PowerBuilder Classic 12.5 sous Windows 7.
J'ai crée une DataWindow avec deux colonnes? une avec la clé primaire et une autre avec un concaténation de plusieurs champs. Le Preview me donne un apercu de ma DataWindow aperçu correct.
J'ai crée une seconde DataWindow avec une colonne de type 'DropDownDW' ou j'ai indiqué ma première DataWindow, pour Display Column je lui indique la concatenation de champs et pour Data Column la clé primaire. Sur cette meme DataWindow je vais sur l'onglet 'Preview', clic droit, Insert Row et je vois bien une DropDownListBox avec mes valeurs. Jusque la tout fonctionne.
J'integre la DataWindow sur une fenetre et lorsque je lance mon programme la DropDownListBox apparait comme vide...
Je ne sais pas si j'ai été clair dans mes explications
Hors ligne
Il faut faire un retrieve().
Hors ligne
Merci cela fonctionne a présent
Hors ligne
OK.
J'ai créé une nouvelle discussion pour ta question.
Si c'est résolu pour toi, édite le titre du premier message en ajoutant [RESOLU] dans le titre.
Hors ligne
erasorz a écrit:
Il faut faire un retrieve().
Ou encore plus simple cocher la case AutoRetrieve dans l'onglet Edit des propriétés du champ dans le DW Painter
Hors ligne