PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 27-02-2009 10:01:57

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

[RESOLU] Argument pour le nom de table

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 :

Code: pb

SELECT :monChamp
FROM catOwner.nomtable

Je voulais donc tenter :

Code: pb

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

 

#2 27-02-2009 10:12:27

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Argument pour le nom de table

Bonjour,

Oui, c'est possible mais pas de cette façon, regarde la méthode GetSQLSelect et SetSQLSelect.

Hors ligne

 

#3 27-02-2009 12:17:40

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Argument pour le nom de table

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

 

#4 27-02-2009 13:13:57

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Argument pour le nom de table

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 :

Code: PB

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

 

#5 27-02-2009 14:54:38

micmx  
Membre Geek
Date d'inscription: 02-02-2009
Messages: 84
Pépites: 1,028
Banque: 1,383,846,119

Re: [RESOLU] Argument pour le nom de table

Oui c'est comme cela que j'ai procédé.

Merci beaucoup pour ces informations

Bientôt je maîtriserai PowerBuilder !!

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22