Public Function ConnectSqlServer(ServerName As String, DBName As String) As Boolean ' Renvoie True si connexion Ok On Error GoTo Erreur With cnnSqlServer ' Referme si déjà ouverte If .State <> adStateClosed Then .Close ' Paramétrage connexion .ConnectionTimeout = 25 .Provider = "sqloledb" .Properties("Data Source").Value = ServerName .Properties("Initial Catalog").Value = DBName If IsSqlServerLocal(ServerName) Then ' SQL Server sur la même machine : Authentification Windows .Properties("Integrated Security").Value = "SSPI" Else ' SQL Server dédié .Properties("Locale Identifier").Value = 1033 ' Anglais .Properties("User ID").Value = sUserID .Properties("Password").Value = sPassword End If On Error Resume Next ' Connexion .Open ' Attend connexion terminée Do While .State = adStateConnecting DoEvents Loop On Error GoTo 0 ' Au final, renvoie True si on est bien ouvert ConnectSqlServer CBool(.State adStateOpen) End With Fin: Exit Function Erreur: M.LogOnly "#### ConnectSqlServer - Erreur " & CStr(Err.Number) & " - " & Err.Description Resume Fin End Function
Public Function IsSqlServerLocal(NomDuServeur As String) As Boolean ' Renvoie True si le SQL Server est installé sur la même machine ' que celle qui veut faire des requètes (ici) ' Utile pour le mode de connexion et la conversion des dates Dim sTemp As String sTemp = myComputerName IsSqlServerLocal CBool(StrComp(NomDuServeur, sTemp, vbTextCompare) 0) End Function Public Function myComputerName() As String ' Renvoie le nom du poste Dim sTemp As String Dim r As Long sTemp = String(MAX_COMPUTERNAME_LENGTH, Chr$(0)) r = MAX_COMPUTERNAME_LENGTH + 1 Call GetComputerName(sTemp, r) sTemp = Left$(sTemp, r) myComputerName = sTemp End Functionqui nécessitent ces déclarations :
Private Const MAX_COMPUTERNAME_LENGTH As Long = 31 Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public cnnSqlServer As ADODB.Connection ' Accès à la database SQL Server
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question