Code VBA pour effectuer une requête sur une base Oracle

Résolu
ajor Messages postés 90 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 19 août 2020 - 14 juin 2010 à 15:13
ajor Messages postés 90 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 19 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


Quand j'exécute, j'obtiens l'erreur suivante :
'Erreur d'exécution 2147217843 (80010108)'
Erreur automation


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ù ?

PS : J'ai déjà eu un début de discussion ici mais qui n'a pas donné de suite : http://www.developpez.net/forums/d936137/bases-donnees/oracle/connexions-aux-bases-donnees/dexcel-se-connecter-oracle-passe-via-access-connecte-oracle/
A voir également:

11 réponses

ajor Messages postés 90 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 19 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
3
Rejoignez-nous