Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
bonjour,
dans une datawindow dont le dataobject est un freeform, j'ai insérer un report object que j'ai relier à un autre DWo de type label.
problème: un retrieve m'affiche toutes les lignes du report et du dataobject mais une fois que je filtre la datawindow le report disparaît au lieu d'etre filtrer
help please
Dernière modification par kocaine (19-04-2013 13:35:14)
Hors ligne
bonjour,
au lieu de filtrer, pourquoi ne pas faire le retrieve sur la valeur ?
Hors ligne
comment passer au retrieve l'argument? avec le retrieve arguments?
jusqu'ici la seule utilisation que j'ai faite de retrive c'est dw_mydw.retrieve()
Hors ligne
dw.retrieve( ton_argument )
et dans le dataobject tu définis un argument et tu l'utilises dans la requête : WHERE ta_colonne = ton_argument (par exemple)
Hors ligne
Dans le datawindow object j'ai ajouter un retrieve argument de type "number" dont le nom est "id" (le nom de ma colone)
et j'ai modifier le SELECT en ajoutant where "nom_de_ma_table"."id"=:id
après dans mon event (selection d'un row) j'ai mis dw_mydw.retrieve(dw_1.getitemnumber(currentrow,"id"))
mais le retrieve continue à afficher toutes les lignes de ma table
Hors ligne
il faut passer l'argument au report intégré dans la première DW et ajouter dans le where du report :
Hors ligne
Merci beaucoup ça marche impec.
Hors ligne
kocaine a écrit:
Merci beaucoup ça marche impec.
N'oublie pas d'éditer ton premier message et d'ajouter [RESOLU] dans le titre alors.
Hors ligne
par contre maintenant je ne peux plus faire un retrieve() sans arguments sur la DW. il me demande de specifier le "retrieval argument"
Hors ligne
kocaine a écrit:
par contre maintenant je ne peux plus faire un retrieve() sans arguments sur la DW. il me demande de specifier le "retrieval argument"
Ah ben oui, si tu définis un argument dans la datawindow, soit tu le fournis lors du retrieve, soit il te le demande. Mais il en a besoin pour retrouver les données.
Hors ligne
comment faire alors pour avoir un retrieve avec argument mais qui est capable de de faire un retrieve de toutes les lignes si besoin.
pck du coup ca ne fait que inverser mon probleme avant je pouvait pas retrieve une seule ligne et maintenant je ne peux pas retrieve toutes les lignes, alors que mon but etait d'avoir les deux
Hors ligne
kocaine a écrit:
comment faire alors pour avoir un retrieve avec argument mais qui est capable de de faire un retrieve de toutes les lignes si besoin.
pck du coup ca ne fait que inverser mon probleme avant je pouvait pas retrieve une seule ligne et maintenant je ne peux pas retrieve toutes les lignes, alors que mon but etait d'avoir les deux
je suppose que tu as maintenant dans la where clause de ton SQL qqchose du genre :
And ( ma_table.id_op = :as_id_op )
tu remplaces ça par
And ( ma_table.id_op = :as_id_op OR is null :as_id_op )
Quand tu veux une ligne en particulier tu passes l'id de la ligne dans as_id_op
Quand tu veux toutes les lignes tu passes un as_id_op mis à NULL auparavant (SetNull(as_id_op))
Hors ligne
du coup quand je passe un argument mis à null il retrieve aucune ligne alors que le but et de faire un retrieve complet de la table
Hors ligne
Et avec un "where mon_champ like :argument" ?
Si tu cherches quelque chose tu peux remplir argument = "truc%"
et quand tu veux tout tu passes "%"
évidemment ça n'est valable que pour un champ texte.
Hors ligne
malheureusement pour moi l'argument est numerique
mais en mettant un retrieve() sans argument il me sort la fenêtre pour mettre une valeur a l'argument, si je met ok sans mettre de valeur il fait bien le retrieve complet. Comment coder le fait que je met rien dans "value" sachant que quand je met "null" il retrieve rien
Hors ligne
kocaine a écrit:
du coup quand je passe un argument mis à null il retrieve aucune ligne alors que le but et de faire un retrieve complet de la table
gné ?
si tu passes null alors la partie "is null :as_id_op" de "And ( ma_table.id_op = :as_id_op OR is null :as_id_op ) " rends TRUE donc tu récupère toutes tes lignes
la syntaxe de check que la variable est Null dépends de ton SGBD tu dois peut être utiliser une autre synatxe, faut que tu fasses un petit effort aussi, on va pas venir tout coder à ta place...
kocaine a écrit:
Comment coder le fait que je met rien dans "value" sachant que quand je met "null" il retrieve rien
j'ai indiqué comment le faire dans mon précédent message... ( SetNull(as_id_op ) )
Dernière modification par rincevent (19-04-2013 13:04:29)
Hors ligne
c'est toi qui lis pas attentivement:
1) je code et je fais ma partie d'effort et je pose les questions qu’après avoir tester les réponses.
2) le :as_id_op is null (et pas is null :as_id_op,sinon error se syntax) ne récupère pas toutes les lignes sinon je les aurai vu (comme j'ai dis je fais les tests avant de revenir sur le topic)
3) j'avais bien vu ton setnull(as_id_op) met cette fonction retur un null alors que ma question était sur "aucun argument rentré et pas un argument null" (relis attentivement )
4) ça sert a rien les commentaire "on va pas venir tout coder à ta place et le reste, si tu veux aider ok sinon laisse ceux qui savent le faire
merci à tous pour votre aide
Dernière modification par kocaine (19-04-2013 13:39:32)
Hors ligne
bon les gars mollo mollo...
si ta DW attend un argument et que tu n'en mets pas tu auras un message
donc la solution préconisée par Rincevent est la bonne : tu passes un argument NULL si tu veux toutes les lignes (en ayant fait un setnull sur la variable)
ce qui va faire que la condition :argument is null
soit tout le temps vérifiée et tu auras toutes les lignes
si ça n'est pas le cas c'est qu'il y a un pb
Hors ligne
voila mon select:
SELECT "table"."id","table"."name" FROM "table" WHERE "table"."id"=:id or :id is null
et voila mon retrieve:
integer li_tmp
dw_freeform.settransobject(SQLCA)
dw_freeform.retrieve(SetNull(li_tmp))
je n'ai aucune ligne en réponse !!!!
Dernière modification par kocaine (19-04-2013 13:46:35)
Hors ligne
en fait il faut faire :
integer li_tmp
SetNull(li_tmp)
dw_freeform.settransobject(SQLCA)
dw_freeform.retrieve(li_tmp)
dans ton code tu fais passer la valeur de retour de SetNull(li_tmp) soit 1 et non pas li_tmp
NB : pour la balise code, ajoute =pb quand c'est du code powerbuilder et =sql quand c'est du SQL. Plus d'infos ici : Coloration des scripts dans les messages
Hors ligne
Great merci
et rincevent
Hors ligne
de rien, je te laisse corriger les balises code de ton avant dernier message
Hors ligne
done
Hors ligne
kocaine a écrit:
c'est toi qui lis pas attentivement:
1) je code et je fais ma partie d'effort et je pose les questions qu’après avoir tester les réponses.
2) le :as_id_op is null (et pas is null :as_id_op,sinon error se syntax) ne récupère pas toutes les lignes sinon je les aurai vu (comme j'ai dis je fais les tests avant de revenir sur le topic)
3) j'avais bien vu ton setnull(as_id_op) met cette fonction retur un null alors que ma question était sur "aucun argument rentré et pas un argument null" (relis attentivement )
4) ça sert a rien les commentaire "on va pas venir tout coder à ta place et le reste, si tu veux aider ok sinon laisse ceux qui savent le faire
merci à tous pour votre aide
C'est tjrs bien de réagir comme ça sur un forum où on viens d'arriver, surtout envers un membres actif et sur le forum depuis des années qui essaye de t'aider, t'es un
Allez, comme je sers à rien avec mes commentaires je m'en vais et je te promets de ne plus jamais intervenir sur aucune de tes questions.
Hors ligne