OVH Cloud OVH Cloud

Liaison ODBC avec SQL Server 2000

1 réponse
Avatar
Bernard
Bonsoir,

voila mon problème,

dans ma feuille Excel je récupère, via VB, des données d'une table d'une bd
SQL2OOO.
Tout va bien, cependant quand, pour x raisons, SQLSERVER n'est pas lancé
j'obtiens au
bout d'un temps assez long le message suivant dans une fenêtre ayant pour
titre : Connexion à
Microsoft SQL Server "Echec lors de la connexion, Etat SQL'0100' Erreur SQL
Server 2 [Microsoft]
[ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect())"
Rien de plus normal, seulement je voudrais intercepter cette erreur.
err.number est toujours à 0, ODBCErrors.Count est toujours à 0,
OLEDBErrors.Count est toujours à 0
Si j'appelle la fonction SQLError pour récupérer le code erreur il me dit
fonction non définie

Donc comment faire
d'avance merci à tous

voila le code qui fonctionne

ChaineDeConnexion = "ODBC;DRIVER=SQL Server;SERVER=" & Serveur & _
";UID=Administrateur;APP=Microsoft® Query;WSID=" &
Serveur & _
";DATABASE=" & LaBase & ";Trusted_Connection=Yes"
LaLigne = 2
Do While Cells(LaLigne, 2) <> ""
With ActiveSheet.QueryTables.Add(Connection:=ChaineDeConnexion,
Destination:=Cells(LaLigne, 3))
.CommandText = "SELECT T_SAL.Nom, T_SAL.Prenom"
.CommandText = .CommandText & Chr(13) & "" & Chr(10) & "FROM " & LaBase &
".dbo.T_SAL T_SAL"
.CommandText = .CommandText & Chr(13) & "" & Chr(10) & "WHERE
(T_SAL.MatriculeSalarie='"
.CommandText = .CommandText & Cells(LaLigne, 2) & "')"
.Name = "Recherche des Noms"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With

1 réponse

Avatar
michdenis
Bonjour Bernard,

Tu n'es pas très explicite sur le type de code que tu utilises pour créer ta connexion à ta base de données.

As-tu essayé quelque chose dans le genre, tu dois adapter le nom ou l'index des objets selon ton application.

Exemple en provenance de l'aide d'excel

With Worksheets(1).QueryTables(1)
.Refresh
If Application.ODBCErrors.Count > 0 Then
Set er = Application.ODBCErrors(1)
MsgBox "The following error occurred:" &
er.ErrorString & " : " & er.SqlState
Else
MsgBox "Query complete: all records returned."
End If
End With


Salutations!




"Bernard" a écrit dans le message de
news:
Bonsoir,

voila mon problème,

dans ma feuille Excel je récupère, via VB, des données d'une table d'une bd
SQL2OOO.
Tout va bien, cependant quand, pour x raisons, SQLSERVER n'est pas lancé
j'obtiens au
bout d'un temps assez long le message suivant dans une fenêtre ayant pour
titre : Connexion à
Microsoft SQL Server "Echec lors de la connexion, Etat SQL'0100' Erreur SQL
Server 2 [Microsoft]
[ODBC SQL Server Driver][Shared Memory]ConnectionOpen (Connect())"
Rien de plus normal, seulement je voudrais intercepter cette erreur.
err.number est toujours à 0, ODBCErrors.Count est toujours à 0,
OLEDBErrors.Count est toujours à 0
Si j'appelle la fonction SQLError pour récupérer le code erreur il me dit
fonction non définie

Donc comment faire
d'avance merci à tous

voila le code qui fonctionne

ChaineDeConnexion = "ODBC;DRIVER=SQL Server;SERVER=" & Serveur & _
";UID­ministrateur;APP=Microsoft® Query;WSID=" &
Serveur & _
";DATABASE=" & LaBase & ";Trusted_Connection=Yes"
LaLigne = 2
Do While Cells(LaLigne, 2) <> ""
With ActiveSheet.QueryTables.Add(Connection:=ChaineDeConnexion,
Destination:Îlls(LaLigne, 3))
.CommandText = "SELECT T_SAL.Nom, T_SAL.Prenom"
.CommandText = .CommandText & Chr(13) & "" & Chr(10) & "FROM " & LaBase &
".dbo.T_SAL T_SAL"
.CommandText = .CommandText & Chr(13) & "" & Chr(10) & "WHERE
(T_SAL.MatriculeSalarie='"
.CommandText = .CommandText & Cells(LaLigne, 2) & "')"
.Name = "Recherche des Noms"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With