![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: mai 2006
Messages: 46
|
Bonjour à tous,
Mon but est de trouver le moyen de réaliser, via du vba sous Excel, une requète permettant d’afficher un contenu filtré issue d’une base de données (sous Acces) Or, le chemin de la base de données n’est pas fixe, puisque le programme que je réalise sera integré dans un logiciel installé sur un serveur. Ainsi, chacun des utilisateurs, ayant chacun leur propre base de données, devra pouvoir utiliser le logiciel automatiquement. Ainsi, au préalable, un utilisateur devra indiquer le chemin de sa base de données dans un fichier .ini sur son propre ordinateur. (fichier .ini se situant dans le même repertoire que le fichier Excel contenant le code) Voici les pistes que j’ai abordé : Piste1 : Une fois le fichier excel ouvert par l’utilisateur, lecture du chemin de la base de donné, écrit dans le .ini. Ensuite je mets ce chemin dans une variable x de type string: Code :
Open ThisWorkBook.Path & "\" & " monfichier.ini" For Input As #1 Line Input #1,x Code :
With ActiveSheet.QueryTables.Add(Connection :=Array((Array_
" ODBC ;DSN=MS Acces Database ;DBQ= x ; " _
),Array(_
" DriverID=25 ;FIL=MS Acces ;MaxBufferSize=2048 ;PageTimeout=5 ; " _
)),Destination:=Range(" A1" ))
.CommandText = Array(_
" SELECT ‘ panne’ etc…(arrive le code classique d’une requète, FROM blabla, et autres paramètres)
Piste2 : Pour contrer ce problème, j’ai donc décidé dans le programme de changer le repertoire courant. Dans le fichier .ini, je vais lire le repertoire contenant la base de données, puis je remplace le repertoire courant par cette adresse. : Code :
Chdrive " la lettre du disc contenant la base de données" ChDir " le chemin du repertoire de la base de données " Mais encore problème…Après l’instruction ChDrive il faut écrire une lettre représentant le nom du disc contenant la base de données (C, D etc…) Or dans mon cas, sur le réseau, les disc durs, de nom C, E etc... ont des « surnoms » (je connais pas le terme exacte). En fait C : équivaut à \\Vps\test et E: équivaut à \\Vpc01\essai (par exemple), et ce sont ces surnoms qui doivent être utilisés (vive les complications…) Or ChDir "\\Vps\test" ne fonctionne pas. Donc il m’est impossible de changer le repertoire courant…et donc ma méthode2 tombe à l’eau… Quelqu’un sait il donc : -Soit substituer à x son contenu dans la requète (méthode 1) -Soit Changer le repertoire courant, avec des discs ayant des noms commencant par \\ (Méthode2) Merci de votre lecture , et de vos éventuelles propositions ! A bientôt PS: je n'ai pas trouvé de sujets similaires |
|
|
|
|
|
#2 (permalink) |
![]() |
Déjà piste 1 :
pour utiliser une varible pour générer ta requête il faut la sortir des " ... du genre : Code :
With ActiveSheet.QueryTables.Add(Connection :=Array((Array_ " ODBC ;DSN=MS Acces Database ;DBQ=" & x & " ; " _ ),Array(_
__________________
bbil : Impératif "A LIRE AVANT DE POSTER" |
|
|
|
|
![]() |
![]() |
||
[VBA-E] Requète SQL avec chemin de base de données variable
|
||
| Outils de la discussion | |
|
|