ajor
Messages postés90Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention19 août 2020
-
14 juin 2010 à 15:13
ajor
Messages postés90Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention19 août 2020
-
17 juin 2010 à 13:46
Bonjour à tous,
Parmi tous les post que je viens de lire à ce sujet , il y a apparemment plusieurs solutions, le problème, c'est que je comprends pas tout là dedans, je suis parti de ce code, qui apparemment ressemblait un peu à ce que je voulais.
Private Sub Form_Load()
Dim Cnn1 As ADODB.Connection, Cmd1 As ADODB.Command, MonRs As ADODB.Recordset
Set Cnn1 = New ADODB.Connection
With Cnn1
.Provider = "Microsoft.Jet.OLEDB.4.0;"
.ConnectionTimeout = 30
.Mode = adModeShareExclusive
.Open "Data Source=P:\Projet\Liaison_oracle.mdb ;User Id=azeaeaze; Password=azeaeaze"
End With
'par Connection.Execute
'Set MonRs Cnn1.Execute("SELECT INDLIG1 From G_INDIVIDU where nom'MARTINOT'", , adCmdText)
'MonRs.Close
'par command.execute
'Set Cmd1 = New ADODB.Command
'With Cmd1
' .ActiveConnection = Cnn1
' .CommandType = adCmdText
' .CommandText "SELECT INDLIG1 From G_INDIVIDU where nom'MARTINOT'"
'End With
'Set MonRs = Cmd1.Execute
'MonRs.Close
'par recordset.open
Set MonRs = New ADODB.Recordset
MonRs.Open "SELECT INDLIG1 From G_INDIVIDU where nom ='MARTINOT'", Cnn1, , , adCmdText
End Sub
Et là, je sèche. Auriez-vous une idée du problème ?
Petite question : lorsque je me connecte manuellement (par le menu d'Excel) je rentre le nom d'utilisateur, le mot de passe ainsi que le nom du serveur. Or je vois que dans ma fonction VBA, je ne renseigne pas ce nom de serveur. Je suppose qu'il faudrait le renseigner quelque part, mais où ?
ajor
Messages postés90Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention19 août 2020 17 juin 2010 à 13:46
Pacadebord m'a fournit en message privé le code qui fonctionne bien dans mon cas, je le mets ici :
(le code est situé dans ThisWorkbook)
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=OIUO;User Id=xxxxx;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
If conNect() = True Then
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
strSQL "select email, prenom from g_individu where nom'JORANDO'"
rs.Open strSQL, cN, adOpenForwardOnly, adLockOptimistic
If rs.RecordCount > 0 Then
j = 1
i = 0
Do While Not rs.EOF And Not rs.BOF
i = i + 1
Feuil1.Cells(i, j) = rs("email")
Feuil1.Cells(i, j + 1) = rs("prenom")
rs.MoveNext
Loop
End If
DeconNect
Else
'blablabla
End If
Exit Sub
Workbook_Open_Err:
MsgBox Err.Number & vbCr & Err.Description
End Sub
Bien sur, ca fonctionne si vous créez une référence à "Microsoft ActiveX Data Objects 2.X Library" dans le vba Excel...
Avec OLEDB Oracle, vous devez faire comme indiqué dans le site :
cs_pacadebord
Messages postés113Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention19 décembre 20112 15 juin 2010 à 11:46
ajor,
Vous devez choisir entre vous connecter à Oracle directement et vous connecter à une liaison de table Oracle dans une base Access. Mon précédant post concernait la première solution.
Dans votre code, il y a un mélange des deux...
ajor
Messages postés90Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention19 août 2020 15 juin 2010 à 12:55
Bon, il y a eu erreur de suppression d'un de mes messages.
En tout cas, j'essaie de faire une connexion directe à Oracle, sans passer par ma liaison Access :
Alors j'ai essayé celui-ci : Oracle Data Provider for .NET / ODP.NET
Using ODP.NET without tnsnames.ora
Public cN AS ADODB.Connection
Public rs AS ADODB.Recordset
Public Sub conNect()
SET cN = New ADODB.Connection
dbPath = Path
cN.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=202.123.177.25)(PORT=17711)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=IMXXP)));User Id=aeazeaz;Password=azeaze;"
cN.Open
End Sub
En exécutant, j'obtiens ce message d'erreur :
[Microsoft][Gestionnaire de pilotesODBC] Nom de source de données trop long
et en essayant Oracle Provider for OLE DB
Oracle XE, VB6 ADO
Code Visual Basic :
Public cN AS ADODB.Connection
Public rs AS ADODB.Recordset
Public Sub conNect()
SET cN = New ADODB.Connection
dbPath = Path
cN.ConnectionString = "Provider=OraOLEDB.Oracle;dbq=212.413.141.144:15211/XE;Database=Mabase;User Id=zerztze;Password=zeztzz;"
cN.Open
End Sub
J'obtiens l'erreur suivante :
ORA-12560: TNS: Erreur d'adaptateur de protocole
Il doit y avoir quelque chose qui cloche dans mon code, mais où ?
cs_pacadebord
Messages postés113Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention19 décembre 20112 15 juin 2010 à 16:04
Si vous développez et souhaitez vous connecter à une base distante Oracle XE, il me semble qu'il faut installer "Oracle database XE client" sur votre poste de développement et utiliser la chaîne suivante :
Driver=(Oracle in XEClient);dbq=adresse_serveur:1521/XE;Uid=votreId;Pwd=votrePwd;
Ne connaissant pas cette version, cela reste à confirmer
ajor
Messages postés90Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention19 août 2020 16 juin 2010 à 16:03
Apparemment la connexion s'est fait de cette manière. Enfin, je ne suis pas encore sûr, mais l'exécution ne fait plus d'erreur sur Feuil1.
Par contre il y a une erreur sur le ThisworkBook.
'Erreur d'exécution '424'
Objet Requis.
Pour rappel, voici ce que contient Feuil1 :
Public cN As ADODB.Connection
Public rs As ADODB.Recordset
Public Sub conNect()
Set cN = New ADODB.Connection
dbPath = Path
cN.ConnectionString = "Provider=msdaora;Data Source=OIUO;User Id=XXXXX;Password=XXXXX;"
cN.Open
End Sub
et voici ce que contient ThisWorkBook :
Private Sub Workbook_Open()
Module1.conNect
Set rs = New ADODB.Recordset
rs.Open ("select indlig1 from g_individu where nom ='JORANDO'"), cN
i = 1
While Not rs.EOF
For j = 1 To rs.Fields.Count - 1
Feuil1.Cells(i, j) = rs(j - 1)
Next
i = i + 1
rs.MoveNext
Wend
End Sub