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

VB.NET Discussion :

SqlParameter est déjà contenu dans un autre SqlParameterCollection


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Par défaut SqlParameter est déjà contenu dans un autre SqlParameterCollection
    Bonjour mes amis,

    j'ai fait une boucle pour copie les paramètres d'un sqlcommand dans une autre sqlcommand mais j'ai l'erreur suivant : "L'élément SqlParameter est déjà contenu dans un autre SqlParameterCollection "
    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
    For Each obj As Object In cmd
                        If TypeOf obj Is SqlClient.SqlCommand Then
     
                            Dim liste_param As SqlClient.SqlCommand = CType(obj, SqlClient.SqlCommand)
     
                            For Each param As SqlClient.SqlParameter In liste_param.Parameters
                                _cmd.Parameters.Add(param)
                            Next
     
                            _cmd.CommandText = liste_param.CommandText
                            _cmd.ExecuteNonQuery()
     
                        Else
                            _cmd.CommandText = obj.ToString
                            _cmd.ExecuteNonQuery()
                        End If
                    Next

  2. #2
    Membre éclairé Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Par défaut
    Hello

    Essaie cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For Each param As SqlClient.SqlParameter In liste_param.Parameters
            Dim Param2 as Parameter = param
            _cmd.Parameters.Add(Param2)
    Next
    Cordialement.

    DeWaRs

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2010
    Messages : 71
    Par défaut
    Ça marche pas DeWaRs , le même erreur

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Peut-être en rajoutant l'instruction suivante à la fin, ou au début de la première boucle For Each :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each obj As Object In cmd
        ...
        _cmd.Parameters.Clear()
    Next
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    le message d'erreur est pourtant clair, un sqlparameter ne peut pas être dans 2 collection de parameters en même temps
    il faut donc faire des new parameter pour "cloner" ceux d'origine

    si tu peux supprimer les parameters de la 1ère collection avant de les mettre dans la 2ème, tu peux les faire transiter dans un list(of sqlparameter)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim params = cmd.parameters.tolist
    cmd.parameters.clear
    cmd2.parameters.Addrange(params)
    le code est peut etre à adapter, je ne sais pas si le .tolist est dispo, ni le addrange ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Complètement d'accord avec Pol63, l'idée est là

    en regardant les membres de SqlParameterCollection on trouve la méthode SqlParameterCollection.CopyTo qui à deux implémentations dont :
    SqlParameterCollection.CopyTo (SqlParameter[], Int32)

    Copie tous les éléments du SqlParameterCollection en cours dans le SqlParameterCollection spécifié à partir de l'index de destination spécifié.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/12/2010, 13h28
  2. Réponses: 2
    Dernier message: 30/11/2009, 09h37
  3. Réponses: 2
    Dernier message: 28/03/2009, 19h13
  4. Tester si un string est contenu dans un autre
    Par totoen dans le forum C#
    Réponses: 19
    Dernier message: 18/02/2008, 09h23
  5. [RegEx] Rechercher si mot est contenu dans un autre
    Par Seb33300 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/08/2007, 23h52

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