Requete dynamique dans Microsoft Query

Fermé
Mica - 3 mai 2005 à 12:46
 patrick - 6 févr. 2008 à 22:46
Salut,

quelqu'un saurait-il comment créer une requete SQL dynamique sous Microsoft Query ?

Je m'explique:
j'utilise Microsoft Query pour rappatrier sous Excel diverse infos issues d'une table en liaison ODBC.
Mais je veux pouvoir définir les clauses "where" de cette requete directement à partir de formulaires excel ou autres.

Un exemple:
J'utilise Microsoft query pour la requete suivante:

"SELECT numero, date, totalht, totalttc
FROM facture"

Mais je voudrais qu'a partir d'excel(ou d'une form VBA peu importe), je puisse ajouter un

WHERE devise='EUR' ou
WHERE devise='USD'

en fonction du choix fait dans la form.

Je précise que l'utilisateur qui consultera le resultat de la requete n'est pas informaticien et ne sait pas manipuler Microsoft Query, donc je veux que tout soit transparent pour lui, que tout soit fait à partir d'Excel...

Merci

4 réponses

random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
4 mai 2005 à 10:47
tu t'inspires de ceci
tu crées ta requête normalement et tu l'enregistres avec devise euro
ensuite tu lances l'enregistreur de macro et tu fais données
externes et tu modifies euro à USD
tu pousuis jusqu'à la récup des données
tu arrêtes l'enregistrement
examines ta macro tu vas trouver une phrase du genre
"select nom champ etc
tu repères devise='USD' tu remplaces par
devise'" & mavar &"'
en début de macro tu remplaces sub macrox()
par sub marreq(mavar as string)
et au lieu de lancer ta requete
tu fais marreq(champdeviseduformulaie)
1
mica94 Messages postés 37 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 22 novembre 2012
3 mai 2005 à 19:44
un petit up ;)
0
mica94 Messages postés 37 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 22 novembre 2012
4 mai 2005 à 12:17
Je vais tester !
Si ça marche je t'envoie une boite de chocolats !!!!

merci !
0
il était bon le chocolat ?
0