Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Je cherche , dans la requête SQL de ma DW , à mettre le nom de table comme retrieval argument de façon à pouvoir charger dynamiquement différentes tables qui ont la même structure.
Pour un argument classique :
SELECT :monChamp FROM catOwner.nomtable
Je voulais donc tenter :
SELECT monChamp from catOwner.:nomtable // ou => from "catOwner".:nomtable // ou même => from :nomtable
Mais comme vous l'aurez deviné.. ça ne fonctionne pas.
Est-ce possiblE?
Dernière modification par micmx (27-02-2009 12:18:02)
Hors ligne
Bonjour,
Oui, c'est possible mais pas de cette façon, regarde la méthode GetSQLSelect et SetSQLSelect.
Hors ligne
J'arrive à récupérer les données mais j'ai un petit problème malgré tout..
Je ne pense pas que c'est en rapport.
On doit donc connaitre le nombre de champs retourné? On ne peut pas faire juste un "select *" ?
Peut-on utiliser le setsqlselect sur un freeform ? ( car sinon étant donné que le nom de table n'est pas connu , on doit faire un select sur une table quelconque pour générer une dw avant de pouvoir faire le sqlselect..
Hors ligne
Bonjour,
Note, la méthode SetSQLSelect ne fonctionne pas si ta datawindow à des "retrievials arguments". Tu dois donc procéder de la manière ci-dessous pour contourner le problème :
String ls_sql, ls_condition ls_condition = 'XXX' ls_sql = "select column1 as data1, column2 as data2 from table1 where column3 = '" + ls_condition + "'" dw_1.SetSQLSelect(ls_sql)
Bien sur, tu dois préalablement construire une datawindow qui sera ton framework de base au futur substitution de requêtes.
Tu ne peux pas faire un select *, tu dois toujours garder la correspondance nombres/noms des colonnes (+type de données) que tu as choisis lors de la construction de la datawindow et que tu effectues une substitution de requête.
L'astuce pour modifier une requête avec des noms de colonnes différents est d'utiliser un alias (exemple) qui restera identique entre les différentes requêtes.
Il n'y a pas de problème pour modifier la requête d'un "freeform".
Hors ligne
Oui c'est comme cela que j'ai procédé.
Merci beaucoup pour ces informations
Bientôt je maîtriserai PowerBuilder !!
Hors ligne