OVH Cloud OVH Cloud

Chaine de connexion dynamique

1 réponse
Avatar
luc_san
Bonjour,
Je souhaite mon application Access 2000, au lancement, se connecte sur
la base dont les références (nom serveur, base de données, User Id...)
sont dans un fichier .ini.

Est-ce quelqu'un peut m'aider SVP ?

J'utilise ADO et SQLServer 2000.

Merci

1 réponse

Avatar
Rv
Salut,

Voici une chaîne de connexion OLEDB vers SQL Server. Ceci sans utiliser
la sécurité intégrée de windows NT, mais avec un nom d'utilisateur et mot de
passe spécifiques:

Provider=SQLOLEDB.1;Password=passUtil;Persist Security
Info=True;User ID=nomUtil;Initial Catalog=nomBase;Data Source=nomServeur

Supposons que le fichier .ini contienne les informations suivantes:

[Mot de passe]
password = passUtil
[Utilisateur]
User ID = nomUtil
[Nom base]
Initial Catalog = CDG-GRH
[Nom serveur]
Data Source = srv-olap

Pour construire dynamiquement la chaine de connexion à partir d'un
fichier .ini on peut utliser les fonctions suivantes:

----------------------------------------------------------------------------
---------------------
' Recherche une clé dans un fichier d'ini et retourne la ligne suivante
' retourne chaine vide si pb
Function chercheCleIni(strFichier As String, strCle As String) As String
Dim strLigne As String

On Error GoTo gereErr
chercheCleIni = ""

Open strFichier For Input As #1

Do While Not EOF(1)
Line Input #1, strLigne
If strLigne = strCle And Not EOF(1) Then
Line Input #1, chercheCleIni
Exit Do
End If
Loop
Close #1
Exit Function

gereErr:
On Error Resume Next
Close #1
MsgBox ("Erreur lors de la lecture du fichier INI : " & Err.Description)
End Function


' Retourne la chaine de connexion ou chaine vide si pb
Function construitChaineCon(strFichier As String) As String
Dim strChaine As String
Dim strResult As String

construitChaineCon = ""
strResult = "Provider=SQLOLEDB.1;"

' Lecture password
strChaine = chercheCleIni(strFichier, "[Mot de passe]")
If strChaine = "" Then
MsgBox ("Pb lors de la lecture du mot de passe dans le fichier INI :
" & Err.Description)
Exit Function
End If
strResult = strResult & strChaine & ";Persist Security Info=True;"

' Lecture user id
strChaine = chercheCleIni(strFichier, "[Utilisateur]")
If strChaine = "" Then
MsgBox ("Pb lors de la lecture de l'utilisateur dans le fichier INI
: " & Err.Description)
Exit Function
End If
strResult = strResult & strChaine & ";"

' Lecture nom base
strChaine = chercheCleIni(strFichier, "[Nom base]")
If strChaine = "" Then
MsgBox ("Erreur lors de la lecture du nom de la base dans le fichier
INI : " & Err.Description)
Exit Function
End If
strResult = strResult & strChaine & ";"

' Lecture nom serveur
strChaine = chercheCleIni(strFichier, "[Nom serveur]")
If strChaine = "" Then
MsgBox ("Erreur lors de la lecture du nom du serveur dans le fichier
INI : " & Err.Description)
Exit Function
End If

strResult = strResult & strChaine
construitChaineCon = strResult

End Function
----------------------------------------------------------------------------
------------------------------------------------
Ensuite on peut trés bien créer une connexion par

Dim objConn as new adodb.connection
dim strConn as string

strConn = construitChaineCon("c:...fichierIni")
if strConn<>"" then
objconn.open strconn
else
' pb recup chaine conn
end if

A+

Rv

"San LUC" a écrit dans le message de
news:
Bonjour,
Je souhaite mon application Access 2000, au lancement, se connecte sur
la base dont les références (nom serveur, base de données, User Id...)
sont dans un fichier .ini.

Est-ce quelqu'un peut m'aider SVP ?

J'utilise ADO et SQLServer 2000.

Merci