.Net Un dataReader asocié à cette connexion est déjà ouvert, il doit être tout d

cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 28 mai 2004 à 15:50
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 - 28 mai 2004 à 16:52
je me suis créé un calendrier qui lit une base de données, en Vb.Net. Il fonctionne parfaitement. Sauf que si moindrement je met 2 calendrier je reçoi cette erreur "Un dataReader asocié à cette connexion est déjà ouvert, il doit être tout d'abord fermé"

mon calendrier s'initialise sans base de donnée et s'il reçoi la base de donnée, il met à jour sont affichage en la lisant. donc j'ai une fonction setDB

Public Function setDB(ByVal dbtemp As System.Data.OleDb.OleDbConnection)
        db = dbtemp
        cmd1 = db.CreateCommand
        cmd1.CommandText = "select periodes from Tb_Periodes_Local"
        drd1 = cmd1.ExecuteReader
        dbOk = True
        période()
    End Function


db est un System.Data.OleDb.OleDbConnection
cmd1 est un System.Data.OleDb.OleDbCommand
et drd1 est un System.Data.OleDb.OleDbDataReader

la première chose que j'ai penser est de faire une fonction qui s'assure que le drd1 est bien fermé

Private Sub closetest(ByVal drd1 As System.Data.OleDb.OleDbDataReader)
        On Error Resume Next
        drd1.Close()
    End Sub


mais l'erreur arrive quand même

ensuite j'ai pensé ajouter un on error resume next dans ma function setDB, mais c'est encore pire.

Donc quelqu'un a une idée qui va permettre d,avoir autant de calendrier que je veux avec tous un accès à la base de donnée sur le même System.Data.OleDb.OleDbConnection ??? puisque j'ouvre ma connection sur ma form de départ, pour ça je l'envoi en paramètre. Puisque ça donne rien de faire 20 connections sur une même application.

mais je comprend quand même pas pourquoi j'ai cette erreur, puisque la connection est la même, mais les dataReader sont déclarer dans mes calendriers. Donc chaque calendrier a sont dataReader, donc en partant, il devrait être vide. En passant, il écrit nothing comme valeur au dataReader avant que ça plante.

1 réponse

cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
28 mai 2004 à 16:52
c'est beau, j'ai fait un tour de pass pass.

au lieu d'envoyer ma database, j'envoi ma première form et c,est ma première form qui possède les 3 composant pour faire el datareader
0