Bonjour.

Actuellement, j'utilise un module VBA qui fonctionne bien sous Windows 2000 pour extraire les donnees d'Oracle. La procedure est la suivante : je me connecte a Oracle, je recupere les donnees grace a une requete SQL puis je les charge dans Access.

Le programme est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 
Private Sub Polecenie0_Click() 'clic sur bouton
    RemplirDeuxiemePagefou
End Sub
 
Public Function CreationRequeteOraclefou() As String
    Dim Requete As String
    Dim SelPays As String
 
 
     'Extract d'Oracle
        Requete = "select ........"
 
    CreationRequeteOraclefou = Requete
 
End Function
 
Public Sub MiseEnPageRequeteOraclefou(Enr As Recordset) 'rajout des donnees dans une table access    
        DoCmd.OpenQuery "Supp Donnees Oracle"
        Set Tb = CurrentDb.OpenRecordset("Donnees Oracle", dbOpenDynaset)
        While Not (Enr.EOF)
            Tb.AddNew
            Tb![Nom entete] = Enr("a")
            Tb![Nr four ligne] = Enr("b")
            Tb![Nom four ligne] = Enr("c")
            Tb![Date fin] = Enr("d")
            Tb![Nr_id four] = Enr("e")
            Tb![Vendor site id] = Enr("f")
            Tb![Nr entete] = Enr("g")
            Tb.Update
            Enr.MoveNext
        Wend
        Tb.Close
End Sub
 
Sub RemplirDeuxiemePagefou()
    'Rapatriement des données
    Dim rs As New ADODB.Recordset
    Dim Requete As String
    Dim Retour As Boolean
    Dim SelPays As String
 
 
    SelPays = "xxxxxx"
 
 
    DataSourceO = "xxxx" 'nom de la base Oracle
    UserO = "xxxx" 'nom du user
    PasswordO = "xxxx" ' mot de passe
 
    'Ouverture de la connection
    Retour = OuvrirConnectionOraclefou(DataSourceO, UserO, PasswordO)
 
    If (Retour = True) Then
        'Construction de la requete
        Requete = CreationRequeteOraclefou
 
        'Ouverture du curseur
        rs.Open Requete, DBOra, adOpenStatic
 
 
        'Fermeture du curseur
        rs.Close
 
        'Fermeture de la connection Oracle
        DBOra.Close
    'Else
        'MsgBox "Impossible de se connecter a Oracle"
    End If
End Sub
 
Public Function OuvrirConnectionOraclefou(DataSource As String, User As String, Password As String) As Boolean
    Dim StrConn As String
    On Error GoTo ErrConn
 
    Set DBOra = New ADODB.Connection
    DBOra.ConnectionString = "UID=" & User & ";PWD=" & Password & ";DRIVER={Microsoft ODBC dla Oracle};SERVER=" & DataSource & ";"
 
    'Ouverture de la base
    DBOra.Open
 
    OuvrirConnectionOraclefou = True
    Exit Function
 
ErrConn:
    Dim Message As String
    Message = "Erreur lors de la connection ŕ la source de données " & DataSource & Chr(10) & _
            Err.Description
    MsgBox Message
    OuvrirConnectionOraclefou = False
End Function
Ca fonctionne parfaitement sous Windows 2000 et Office 2000 lorsque ADI est installe (ADI est un petit programme qui permet de charger des donnees d'Oracle a partir d'un fichier excel).
Par contre, sous Windows XP et quelque soit la version Office (2000 ou 2007) ca ne fonctionne plus. Precision : sous windows XP, ADI pour Windows 2000 ne fonctionne pas mais j'extrais des donnees Oracle par Toad (programme d'extraction de donnees d'Oracle par requetes SQL).

Access me repond qu'il y a un probleme lors de la connection a Oracle par ODBC :

"...[Microsoft][.....ODBC] on ne peut pas trouver le nom de la source de donnees...." (le reste est en polonais car je travaille sur une version polonaise mais le message est precis.

Quelqu'un peut il me dire ce qu'il faut modifier dans le module concernant la connection par ODBC pour que ca marche ?

Merci.
Cdlt.
Jeannot2.