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

ASP.NET Discussion :

Problème d'exécution d'un procédure stockée


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut Problème d'exécution d'un procédure stockée
    Bonjour,
    Mon problème n'est pas technique mais logique, sauf qu'au bout de combien d'un certain moment devant l'écran je vois pas comment résoudre cette erreur.
    Voila, j'aimerais exécuter une procedure stockée avec un paramètre. Sauf que ce paramètre je le récupère dans une table.
    Voici un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Recuperation des noms des clients'
    Dim myCommand As New SqlCommand("select Nomclients from CLIENTS", Conn)
      Dim Reader As SqlDataReader = myCommand.ExecuteReader()
     
    'Je parcoure la liste des clients'		
    while Reader.read()
     
    'Execution des procédures stockées selon les noms de clients'
    Dim comm As New SqlClient.SqlCommand("exec MaProcedure "+Reader(0)+"",Conn)
    comm.ExecuteScalar()
    		end while
    'Je ferme le reader une fois vide'
    	    Reader.close()
    Mais j'obtiens cette erreur
    There is already an open DataReader associated with this Command which must be closed first.
    Je comprends ce que dit l'erreur mais je ne ne comprends pas à quelle moment je dois fermer mon reader si ce n'est après le while.

    Merci de m'aider

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bon, la réponse est très simple :

    Quand un datareader est ouvert sur une connexion, il est impossible d'exécuter une nouvelle commande sur cette connexion. (c'est lié au fait que le DataReader, au contraire du DataAdapter, travaille en mode connecté).

    Donc ici :

    - ou éliminer le DataReader et charger tes données dans une DataTable via un DataAdapter, la parcourir, et exécuter ta proc stoc pour chaque ligne.

    - ou conserver le DataReader et utiliser deux connexions, une pour le DataReader et une pour la proc stoc.

    Ca va dépendre un peu du nombre de clients à traiter.

  3. #3
    Membre éclairé Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Par défaut
    Je maitrise pas encore le concepte de DataTable, donc j'ai opté pour la deuxième solution sauf que lorsque je lance:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim myCommand As New SqlCommand("select Nomclients from CLIENTS ", Conn)
           Dim ReaderHo As SqlDataReader = myCommand.ExecuteReader()
     
           Connection.Open () 
     
    		while ReaderHo.read()
    	  'Execution des procédures stockées selon les clients'
    	   Dim comm As New SqlClient.SqlCommand("exec MaProcedure ("+ReaderHo(0)+")",Connection)
     
           comm.ExecuteScalar()
    		end while
    	    ReaderHo.close()
    Mais j'ai ceci comme erreur:
    Line 1: Incorrect syntax near 'ART'.
    Enfait ART est un client (le premier client de la table) mais je comprend pas pourquoi il y'a une ereur puisque avec ce même nom dans une autre page la procédure stockée passe bien

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Surement un problème de guillemets

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Problème dans ta proc stoc. Re-exécute la avec les paramètres qui plantent.

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

Discussions similaires

  1. Exécution d'une procédure stockée dans Sql
    Par Pascalp dans le forum Access
    Réponses: 4
    Dernier message: 01/09/2006, 11h47
  2. Réponses: 1
    Dernier message: 20/07/2006, 17h03
  3. Accès non autorisé à l'exécution d'une procédure stockée
    Par celine33 dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/01/2006, 10h27
  4. Réponses: 4
    Dernier message: 16/12/2005, 16h25
  5. Problème Alter view dans une procédure stockée
    Par adjava dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/07/2005, 17h45

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