IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème DATAREADER déjà ouvert


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Par défaut Problème DATAREADER déjà ouvert
    Bonjour à tous,
    Voila j'ai développé une application sur pocket pc. A présent, je développe l'interface pc sous vb2005. Par contre j'ai tenté de récupérer le meme code, visiblement niveau datareader, cela ne marche pas trés bien. J'utiliser le meme datareader dans une boucle et j'ai un message d'erreur : "un datareader associé à cette commande est déjà ouvert".

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim req, rs As String
    Dim res As SqlDataReader
     
    req = "SELECT * FROM CLIENT WHERE CODETECHNICIEN=" & CType(Tech.SelectedItem, CodeLibelle).Code.ToString
    req += " ORDER BY c.codeclient"
    res = sql.DoSelect(req)
     
    ListTerre.Rows.Clear()
    Dim r As Row
    Dim c As Collection
       While res.Read
          c = New Collection
          c.Add(sql.GetInteger(res, "CODECLIENT"))
          c.Add(sql.GetInteger(res, "RAISONSOCIALE")) 
          CompteAnalyse(sql.GetDate(res, "DATEANALYSE"), n1, n2, n3, n4, n5)
          c.Add(n5)
          r = New Row(c)
          ListTerre.Rows.Add(r)
       End While
    Dans ma fonction CompteAnalyse j'ai une requete avec un datareader et c'est la que le message apparait.

    J'ai pourtant tenté de le nommé différemment, cela me fait la meme erreur.
    Quelq'un peut il m'apporter de l'aide à ce sujet ?
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu dois appeler Close sur ton DataReader quand tu as terminé de le parcourir.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Par défaut
    J'ai un close déjà dans ma fonction et également dans ma 1ere requete...
    est ce que j'ai oublié quelque chose ?

    Private Sub CompteAnalyse(ByVal codeclient As Integer, ByVal codetype As Integer, ByRef n1 As Integer, ByRef n2 As Integer, ByRef n3 As Integer, ByRef n4 As Integer, ByRef n5 As Integer)
    Dim req As String
    req = "SELECT * FROM ECHANTILLON WHERE DATEANALYSE IS NOT NULL AND CODECLIENT=" & codeclient.ToString
    If codetype = 1 Then req += " AND CODEARTICLE<>" & MoinsAnalysesSpeciales()
    If codetype = 2 Then req += " AND CODEARTICLE=250"
    If codetype = 3 Then req += " AND CODEARTICLE BETWEEN 1000 AND 1999"
    If codetype = 4 Then req += " AND CODEARTICLE BETWEEN 2000 AND 2100"
    Dim res As SqlDataReader = sql.DoSelect(req)
    While res.Read
    If sql.GetDate(res, "DATEANALYSE") >= New Date(Year(Now) - 4, 4, 1) And sql.GetDate(res, "DATEANALYSE") <= New Date(Year(Now) - 3, 3, 31) Then
    n5 = n5 + 1
    ElseIf sql.GetDate(res, "DATEANALYSE") >= New Date(Year(Now) - 3, 4, 1) And sql.GetDate(res, "DATEANALYSE") <= New Date(Year(Now) - 2, 3, 31) Then
    n4 = n4 + 1
    ElseIf sql.GetDate(res, "DATEANALYSE") >= New Date(Year(Now) - 2, 4, 1) And sql.GetDate(res, "DATEANALYSE") <= New Date(Year(Now) - 1, 3, 31) Then
    n3 = n3 + 1
    ElseIf sql.GetDate(res, "DATEANALYSE") >= New Date(Year(Now) - 1, 4, 1) And sql.GetDate(res, "DATEANALYSE") <= New Date(Year(Now), 3, 31) Then
    n2 = n2 + 1
    ElseIf sql.GetDate(res, "DATEANALYSE") >= New Date(Year(Now), 4, 1) And sql.GetDate(res, "DATEANALYSE") <= New Date(Year(Now) + 1, 3, 31) Then
    n1 = n1 + 1
    End If
    End While
    res.Close()
    End Sub

  4. #4
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Dispose() ?

  5. #5
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Par défaut
    je ne connais pas "dispose" ???

  6. #6
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 25
    Par défaut
    si ca peut aider, voici la solution :

    "Bonjour,
    Il est tout à fait possible d'avoir plusieurs DataReader sur une même connexion*grace à l'activation de "MARS" en incluant dans la chaine de connexion l'option : MultipleActiveResultSets=True. Par contre, cette option n'est valide que pour SQL Server 2005 ...
    Activation de MARS : http://msdn2.microsoft.com/fr-fr/lib...bf(VS.80).aspx
    Exemple d'utilisation : http://msdn2.microsoft.com/fr-fr/library/yf1a7f4f(VS.80).aspx"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. datareader associé ouvert
    Par mehdi.cheddani dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/04/2013, 14h19
  2. Problème Fenêtre Déjà ouverte
    Par Xtremmax dans le forum VB.NET
    Réponses: 7
    Dernier message: 06/04/2011, 11h19
  3. Problème de connexions ouvertes - Oracle / c3p0
    Par Flaie dans le forum Hibernate
    Réponses: 5
    Dernier message: 05/11/2009, 14h07
  4. problème de curseur ouvert !
    Par aoitife dans le forum PL/SQL
    Réponses: 13
    Dernier message: 06/02/2009, 18h17
  5. Problème d'objet ouvert
    Par lgab3 dans le forum Access
    Réponses: 6
    Dernier message: 01/01/2007, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo