Bonjour,

En raison d'une migration vers Office 2010 dans mon entreprise, il me faut tester toutes nos applications Access 2002 (et oui ca fait faire un sacré saut) pour s'assurer de leur bon fonctionnement. Sans surprise, pas mal de problèmes sont apparus et parmi eux, la récupération d'une Séquence Oracle.

Avec la version Access 2002, j'utilisais alors sans problème le code 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
 
Dim conn As Connection
Dim wrkODBC As Workspace
 
Function Sequence(lenomseq As String) As Long
 
    Dim rec As Recordset
 
    On Error Resume Next
        Set rec = conn.OpenRecordset("SELECT APP_PP." & lenomseq & ".NEXTVAL as ident FROM dual")
 
        MsgBox rec!ident
 
 
        If err.Number <> 0 Then
                Call Connexion
                Set rec = conn.OpenRecordset("SELECT APP_PP." & lenomseq & ".NEXTVAL as ident FROM dual")
 
        End If
 
    On Error GoTo traitement_erreur
 
    Sequence = rec!ident
 
    rec.Close
 
    Exit Function
traitement_erreur:
    Sequence = 0
End Function
Cette fonction fait appel à la fonction connexion qui permet d'accèder aux tables Oracle via le code 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
 
Function Connexion() As Boolean
	Dim wsk As Workspace
	Dim dbOP As Database
 
	Dim nom As String
	Dim pwd As String
	Dim laBase As String
 
	On Error GoTo traitement_erreur
 
	nom = "XXXX"
	pwd = "xxx"
	laBase = leDataSourceName
 
	Screen.MousePointer = 11
	Set wsk = DBEngine.Workspaces(0)
 
	Set wrkODBC = CreateWorkspace("MonWorkspace", "admin", "", dbUseODBC)
	Workspaces.Append wrkODBC
 
	'-----OP  connexion
	Set conn = wrkODBC.OpenConnection("", dbDriverNoPrompt, False, "ODBC;dsn=" & laBase & ";UID=" & nom & ";pwd=" & pwd)
	Set dbOP = wsk.OpenDatabase(laBase, dbDriverNoPrompt, False, "ODBC;dsn=" & laBase & ";UID=" & nom & ";pwd=" & pwd)
 
 
	Screen.MousePointer = 0
	Connexion = True
	Exit Function
 
	traitement_erreur:
	wsk.Close
 
	MsgBox ("Connexion impossible !!")
	Connexion = False
	Screen.MousePointer = 0
End Function
tout cela me permettait donc de récupérer rapidement et efficacement ma séquence Oracle (ex : 3758).

Désormais sous Access 2010, la séquence renvoyée est 0 ?!! D'autre part, il m'est impossible d'effectuer la connexion aux tables Oracle via la fonction connexion (-> erreur qui déclenche le message "Connexion impossible !!").

Bref, après avoir parcouru le forum de long en large, je ne sais pas si les deux problèmes sont vraiment liés mais j'avoue que je commence à avoir urgemment besoin d'une solution qui continue à m'échapper !

Merci à tous pour l'aide (et les solutions) que vous pourrez m'apporter