Bonjour,
J'ai le problème suivant dans une appli qui gère une base Access avec ADO.
J'ai de multiples recordsets de type serveurs que j'ouvre et que je ferme sans arret.
Pour me faciliter (?) les choses et eviter les erreurs de type recorset déja ouvert j'ai crée la procédure suivante
Cette procédure doit tenter de fermer le recordset, s'il est ouvert.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Sub OpenRS_Folder(ByVal Query As String) Try ADORsFolder.Close() Catch ex As Exception Console.WriteLine("An error occurred: '{0}'", ex) End Try ADORsFolder.Open(Query) End Sub
Sinon l'erreur est interceptée (le console.writeline ne me sert à rien sauf a poser un point d'arret pour le débug).
A la sortie du bloc try je devrais donc être sûr que mon recordset est fermé et donc pouvoir le ré-ouvrir avec ma nouvelle requête en toute tranquilité.
Cela fonctionne dans 90% des cas, mais dans certains cas j'obtiens une erreur qui me dit que l'operation (ouverture) n'est pas autorisée sur un objet ouvert.
J'ai testé le bout de code suivant
Qui fonctionne sans problème apparent..... Donc mon bout de code réussit bien à fermer le recordset avant de le réouvrir sauf dans certains cas.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim toto As String toto = "select * from folders" OpenRS_Folder(toto) OpenRS_Folder(toto) OpenRS_Folder(toto) OpenRS_Folder(toto) OpenRS_Folder(toto) OpenRS_Folder(toto)
Quelqu'un aurait une idée sur la raison de mon erreur?
Et dans la foulée est qu'il existe un moyen plus 'fin' de tester si un recordset est ouvert ou non?
Merci d'avance pour votre aide
Partager