![]() |
DAIGL - Delphi
Auteur : Jean HENRI |
Les liens ODBC sont mémorisés sur une machine Windows dans la base de registre à partir de la Clé racine HKEY_CURRENT_USER et sous la clé \Software\ODBC\ODBC.INI
Pour pouvoir créer (et supprimer) un lien ODBC par programme, il faut commencer par créer un lien ODBC à l'aide de l'administrateur de liens ODBC. Par exemple pour créer un lien vers une base MySql :
Ensuite vous utiliser l'éditeur de base de registre pour aller consulter la définition de votre lien sous la clé correspondant au nom Windows DSN (ici BaseMonnaie) :
Vous obtenez donc dans la fenêtre de droite toutes les informations nécessaires :
Base MySql Windows DSN Name : BaseMonnaie Nom ContenuDatabase monnaie Description Driver C:\WINNT\System32\myodbc.dll Option 0 Password dollar Port Server serveurjh Stmt User banquier Création d'un lien ODBC par programme
Vous pourrez trouver d'autres explications (notamment la création d'un alias BDE) sur la page de téléchargement du driver ODBC MySql (voir la release note, version locale)
Sous Delphi, vous pouvez alors écrire les procédures suivantes :
procedure CreerLienODBCMySql(var AliasODBC : string);
var
Reg : TRegistry;
NomLien : string;
NumLien : word;
begin
// Création d'un objet TRegistry
Reg := TRegistry.Create;
// Choix de la clé de registre
Reg.RootKey := HKEY_CURRENT_USER;
// Fabrication d'un nom de lien ODBC qui n'existe pas déjà
NumLien := 0;
repeat
NumLien := NumLien+1;
NomLien := AliasODBC+inttostr(NumLien);
until not Reg.KeyExists('\Software\ODBC\ODBC.INI\'+ NomLien);
Reg.OpenKey('\Software\ODBC\ODBC.INI\'+ NomLien,True);
// On indique au programme appelant le nom ODBC qui a été créé
AliasODBC := NomLien;
// Initialisation du lien ODBC
Reg.WriteString('Database', 'Monnaie');
Reg.WriteString('Description', '');
Reg.WriteString('Driver', 'C:\WINNT\System32\myodbc.dll');
Reg.WriteString('Option', '0');
Reg.WriteString('Password', 'dollar');
Reg.WriteString('Port', '');
Reg.WriteString('Server', 'serveurjh');
Reg.WriteString('Stmt', '');
Reg.WriteString('User', 'banquier');
// Enregistrement du lien dans les Data Sources d'ODBC
Reg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
Reg.WriteString(NomLien, 'MYSQL');
// Fin de la création du lien ODBC
Reg.CloseKey;
Reg.Free;
end;procedure SupprimerLienODBC(var AliasODBC : string);
var
Reg : TRegistry;
begin
// Création d'un objet TRegistry
Reg := TRegistry.Create;
// Choix de la clé de registre
Reg.RootKey := HKEY_CURRENT_USER;
// Suppression du lien ODBC
Reg.DeleteKey('\Software\ODBC\ODBC.INI\' + AliasODBC);
// Suppression de l'enregistrement du lien ODBC
Reg.OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources', True);
Reg.DeleteValue(AliasODBC);
// Fin de la suppression du lien ODBC
Reg.CloseKey;
Reg.Free;
inherited;
end;La création du lien ODBC se fera de préférence sur l'événement OnCreate de votre Module de Données, tandis que la suppression du lien ODBC se fera sur l'événement OnDestroy de votre Module de Données.
Après la création du lien, vous devez penser à mettre à jour le nom ODBC qui a été complété dans la procédure CreerLienODBCMySql dans votre composant TDataBase.
L'activation des composants utilisant directement votre lien ODBC (TDataBase, TTable, TQuery, ...) pourra se faire elle aussi dans votre Module de Données, après la création du lien ODBC ou à tout autre endroit de votre appli (en étant certain que le lien ODBC est bien créé).
Page créée le 12 déc 2002
Mise à jour le 12 déc 2002
auteur : Jean HENRI