Fichier Excel (avec MSDAORA) fonctionnant sur un poste mais pas sur un autre
ajor
Messages postés90Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention19 août 2020
-
24 juin 2010 à 12:14
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
24 juin 2010 à 16:24
Bonjour !
J'ai un fichier Excel 2003 qui appelle une base Oracle 10g. ça fonctionne très bien sur mon poste Windows XP.
Ensuite, je l'appelle d'un deuxième poste (Windows XP, client Oracle 10g), ça ne marche pas .
Quand j'ouvre le fichier, il me dit :
3709
Impossible d'utiliser cette connexion pour effectuer cette opération. Elle est fermée ou non valide dans ce contexte.
Pourtant ce deuxième poste est plus récent, et le client Oracle fonctionne bien. D'ailleurs la même requête retourne un bon résultat dans le SQLplus Worksheet.
On m'a conseillé d'installer le MDAC 2.8, mais quand j'essaie de l'installer, il me dit :
MDAC2.8 n'est pas compatible avec cette version de Windows. Toute ses fonctionnalités font déjà partie intégrante de Windows.
Alors quel est le problème à votre avis ?
PS : au cas où ça peut servir, voici le code VBA :
Option Explicit
Public cN As ADODB.Connection
Public rs As ADODB.Recordset
Public Function conNect() As Boolean
On Error GoTo conNect_Err
Set cN = New ADODB.Connection
cN.ConnectionString = "Provider=msdaora;Data Source=IOUI;User Id=xxxxxx;Password=xxxxxx;"
cN.Open
conNect = True
Exit Function
conNect_Err:
MsgBox Err.Number & vbCr & Err.Description
conNect = True
End Function
Public Function DeconNect() As Boolean
On Error Resume Next
cN.Close
Set cN = Nothing
End Function
Private Sub Workbook_Open()
Dim strSQL As String
Dim i As Integer
Dim j As Integer
On Error GoTo Workbook_Open_Err
Feuil1.Cells(1, 1) = "id_indice"
Feuil1.Cells(1, 2) = "cote"
If conNect() = True Then
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
strSQL = ""
strSQL = strSQL & "select cote.indice ind99, "
strSQL = strSQL & " cote.cote_actuelle cot99 "
strSQL = strSQL & " from t_detail_vin pr, "
strSQL = strSQL & " type_vin vin, "
strSQL = strSQL & " (select ind.id_tvin, "
strSQL = strSQL & " ind.milesime millesime, "
strSQL = strSQL & " c.cote cote_actuelle, "
strSQL = strSQL & " ind.id_indice indice "
strSQL = strSQL & " from t_indices ind, "
strSQL = strSQL & " cote_annuelle c "
strSQL strSQL & " where ind.id_indice c.id_indice"
strSQL = strSQL & " and ind.format in('Bouteille') "
strSQL = strSQL & " and c.annee='2010' "
strSQL = strSQL & " and ind.id_indice not in ('1','2','3') "
'strSQL = strSQL & " and ind.id_indice < '50') cote "
strSQL = strSQL & " ) cote "
strSQL strSQL & " where vin.id_tvin pr.id_tvin "
strSQL strSQL & " and pr.milesime cote.millesime "
strSQL = strSQL & " and vin.id_tvin=cote.id_tvin "
strSQL = strSQL & " and vin.proprietaire not in ('Indifferent') "
strSQL = strSQL & " and vin.proprietaire is not null "
strSQL = strSQL & " order by cote.indice"
rs.Open strSQL, cN, adOpenForwardOnly, adLockOptimistic
If rs.RecordCount > 0 Then
j = 1
i = 1
Do While Not rs.EOF And Not rs.BOF
i = i + 1
Feuil1.Cells(i, j) = rs("ind99")
Feuil1.Cells(i, j + 1) = rs("cot99")
rs.MoveNext
Loop
End If
DeconNect
Else
'blablabla
End If
Exit Sub
Workbook_Open_Err:
MsgBox Err.Number & vbCr & Err.Description
End Sub
A voir également:
Fichier Excel (avec MSDAORA) fonctionnant sur un poste mais pas sur un autre
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 juin 2010 à 12:42
Salut
Après un ordre de connexion à une DB - surtout quand s'agit d'une DB située sur un réseau - il est bon de tester si la connexion est bonne :
cN.Open
' Attend la fin de connexion (ou erreur)
Do While cN.State = adStateConnecting
DoEvents
Loop
' Mémoirise True uniquement si la connexion est ouverte
conNect CBool(cN.State adStateOpen)
Ca te permettra de savoir si la connexion se fait correctement.
D'ailleurs, à quoi te sert de renvoyer un True à ta fonction conNect puisque même en cas d'erreur, tu renvoies True ? ça n'a pas de sens. Normal donc que tu aies des erreurs ensuite puisque c'est au niveau de la connexion que ça semble déconner.
Je vois que tu n'as toujours pas modifié ta structure de Select.
Ca sert à quoi de poser des questions si tu n'appliques pas les solutions ? Bizarre
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 juin 2010 à 16:24
Bah parce que tu es une autre machine et qu'il faut être sûr de la connectique et des logiciels avant d'incriminer les programmes, pardi !
Tu ne veux déjà pas vérifier si la connexion se fait correctement après la commande Open, alors que c'est par là qu'il faut commencer.
L'erreur dont tu parles dans ta question initiale n'est qu'une conséquence d'un problème de connexion, comme expliqué dans le message de l'erreur.
Mieux vaudrait se concentrer sur les raisons du problème de connexion, non ?
Mais bon, si ça t'embête de faire ces simples vérifs ...