IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] [ODBC] Référencer une base de données avec vb


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut [VB6] [ODBC] Référencer une base de données avec vb
    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...

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 40
    Points : 1 880
    Points
    1 880
    Par défaut
    Tu peux définir un DSN vers ta base Access. Puis utiliser ce DSN dans ta chaine de connexion sous VB.

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    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 !

  4. #4
    Membre averti
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Points : 330
    Points
    330
    Par défaut
    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

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    En tout cas c'est sympa de m'avoir fait parvenir cette "voie" que je vais m'empresser d'étudier par ailleurs !

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    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 :
    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"
    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 !!!


    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 :
    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"
    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
    [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 :
    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"
    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
    [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 !

  7. #7
    Membre averti
    Avatar de Rami
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 177
    Points : 330
    Points
    330
    Par défaut
    Bien jouer

    je finis mon interface, et je me met à la base de registre

    et merci pour ton post tout bien détaillé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détachement d'une base de données SQL SERVER avec du code VB6
    Par seyiv dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/05/2009, 18h57
  2. Réponses: 4
    Dernier message: 06/05/2009, 11h55
  3. Réponses: 2
    Dernier message: 11/04/2007, 15h13
  4. Réponses: 1
    Dernier message: 23/01/2007, 12h06
  5. Réponses: 1
    Dernier message: 24/11/2005, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo