à l'aide : requete SQL : "FROM" variable ?

à l'aide : requete SQL : "FROM" variable ? - SQL/NoSQL - Programmation

Marsh Posté le 19-09-2005 à 00:30:13    

Voila mon problème : j'ai un classeur Excel (monclasseur) et une base de données (mabase) dans le même dossier.
Ils sont tous les deux dans : C:\mondossier.
Du classeur Excel, je fais une requête (marequete) sur une table de ma base (matable) par du code VBA.
(marequete est également dans C:\mondossier)
Comme je transporte mon dossier avec ma clé USB, je veux pouvoir faire ma requete egalement sur F:\mondossier, ou sur G:\mondossier.
J'ai donc un variable sur mon code VBA :
 
Set recup = Sheets("Import" )
chemin = ThisWorkbook.Path
        With recup.QueryTables.Add(Connection:= _
        "FINDER;" & chemin & "\marequete.dqy", Destination:=Range("A1" ))
etc...........
 
mais le code SQL de marequete, lui , n'a pas de variable dans le FROM :
 
SELECT matable.Société, matable.Prixtotal,  
FROM `C:\mondossier\mabase`.matable
 
Comment faire trouver à la requete la bonne lettre racine ?
par exemple : FROM `F:\mondossier\mabase`.matable.
 
Pour l'instant je n'ai trouvé que la solution de créer plusieurs requetes identiques (C_requete, F_requete, etc...) en changeant à chaque fois le FROM C:\ en FROM F:\ ou FROM G:\, etc.
 
De plus, si je place mon dossier dans un autre dossier, ca ne marche plus, evidemment.
merci d'avance pour vos réponses  :) (je précise que je ne suis pas très doué en SQL)   :o


Message édité par Colegram le 19-09-2005 à 01:06:26
Reply

Marsh Posté le 19-09-2005 à 00:30:13   

Reply

Marsh Posté le 19-09-2005 à 08:37:13    

salut
ton probleme releve plus du VBA que du SQL
premierement il me semble que la syntaxe de la requete est plutot :
SELECT teschamps FROM Tatable in 'chemin\tabase' (je pars sur le principe que tu utilises Access hein?)
 
ensuite tu pourrais par exemple avant ta requete tester la connexion/non connexion de ta cle USB (je ne sais pas comment mais ca doit pouvoir se faire faut chercher un peu) et ainsi generer dynamiquement ton chemin d'acces a la base
 
bonne chance

Reply

Marsh Posté le 19-09-2005 à 09:22:06    

Je te remercie pour ta réponse, Betsamee.
J'utilise access effectivement.
Pour ce qui est du libellé du code de marequete, j'ai changé les noms mais la forme est bonne puisque j'ai crée la requete a partir du menu d'Excel (Données > Données externes > Créer une requête) et j'ai arrangé le code ensuite, et ça marche tant que ma base et mon classeur excel ont le même chemin d'accès que celui defini par ma requête à l'origine.
J'ai vu qu'effectivement on pouvait recréer la requête à chaque fois à partir du code VBA, mais là ça depasse mes compétences.
En fait, une de mes questions est : est-ce qu'on peut introduire une variable de chemin d'accès dans un SELECT/FROM de requête ? et comment ?
Par exemple, est-ce que je peux ecrire ma requête comme tu l'as fait :
SELECT teschamps FROM Tatable in 'chemin\tabase'  
quel serait le libellé de "chemin" ? (du style : ThisWorkbook.Path en équivalent VBA)


Message édité par Colegram le 19-09-2005 à 09:50:18
Reply

Marsh Posté le 19-09-2005 à 17:19:45    

J'ai essayé (sans changer la lettre racine) de libeller le FROM de la façon que tu m'as indiquée, et ça me dit "La requête SQL ne peut pas être representée graphiquement".
Voilà le libellé tel qu'il est après la création "assistée" de la requête :
FROM `C:\mondossier\mabase`.matable matable
C'est le libellé exact (avec le point et la repetition de 2 fois matable à la fin)
Voilà ce qu'il me refuse :
FROM matable IN `C:\mondossier\mabase`
J'ai essayé avec et sans des guillemets, des apostrophes, des "accents graves", avec un point après mabase, rien n'y fait....
A propos, cette requête est créee avec Microsoft Query, est-ce une limitation de cette application ?

Reply

Marsh Posté le 20-09-2005 à 14:13:40    

Salut.
 
Je n'y connais absolument rien ni en VBA ni en Acces mais il me semblerait plutôt logique que tu puisses utiliser comme chemin, le répertoire courant !
FROM matable IN `.\mabase` en considérant que tous tes fichiers sont dans le même répertoire bien sur.
 
C'est juste une idée comme ça pour faire avancer le 'schmilblick'


---------------
Je me lève de bonne humeur
Reply

Marsh Posté le 20-09-2005 à 16:50:11    

Ben, oui, moi aussi je le pensais !
J'ai pris soin justement de mettre tous mes fichiers dans le même repertoire pour lui faire retrouver le chemin à partir de celui de la requete.
Mais de toute façon il refuse obstinément la forme  : FROM....IN....

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed