Connaissez-vous un moyen de référencer une base de données dans ODBC par exemple Access de manière programmatique, çàd sans se le taper à la pogne ???? Par exemple sous VB6...
Connaissez-vous un moyen de référencer une base de données dans ODBC par exemple Access de manière programmatique, çàd sans se le taper à la pogne ???? Par exemple sous VB6...
Tu peux définir un DSN vers ta base Access. Puis utiliser ce DSN dans ta chaine de connexion sous VB.
Justement j'aimerai ne pas avoir à définir ce DSN à la main en allant dans le gestionnaire ODBC ... je voudrais par exemple faire une petite appli qui écrive ce DSN dans ODBC, à la limite c'est pas forcément une appli qu'il me faut mais par exemple un fichier batch, ou encore un fichier texte avec une extension zarbi qui renseigne le gestionnaire ODBC automatiquement, simplement en cliquant dessus comme ça se passe par exemple pour les fichiers .reg qui renseignent la base de registre !
Hello
je me posais la meme question et je surveillais donc les reponses a ce post...
et rien...
alors voila une piste un peu tardive qui je l'espere pourra t'aider
il existe des fichier DSN, ils se trouvent là:
C:\Program Files\Common Files\ODBC\Data Sources
crées en un ou deux avec le ODBC Data Source Manager pour voir leur structure (ouvre avec notepad)
Donc pour ton appli, au lieu de faire une DSN user ou systeme comme d'hab, tu crée un DSN file
a l'installation de ton appli tu copies ton fichier DSN au bon endroit et ca doit marcher. je te promet rien, il faut tester
enfin, j espere que c'est bon car je compte bien faire comme ca!
Si tu a eu une autre piste, tiens moi au courant...
sinon toute aide est la bienvenue
En tout cas c'est sympa de m'avoir fait parvenir cette "voie" que je vais m'empresser d'étudier par ailleurs !
Bon à force de chercher j'ai enfin trouvé !!!!!!!!
Comme tu m'as indiqué la bonne voie à suivre je vais te faire une synthèse de ce que j'ai appris à force de fouiner dans la base de registre ...
En fait tout repose sur la base de registre, ce dont je me doutais, en recherchant le chemin que tu m'avais indiqué : "c:\Program Files\Common Files \ODBC\Data Sources" je suis tombé sur un certain nombre de clés du registre et après quelques tests j'ai compris comment faire pour enregistrer automatiquement une base de données dans ODBC ainsi que quelques subtilités. Préparez vous ça va être long !
Tout d'abord comme il s'agit du registre il faut que vous sachiez déjà comment y récupérer une valeur ou en insérer/modifier une. Là-dessus le forum devrait être suffisamment prolixe, je ne ferai donc pas de cours ici !
Il y a trois façons d'enregistrer une base de données dans ODBC :
1e façon - déclarer la base comme source de données fichier (un fichier DSN) en copiant la base de données dans un répertoire spécial, pour y faire appel ensuite via ADO la ConnectionString devra être "DSN=toto.mdb", pour retrouver ce fameux répertoire ou pour modifier son chemin il faut faire appel à la clé suivante :
Défaut de cette solution, il faut soit copier sa base de données quelque part sur la machine du client (ce qui n'est pas forcément faisable ni forcément souhaitable), soit changer le répertoire des sources DSN pour qu'il pointe sur celui qui contient votre base, mais alors là si le client avait défini d'autres sources DSN il peut leur dire au revoir !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC File DSN] "DefaultDSNDir"="C:\\Program Files\\Fichiers communs\\ODBC\\Data Sources"
2e façon - déclarer la base comme source de données utilisateur sur la machine du client, seul le profil courant pourra accéder à la source de données, c'est bien, et à la fois c'est pas bien si vous voulez que tout le monde puisse accéder à votre base, à vous de choisir !
Pour ce faire il faut procéder en deux étapes :
1. enregistrer les paramètres de la connection ODBC à votre base de données, les paramètres sont divers : le type de pilote ODBC, son chemin, la taille du buffer, le délai d'attente avant déconnexion de la base, etc... et bien évidemment le chemin vers votre base de données, ici par exemple "c:\toto.mdb", le nom du DSN étant "test2", voice les clés à renseigner :
2. donner un nom pour la source de données et un pilote, le DSN sera donc "test2" (il faut qu'il corresponde au nom que vous avez donné à la clé précédemment), pour faire appel à la base dans ADO la ConnectionString doit être "DSN=test2"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\test2] "Driver"="C:\\WINNT\\System32\\odbcjt32.dll" "DBQ"="C:\\toto.mdb" "DriverId"=dword:00000019 "FIL"="MS Access;" "SafeTransactions"=dword:00000000 "UID"="" [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\test2\Engines] [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\test2\Engines\Jet] "ImplicitCommitSync"="" "MaxBufferSize"=dword:00000800 "PageTimeout"=dword:00000005 "Threads"=dword:00000003 "UserCommitSync"="Yes"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources] "test2"="Microsoft Access Driver (*.mdb)"
3e façon - déclarer la base comme source de données système sur la machine du client, ça marche comme précedemment mais tout le monde pourra accéder à cette base (toujours "c:\toto.mdb") avec la ConnectionString suivante "DSN=testAlf"
Pour ce faire il faut aussi procéder en deux étapes :
1. enregistrer les paramètres de la connection ODBC à votre base de données, les clés ne se trouvent logiquement plus au même endroit :
2. donner un nom pour la source de données et un pilote, le DSN sera donc "testAlf" (il faut qu'il corresponde au nom que vous avez donné à la clé précédemment), pour faire appel à la base dans ADO la ConnectionString doit être "DSN=test2"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\testAlf] "Driver"="C:\\WINNT\\System32\\odbcjt32.dll" "DBQ"="C:\\toto.mdb" "DriverId"=dword:00000019 "FIL"="MS Access;" "SafeTransactions"=dword:00000000 "UID"="" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\testAlf\Engines] [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\testAlf\Engines\Jet] "ImplicitCommitSync"="" "MaxBufferSize"=dword:00000800 "PageTimeout"=dword:00000005 "Threads"=dword:00000003 "UserCommitSync"="Yes"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources] "testAlf"="Microsoft Access Driver (*.mdb)"
Enfin dernier commentaire, j'ai essayé un chemin sur une machine distante (genre "\\totoserver\mabase\toto.mdb") et ça a l'air de marcher (alors que si on passe par le gestionnaire ODBC à la pogne il nous force à mapper le chemin réseau sur une lettre de lecteur virtuel ...).
Voilà c'est tout ... enfin pour les courageux qui ont tout lu !
Bien jouer
je finis mon interface, et je me met à la base de registre
et merci pour ton post tout bien détaillé
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager