Recordset ADO qui ne se ferme pas correctement
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
Code:
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 |
Cette procédure doit tenter de fermer le recordset, s'il est ouvert.
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
Code:
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) |
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.....
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