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 :
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).
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
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.
Partager