Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai un petit probleme concernant l'affichage d'une datawindow, en effet celle ci n'apparait pas sur la fenêtre alors que dans ses propriétés la case Visible est cochée.
Voici la capture d'ecran du painter de window :
Puis son affichage dans l'application :
Et puis voici les sources de la fenetre et des datawindow objects correspondants :
- fenetre (objectuser en fait)
- datawindow objects : 1 2
Hors ligne
Fait un InsertRow(0) de ta DW si ton retrieve ne ramène rien.
Juste pour voir
Hors ligne
Pour info dans ton event itemchanged de ta DW principale tu as le code suivant :
dw_3.settransobject(SQLCA) dw_3.retrieve(data)
Saches que le SetTransObject n'est pas obligatoire avant chaque Retrieve.
Il faut le faire après chaque association d'un dataobject à une DW pour associer la transaction à la DW.
Dans ton cas, je te conseille de le faire une seule fois dans le Constructor de ta dw_3 puisque le dataobject est associé dès la conception de ta fenêtre.
Hors ligne
Désolé de repondre aussi tard mais il fallait que j'avance sur un autre point.
Effectivement le InsertRow(0) m'a fait apparaitre ma datawindow mais est ce qu'il y a une explication concrete a cela ou est ce un bug de power builder?
Dernière modification par Nephtis (03-07-2007 14:03:04)
Hors ligne
Nephtis a écrit:
Effectivement le InsertRow(0) m'a fait apparaitre ma datawindow mais est ce qu'il y a une explication concrete a cela ou est ce un bug de power builder?
en fait c'est normal quand le retrieve ne renvoit rien
Hors ligne
eRaSorZ a écrit:
Nephtis a écrit:
Effectivement le InsertRow(0) m'a fait apparaitre ma datawindow mais est ce qu'il y a une explication concrete a cela ou est ce un bug de power builder?
en fait c'est normal quand le retrieve ne renvoit rien
Mais mon retrieve me renvoie bien une liste de valeur.
Hors ligne
Nephtis a écrit:
Mais mon retrieve me renvoie bien une liste de valeur.
là je comprends plus alors ...
Hors ligne
après le insertRow(0) je retrouve les 15 valeurs que je récupère dans la base de donnée (datawindow crée à partie d'une procédure stockée)
C'est pour ça que ça me semble quand même louche de devoir faire un insertRow(0) pour voir apparaitre ma datawindow
Mais bon sujet clos.
Dernière modification par Nephtis (03-07-2007 14:38:15)
Hors ligne
ici, il s'agit d'une dropdowndatawindowchild.
donc, il suffira de mettre ce code, dans le constructor de dw_2
DataWindowChild ldw_child integer li_rtncode li_rtncode = this.GetChild('id_pb', ldw_child) IF li_rtncode = -1 THEN MessageBox( & "Error", "Not a DataWindowChild") return END IF ldw_child.SetTransObject(SQLCA) ldw_child.Retrieve()
Hors ligne
J'ai essayé ce nouveau code pour le constructor de dw_2 mais le résultat est que cela fait disparaitre la datawindow de ma fenetre.
J'ai même essayé de modifier légèrement le script pour y ajouter à la fin cette ligne de code :
ldw_child.InsertRow(0)
Mais le résultat est le même : pas de datawindow affichée sur la fenetre
Par contre j'ai bien compris la logique qui découle du fait qu'on a affaire à une DropDownDataWindowChild
Néamoins les résultats ne sont guère présents
Dernière modification par Nephtis (03-07-2007 15:43:52)
Hors ligne
dans le constructor de dw_2
DataWindowChild ldw_child integer li_rtncode this.insertrow(0) li_rtncode = this.GetChild('id_pb', ldw_child) IF li_rtncode = -1 THEN MessageBox( & "Error", "Not a DataWindowChild") return END IF ldw_child.SetTransObject(SQLCA) ldw_child.Retrieve()
Hors ligne
Oulala, le sujet n'est pas clos ! J'ai bien dit de faire un insertrow(0) "pour voir".
Pick a raison, si c'est une DDDW (je n'ai pas regardé), elle se charge toute seule à l'insertion de ligne dans la DW dans laquelle elle est collée au moement du retrieve s'il ramène des lignes ou de l'insertrow (si l'autoretrieve est coché pour les versions 9 et supérieures)
Dans les cas où il faut un argument au retrieve de la DDDW, alors il vaut mieux désactiver l'autoretrieve de la colonne ayant la DDDW et le gérer dans le constructor de la DW un retrieve manuel (en passant par un getchild comme te le montre Pick).
Pour répondre à ta question s'il ne sagit pas d'un bug PB de ne pas avoir de présentation de la DW s'il n'y a pas de ligne : NON ce n'est pas un bug.
Pas de données => pas de ligne => pas de présentation à l'écran. Pas de bras => pas de chocolat.
Hors ligne
eRaSorZ a écrit:
Nephtis a écrit:
Mais mon retrieve me renvoie bien une liste de valeur.
là je comprends plus alors ...
Je crois qu'il parle du retrieve de la DDDW et non de la DW dans laquelle elle est collée
La DDDW a des lignes, mais il ne les voit pas si la DW principale n'a pas de ligne....
Hors ligne
Avec la deuxième version de ton constructor ça marche mieux pick ouic
Concernant les dropdatadatawindow:
- j'ai d_id_pb créé à partir d'une procédure stockée (cette procédure ne fait qu'un simple select * et la table n'est pas vide)
- j'ai aussi dddw_id_pb qui est de type dropdowndatawindow et dont la datawindowchild est d_id_pb
Maintenant j'espère que je ne me trompe pas dans la dénomination des différents objets.
Si j'ai bien compris ton message Chrnico, tu te demandais si le retrieve de d_id_pb fonctionne bien?
Je suis sous la version 6.5 de PowerBuilder.
Dernière modification par Nephtis (04-07-2007 07:31:02)
Hors ligne
Chrnico a écrit:
Pas de bras => pas de chocolat.
Excellent !
Nephtis, tu en es où maintenant ?
Qu'est ce qui fonctionne ou ne fonctionne pas ?
Hors ligne
Alors avec le deuxième script constructor pour dw_2 la datawindow apparait (bien que je n'ai pas encore vraiment compris pourquoi elle n'apparait pas dans la première verion du script de pick ouic)Maintenant il me reste quand même des choses a apprendre concernant cette association entre datawindow et datawindow child. Je sais pas si je dois créer un autre sujet pour ça puisqu'on s'éloigne du but d'origine.
Je pose quand même ici et si il faut je crée un autre post :
Désormais je souhaiterais selectionner une valeur particulière dans cette datawindow (dw_2) lorsque l'utilisateur cliquera sur une ligne d'une autre datawindow (dw_1). Faut t'il que je balaie la datawindowchild pour selectionner la bonne valeur ou faut il que je balaie la datawindow?
C'est bon j'ai trouvé la reponse à ma question tout seul, comme un grand
Dernière modification par Nephtis (04-07-2007 08:08:56)
Hors ligne