Requete SQL "dynamique"

Résolu
xelah Messages postés 13 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 26 avril 2006 - 13 avril 2006 à 11:08
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 14 avril 2006 à 16:10
Bonjour,

Je vais vous expliquer mon problème.
Un exemple fictif:

Dans une Form, il y a un combobox relié à une base A (avec comme champ Clio, Laguna, Safrane, etc...)

Ensuite, au cours de ce programme j'ai une requete SQL qui fait appel à une table DBLaguna ou DBSafrane,ou...

Mon problème est de dire dans ma requete quand il doit aller chercher tel table ou tel table.

Par exemple, j'ai renseigné un truc du style:

zz := concat('DB',combobox.items(combobox1.itemindex));

puis dans ma requete SQL:
SELECT * FROM zz ......

mais il me dit que la table zz n'existe pas....(ce qui est logique et pourtant)
donc je ne sais pas comment renseigner ma requete en fonction du choix fait en début de programme...

Auriez vous une idée????

2 réponses

cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
13 avril 2006 à 11:47
Salut,
C'est normal si tu écris ta requête comme cela en delphi car ta varible zz n'est pas interprété. Il suffirait de faire :
requete := concat('SELECT * FROM ', zz)
ensuiite tu execute requete sur ta table.
Bon courage.

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 avril 2006 à 16:10
non non non, ne surtout pas utiliser la fonction Concat qui degrade les performances comme c'est pas permis...

requette := 'SELECT * FROM DB'+ComboBox.Text+'...';

et de plus ce n'est pas : ComboBox.Items(ComboBox.ItemIndex);
mais : ComboBox.Items[ComboBox.ItemIndex];

bien sur la propriété Text de ComboBox prend la valeur de l'item selectioné. donc lire ComboBox.Text plutot qu'autre chose.
0
Rejoignez-nous