Récupérer une Séquence Oracle en VBA sous Access 2010
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:
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:
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
;)