Chemin d'une base de données dans un fichier txt ou ini

miwbath Messages postés 2 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 20 février 2008 - 20 mai 2005 à 11:46
vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006 - 20 mai 2005 à 12:27
Bonjour à tous!!!!

Je suis un développeur débutant en Delphi. J'ai développé une application base de données (Interbase + DBExpress). Mon problème est le suivant. Après avoir renseigné la propriété Database (192.20.160.6:C:\Gestock\Gestock.GDB) du composant SQLConnect1 de DBexpress tout se passe bien à l'exécution car le fichier dbxconnections.ini est créé en local. Mais losque je transfère la base sur le poste dont l'adresse ip est 192.20.160.10, l'application ne reconnait plus le chemin de la base.

Question: Comment faire pour renseigner le chemin de la base dans un fichier txt ou ini en mode client/serveur. La base se trouvant sur le serveur et l'application sur les postes clients?


Merci de me donner des indications

1 réponse

vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
20 mai 2005 à 12:27
Personnellement, j'ai tout simplement enregsitrer l'adresse TCP/IP du
serveur dans un fichier ini qui est lu à chaque démarrage de
l'application client.

Puis j'adapte le nom des bases de données en fonction de ce qui est
récupéré dans l'ini. Dans mon cas, j'utilise 'localhost' pour le
serveur sur lequel je développe ou alors, chez les clients, le fichier
ini renseigne l'adresse tcp/ip du serveur interbase.

En fait je pousse plus loin la souplesse en ce sens où, le nom de
fichier de chacune des bases de données utilisées par le client et le
l'adressse du serveur qui héberge ces fichiers sont enregistrées dans
une table située sur le serveur référencé dans le fichier ini (array tt_db[i,j] dans mon exemple ci-dessous).

Donc si tu dois déplacer des bases de données sur une autre machine, tu n'as qu'un paramètre à changer.



Voici le code que j'utilise pour cela :

with dmInciBase.db_common do // l'objet TIBDatabase d'une des bases de données

begin

// La table qui contient les noms de fichiers et leurs serveurs a été lue précédemment et

stockées dans une array tt_db[i,j] où i = 1 dans le nom du ficheir gdb et i = 0 donne l'adresse du serveur IB

DatabaseName := 'd:\incimii\' + trim(tt_db[0,1]) + '.gdb';

// Déterminer si le serveur est local ou distant

if uppercase(trim(tt_db[0,0])) <> 'LOCALHOST' then

// si le client n'est pas exécuter sur la machine du serveur (pour le dévelloppement), il faut

ajouter l'adresse TCP/IP à la propriété DataBaseName


DataBaseName := trim(tt_db[0,0]) + ':' + DatabaseName;

// La suite concerne l'identification de l'utilisateur qui se connecte

LoginPrompt := False;

with params do

begin

Clear;

Add('user_name=' + ini_username);

Add('password=' + user_svr_password);

Add('sql_role_name=reader');

end;

end;

J'espère que j'ai été assez clair. Au sinon n'héiste pas.
Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
0
Rejoignez-nous