Bonjour,
J'ai un pgm en VBA qui
1°) lit une table Access en séquence,
2°) pour chaque la valeur trouvée lit une table Oracle
3°) si la valeur est trouvée : mise à jour d'une 3ème table
Rien que du classique.
Cela fonctionne très bien en requête Access, ou en utilisant la requête SQL correspondante dans une SUB en VBA.
Le soucis est que cette table Oracle contient près de 2 000 000 enr et donc le temps d'execution est très, très, très long.
J'aimerais pouvoir faire un accès direct sur la table Oracle (liée dans ma base ACCESS).
La table Oracle est la table "CONTENU".
Les 2 autres sont des tables Access.
Mais la commande :
Contenu.Index = "ValIndex_IDX_002"
génère l'erreur :
"Erreur d'execution 3251
Opération non autorisée pour ce type d'objet"
L'index est crée bien sur et est visible lors de l'ouverture en modif par Access de cette table ORACLE.
Code VBA
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
| Sub IMPORT_RCONTENU_TEST()
Dim DbChoix As Database
Set DbChoix = CurrentDb()
Set ALire = DbChoix.OpenRecordset("Journal")
Set AEcrire = DbChoix.OpenRecordset("Total")
Set Contenu = DbChoix.OpenRecordset("CONTENU")
Contenu.Index = "ValIndex_IDX_002"
ALire.MoveFirst
Do Until ALire.EOF = True
Contenu.Seek "=", [ALire]![TRANS]
Do Until Contenu.EOF = True
If Contenu.NoMatch = False Then
EcrireAEcrire
End If
Contenu.MoveNext
If Contenu!CODETrans > [ALire]![TRANS] Then
Contenu.MoveLast
End If
Loop
ALire.MoveNext
Loop
Set ALire = Nothing
Set AEcrire = Nothing
Set Contenu = Nothing
End Sub |
ACCESS est en version 2003
ORACLE est en version 9
Merci de votre assistance pour que je puisse lire cette table en accès direct en utilisant son index.
Partager