Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour
j'ai un probleme avec mes dddw parametrés. Dans mon projet j'ai plusieurs dddw parametrés le probleme se trouve dans l'affichage de mes dddw au niveau de m'afficher la designation il m'affiche le code quand je choisie la bonne designation.
Merci à tous
Dernière modification par juldace (05-09-2008 15:30:01)
Hors ligne
Salut.
Quand est-ce que tu lance le retrieve de tes datawindow parametrees? (dans un event? lequel?)
Es-tu sûr de la configuration de ta dddw? (data column, display column,...)
Aurais-tu codé un event de ta datawindow dans lequel tu fais des setitem sur cette dddw? Ou codé le itemChamged...
J'ai pas d'idée, alors je cherche des pistes...
Hors ligne
Pour ma part le display column ne fait rien (Pb 10.2 build 8075).
La liste m'affiche le contenu complet de la datawindow ciblée, et pas seulement la colonne spécifiée. Donc je fais des datawindow cibles avec juste une colonne en haut à gauche de la zone details, comme ça il m'affiche bien les données que je souhaite :-/
C'est peut-être la même chose pour toi, non ?
Hors ligne
Explication :
Tu as une DW ( Dw_1 )
sur un champ 'code_champ' tu mets une DDDW
Ta DDDW est une DW ( dddw_1 )
Quand tu ouvres ta DDDW tu vois ta DW ( dddw_1 )
data column permet de dire le champ de ( dddw_1 ) qui correspond à 'code_champ' ( Dw_1 )
display column permet de dire le champ à l'affichage de ta DW Dw_1 qui remplacera 'code_champ'
et en Pb 10.2 cela marche très bien
Hors ligne
Nyphel a écrit:
Pour ma part le display column ne fait rien (Pb 10.2 build 8075).
La liste m'affiche le contenu complet de la datawindow ciblée, et pas seulement la colonne spécifiée. Donc je fais des datawindow cibles avec juste une colonne en haut à gauche de la zone details, comme ça il m'affiche bien les données que je souhaite :-/
C'est peut-être la même chose pour toi, non ?
C'est bizarre, j'ai jamais remarque de probleme en 10.2... Peut-etre le build...
Toujours est-il que je tiens a preciser que le display ne sert nullement pour la liste qui apparait. Elle affiche toujours le contenu complet de la datawindow. Le display specifie la colonne a afficher dans la zone d'edition du controle, en remplacement de la data column value... C'etait pour etre sur qu'on parle de la meme chose...
Hors ligne
je met mon code dans itemchanged et il me renvois le code et non le libelle
j'ai fonction pour les dddw retrieve
Qui se presente comme suite
RetrieveDDDW(lechamp,data) integer rtncode string ls_test rtncode = dw_detail.GetChild(LeChamp, ddd_division1) IF rtncode = -1 THEN MessageBox( "Error", "Not a DataWindowChild") return end if ls_test=data ddd_division1.SetTransObject(SQLCA) ddd_division1.Retrieve(ls_test) avec lechamp comme parametre et je l'appel dans itemchanged RetrieveDDDW('code_dir',data) RetrieveDDDW('code_div',data) RetrieveDDDW('code_ser',data) RetrieveDDDW('code_sec',data)
Hors ligne
juldace a écrit:
je met mon code dans itemchanged et il me renvois le code et non le libelle
Ok, mais ca, c'est normal, dans l'itemChanged tu recois la valeur de la data column que tu as specifiee pour ta DDDW.
Si tu veux recuperer la display value, il faut faire:
dw_1.describe("evaluate('LookUpDisplay ( columnName )', 0") // avec columnName le nom de ta colonne dddw
Bon, recapitulons...
Ta fonction pour faire le retrieve ddddw a l'air bonne, si tu utilise la data value. Si tu as besoin de la display, maintenant tu sais comment faire (voir ci-dessus).
Reste ton probleme initial: tu dis ne pas voir ta display value dans la dddw quand tu choisi une valeur dans la liste. A la place, tu vois le code. C'est toujours le cas?
juldace a écrit:
et je l'appel dans itemchanged
RetrieveDDDW('code_dir',data)
RetrieveDDDW('code_div',data)
RetrieveDDDW('code_ser',data)
RetrieveDDDW('code_sec',data)
Ok, mais dis moi que tu ne fais pas par exemple de RetrieveDDDW sur la colonne qui vient de changer et qui a provoque l'itemChanged... (RetrieveDDDW('code_dir',data) alors que dwo.name = 'code_dir' p.ex...)
Hors ligne
je vous explique ma demarche
j'ai des etablissements lors je choisis l'etablissement il me filtre les directions de cet etblissement.
si je choisis les directions il me filtre les division et ainsi de suite
etablissement-->direction-->division->service--->section
Hors ligne
juldace a écrit:
je vous explique ma demarche
j'ai des etablissements lors je choisis l'etablissement il me filtre les directions de cet etblissement.
si je choisis les directions il me filtre les division et ainsi de suite
etablissement-->direction-->division->service--->section
Ok, nickel!
Pourrait-on jetter un oeil sur ton itemChanged? Et les autres endroits ou tu appelle tes RetrieveDDDW... Je soupconne que le probleme est la.
Hors ligne
RetrieveDDDW(lechamp,data) integer rtncode string ls_test rtncode = dw_detail.GetChild(LeChamp, ddd_division1) IF rtncode = -1 THEN MessageBox( "Error", "Not a DataWindowChild") return end if ls_test=data ddd_division1.SetTransObject(SQLCA) ddd_division1.Retrieve(ls_test) avec lechamp comme parametre et je [b]l'appel dans itemchanged[/b] RetrieveDDDW('code_dir',data) RetrieveDDDW('code_div',data) RetrieveDDDW('code_ser',data) RetrieveDDDW('code_sec',data)
[message de modération] ce sera plus lisibles pour tout le monde
[/message de modération]
Hors ligne
Ok, je me disais bien...
juldace a écrit:
RetrieveDDDW('code_dir',data)
RetrieveDDDW('code_div',data)
RetrieveDDDW('code_ser',data)
RetrieveDDDW('code_sec',data)
Bon, first, j'ai comme un doute sur ce code...
Si tu choisi un etablissement, ok, ca va filtrer tes directions en utilisant data qui sera la valeur d'établissement j'imagine. Dans la meme volee, tu filtre divisions, services et sections via le meme parametre d'etablissement. Ca parait etrange, mais je sais pas comment est ton modele de donnee, donc admettons...
Mais la ou je m'interroge, c'est quand tu change, disons, un service... Tu vas re-filtrer tout en utilisant data, qui contient le code de service qui vient d'etre choisi. Je me demande si c'est logique... M'est avis que non, mais je peux me tromper.
Independamment de cela, imaginons une situation concrete: si tu changes l'etablissement en '01', cela fait un retrieve sur les directions qui sont liees a '01'. Ensuite, tu choisi la direction 'toto' (qui est donc liee a l'etablissement '01'), jusque la, tout va bien. Mais si ensuite tu change ton etablissement en '02', la on va avoir un probleme...
En effet, direction est toujours a 'toto', alors que sa child ne montre que les directions liées a l'etablissement '01'. Et donc, ton champs ne te montrera pas la valeur display correspondant a la direction 'toto', mais betement le code 'toto'...
Dans une DDDW, si le display ne s'affiche pas, c'est 99.99% du temps parce que la valeur qu'on y a mis n'est pas dans la child qui sert de liste...
J'espere que ca t'aide.
PS: si maintenant tu fais tout ca sur une DW avec plusieures lignes (si c'est pas ton cas, j'ai rien dit), il ne faut pas oublier que filtrer une child fait effet sur toute les lignes de la DW! Et aussi, un filter sur les child est souvent plus performant qu'un retrieve avec argument...
Bonne chance!
Hors ligne
bonjour
merci a tous j'ai pu avoir une solution
Hors ligne
Pages: 1