Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour,
Je cherche à faire un DW qui aurait en critères un retrieval argument de type number array, mais cela ne fonctionne pas.
Je m'explique :
Je sélectionne dans un 1er DW de type Grid, plusieurs lignes que j'aimerais passé en paramètre dans le retrieve d'un 2ème DW.
//je récupère l'ensemble des lignes sélectionnées liste_dom[] = ldw.object.id_edit_dom.selected //je le passe en paramètre dw_2.retrieve(liste_dom[]) Mon dw_2 étant code : SELECT toto.cd_toto, toto.lb_toto , toto.id_toto FROM toto, titi, tata WHERE ( toto.id_titi = titi.id_titi ) and ( tata.id_tata = titi.id_tata ) and (( titi.id_tata = :ai_id_tata and :ai_id_tata !=0 ) or :ai_id_tata= 0 )
avec :ai_id_tata défini donc en number array ?
Avez vous une idée ?
Merci.
Dernière modification par MarroW (27-07-2007 08:45:02)
Hors ligne
MarroW a écrit:
...mais cela ne fonctionne pas.
Quel est le message d'erreurs ?
Hors ligne
"Select Error: Incorrect Syntax near ','."
Hors ligne
Je rajoute que quand je fais le retrieve en "design" de DW et que je renseigne par exemple 1,12 en argument, il ne me ramène rien ou toute la table, mais ne dit rien. Et si je lui passe une seule valeur, il me ramène le bon résultat de cette valeur
Hors ligne
quelle est la base de données ?
Pour la tableau ça serait plutot un IN :
titi.id_tata in ( :ai_id_tata )
Hors ligne
c'est un probleme sql
--> il ne comprend pas les tableaux de cette maniere
SELECT toto.cd_toto, toto.lb_toto , toto.id_toto FROM toto, titi, tata WHERE ( toto.id_titi = titi.id_titi ) and ( tata.id_tata = titi.id_tata ) and (( titi.id_tata = :ai_id_tat[1]a and :ai_id_tata[1] !=0 ) or :ai_id_tata[1]= 0 )
c'est bon
Hors ligne
Merci eRaSorZ,
Base de donnée sybase ASE .
J'ai essayé de mettre le In qui semble en effet plus logique, mais dans ce cas il ne supporte plus la syntaxe et me dit qu'il y a un problème près du 0 5j'ai essayé des "in" partout ....
Hors ligne
JCZ a écrit:
c'est un probleme sql
--> il ne comprend pas les tableaux de cette maniereCode: sql
SELECT toto.cd_toto, toto.lb_toto , toto.id_toto FROM toto, titi, tata WHERE ( toto.id_titi = titi.id_titi ) and ( tata.id_tata = titi.id_tata ) and (( titi.id_tata = :ai_id_tata[1] and :ai_id_tata[1] !=0 ) or :ai_id_tata[1]= 0 )c'est bon
Désolé, il me dit "Incorrect syntax near '[', Do You want to correct errors ?", en essayant de sortir du DW
Hors ligne
MarroW a écrit:
Code: sql
SELECT toto.cd_toto, toto.lb_toto , toto.id_toto FROM toto, titi, tata WHERE ( toto.id_titi = titi.id_titi ) and ( tata.id_tata = titi.id_tata ) and ( titi.id_tata in (:ai_id_tata))
En mettant uniquement ça ça fonctionne, mais je perd la possibilité de tout récupérer si aucune valeur n'est passé !
Hors ligne
MarroW a écrit:
En mettant uniquement ça ça fonctionne, mais je perd la possibilité de tout récupérer si aucune valeur n'est passé !
à ce moment-là, avant le retrieve tu calcules le nb d'éléments du tableau et tu le passes en paramètre :
Long ll_count
ll_count = UpperBound( liste_dom )
dw_2.retrieve( liste_dom, ll_count )
et dans la requête :
SELECT toto.cd_toto, toto.lb_toto , toto.id_toto FROM toto, titi, tata WHERE ( toto.id_titi = titi.id_titi ) and ( tata.id_tata = titi.id_tata ) and ( titi.id_tata in (:ai_id_tata) or :al_count = 0 )
Hors ligne
Super Merci , bonne idée,
sauf que ce n'est pas UpperCase, mais UpperBound
Merci à tous.
Hors ligne
MarroW a écrit:
sauf que ce n'est pas UpperCase, mais UpperBound
oops, en effet
(je corrige)
Hors ligne
Pages: 1