none
enregistrer case a cocher dans une base de donné RRS feed

  • Question

  • bonjour,

    y a t'il une personne sachant comment enregistrer plusieur valeurs d'une checkboxlist dans une base de données, je realise une application sous visual studio en asp.net vb. dans un formulaire de saisie j'ai une check boxlist ou l'utilisateur peut cocher plusieur case, j'aimeraii savoir comment enregistrer ces valeuir dans un base de données. merci,

    cordialement

    vendredi 21 mai 2010 13:40

Réponses

  • Bonjour,

     

    Voici un exemple de code qui ajoute les informations (valeur et coché/décoché) d’une CheckList dans une table. Vous pouvez particulariser votre procédure selon les informations que vous voulez stocker :

     

    protected void Button1_Click(object sender, EventArgs e)
        {
          string constr = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True";
          SqlConnection con = new SqlConnection(constr);
          con.Open(); 
     
          
          SqlParameter par1 = new SqlParameter("myvalue",System.Data.SqlDbType.NVarChar,10); 
          SqlParameter par2 = new SqlParameter("mycheck", System.Data.SqlDbType.NVarChar,10);
          SqlCommand com = new SqlCommand("insert into CheckTable(value, [check]) values " +
              "(@myvalue, @mycheck);", con); 
          com.Parameters.Add(par1); 
          com.Parameters.Add(par2); 
          
          
          int i; 
          for(i=0; i<this.CheckBoxList1.Items.Count; i++)
          {
            par1.Value=this.CheckBoxList1.Items[i].Value; 
            par2.Value = this.CheckBoxList1.Items[i].Selected?"true":"false"; 
           
            com.ExecuteNonQuery(); 
              
          }
        }

     

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

     
    mercredi 26 mai 2010 10:56
  • Bonjour,

     

    Vous pouvez voir si un élément est coché avec la propriété Selected :

    Me.CheckBoxList1.Items[i].Selected

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    vendredi 28 mai 2010 09:10
  • Bonjour,

     

    Supprimez les guillemets autour de ‘true’. Instruction doit etre

    …[i].Selected = True then

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    vendredi 28 mai 2010 10:00
  • Bonjour,

     

    Il faut utiliser les paramètres dans ‘insert into’. Créez aussi des paramètres pour ‘idlocalisation’ :

    Dim param_idlocalisation as new sqlparameter(« idlocal »,System.Data.SqlDbType.Integer, 10)

    param_idlocalisation.Value = DropDownListLocalisation.SelectedValue

     

    et ‘iddsecteur’.

     

    Il vous faut aussi une valeur pour IdPDP, car je ne vois pas aucune dans votre code. Ensuite, utilisez ces paramètres dans ExecuteSQL de cette façon :

    « insert into … values (@idpdp, @idlocal, @iddsecteur ) »

     

    Par contre, je vois que par1 et par2 ne sont plus utilisés dans votre scenario, donc vous pouvez les supprimer.

     

    Avec Me.CheckBoxListFrontEnd.Items(i).Selected vous vérifiez si l’élément de la liste est cochee et vous ajoutez ensuite la valeur de l’élément dans un des paramètres sql. Vous utilisez ces paramètres dans ‘insert into’ comme dans l’exemple dessus.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

    vendredi 28 mai 2010 10:41
  • Bonjour,

    Créez et associez un connexion à votre commande :

    com.Connection = new SqlConnection("< chaine de connexion >");
    com.Connection.Open();

    N'oubliez pas de la fermer (méthode Close()) après votre ExecuteNonQuery()

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 28 mai 2010 20:22
    Modérateur
  • Bonjour,

    Dim par1 As New SqlParameter("@myvalue", System.Data.SqlDbType.NVarChar, 10)
    Dim par2 As New SqlParameter("@mycheck", System.Data.SqlDbType.NVarChar, 10)
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 06:51
    Modérateur
  • Bonjour,

    Le nom des paramètres ne sont pas les mêmes entre le code de la requête et la définition des paramètres.

    Dim com As New SqlCommand("declare @idlocalisation char; declare @IdSecteur char; insert into interpdp (idPDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur)")
    ...
    Dim param_idlocalisation As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
    

    Regardez le nom du paramètre idlocal vs idlocalisation, ils sont incorrects. De plus les paramètres param_idlocalisation et param_idsecteur ne sont pas ajouté à avotre commande SQL.

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 07:33
    Modérateur
  • Bonjour,

    com.Parameters.Add(param_idlocalisation)
    com.Parameters.Add(param_idsecteur)
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 07:57
    Modérateur
  • Bonjour,

    Utilisez une condition dans votre boucle pour ne récupérer que les checkbox cochées :

    If Me.CheckBoxListFrontEnd.Items(i).Selected = True Then
      ...
    End If

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 08:42
    Modérateur
  • merci beaucoup,

    mon problemùe est resolu,

    voici mon script :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
    
        Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)
        Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)
        Dim param_idlocalisation As New SqlParameter("idlocalisation", System.Data.SqlDbType.Char, 10)
        Dim param_idSecteur As New SqlParameter("IdSecteur", System.Data.SqlDbType.Char, 10)
        Dim com As New SqlCommand(" insert into interpdp (idPDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur)")
        Dim i As Integer
        Dim idlocalisation As Int32
    
        com.Connection = New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SuiviPDP;Data Source=DNKPC827\SQLEXPRESS")
        com.Connection.Open()
        com.Parameters.Add(par1)
        com.Parameters.Add(par2)
        com.Parameters.Add(param_idlocalisation)
        com.Parameters.Add(param_idSecteur)
    
    
        param_idlocalisation.Value = DropDownListLocalisation.SelectedValue
        Idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case Idlocalisation
          Case Is = 1
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
              param_idSecteur.Value = CheckBoxListFrontEnd.Items(i).Value
              par1.Value = Me.CheckBoxListFrontEnd.Items(i).Value
              par2.Value = If(Me.CheckBoxListFrontEnd.Items(i).Selected, "true", "false")
              If Me.CheckBoxListFrontEnd.Items(i).Selected = True Then
                com.ExecuteNonQuery()
              End If
    
    
            Next
          Case Is = 2

    cordialement.

    • Marqué comme réponse hamra lundi 31 mai 2010 08:52
    • Non marqué comme réponse hamra lundi 31 mai 2010 09:39
    • Marqué comme réponse Gilles TOURREAUModerator lundi 31 mai 2010 09:41
    lundi 31 mai 2010 08:52
  • j'ai remarqué que pour tester la page j'avais initialisé la valeur de l'idpdp à "330", car je n'arrive pas a recupérer l'idpdp qui se trouve dans la page aspx  ou j'ai les cases a cocher ect.

    comment je peut recuperer l'idpdp ?

    merci, 

    cordialement

    • Marqué comme réponse hamra lundi 31 mai 2010 13:42
    lundi 31 mai 2010 09:41

Toutes les réponses

  • Bonjour,

    Comment sont représentées les valeurs à enregistrer dans votre base de données ?

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    samedi 22 mai 2010 15:33
    Modérateur
  • bonjour,

    les valeurs sont de type chaine de caractere, elles sont chargées à partir d'une base de données, je souhaite enregistrer les valeurs coché de la checkboxlist dans une table intermediaire de la meme base de données.

     

    cordialement

    mardi 25 mai 2010 06:42
  • Bonjour,

     

    Voici un exemple de code qui ajoute les informations (valeur et coché/décoché) d’une CheckList dans une table. Vous pouvez particulariser votre procédure selon les informations que vous voulez stocker :

     

    protected void Button1_Click(object sender, EventArgs e)
        {
          string constr = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True";
          SqlConnection con = new SqlConnection(constr);
          con.Open(); 
     
          
          SqlParameter par1 = new SqlParameter("myvalue",System.Data.SqlDbType.NVarChar,10); 
          SqlParameter par2 = new SqlParameter("mycheck", System.Data.SqlDbType.NVarChar,10);
          SqlCommand com = new SqlCommand("insert into CheckTable(value, [check]) values " +
              "(@myvalue, @mycheck);", con); 
          com.Parameters.Add(par1); 
          com.Parameters.Add(par2); 
          
          
          int i; 
          for(i=0; i<this.CheckBoxList1.Items.Count; i++)
          {
            par1.Value=this.CheckBoxList1.Items[i].Value; 
            par2.Value = this.CheckBoxList1.Items[i].Selected?"true":"false"; 
           
            com.ExecuteNonQuery(); 
              
          }
        }

     

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

     
    mercredi 26 mai 2010 10:56
  • bonjour,

    merci pour ta reponse, cependant je n'arrive pas a traduire sa en VB, je suis désolé.

    cordialement

    mercredi 26 mai 2010 13:01
  • Bonjour,

     

    Voici la version VB :

     

    1.  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)

    2.      Dim constr As String = "Data Source=(local);Initial Catalog=TestDB;Integrated Security=True"

    3.      Dim con As New SqlConnection(constr)

    4.      con.Open()

    5.     

    6.     

    7.      Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)

    8.      Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)

    9.      Dim com As New SqlCommand("insert into CheckTable(value, [check]) values " & "(@myvalue, @mycheck);", con)

    10.     com.Parameters.Add(par1)

    11.     com.Parameters.Add(par2)

    12.    

    13.    

    14.     Dim i As Integer

    15.     For i = 0 To Me.CheckBoxList1.Items.Count - 1

    16.         par1.Value = Me.CheckBoxList1.Items(i).Value

    17.         par2.Value = If(Me.CheckBoxList1.Items(i).Selected, "true", "false")

    18.        

    19.            

    20.         com.ExecuteNonQuery()

    21.     Next

    22. End Sub

     

     

    Vous pouvez utiliser cet outil pour faire la conversion C#/VB :

    http://www.developerfusion.com/tools/convert/csharp-to-vb/

     

    Tenez-moi au courant si vous avez d’autres questions sur ce problème.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    mercredi 26 mai 2010 13:07
  • merci, alex

    mon probleme

    est que j'ai une liste deroulante regroupant différentes localisation,

    quand je change de localisation, ma checkboxlist s'actualise, pour avoir les secteurs de la localisation concerné.

    dans ma base de donnée je souhaite enregistré dans une table intermediaire les secteurs qui on été coché, je doit donc par la meme occasion enregistrer la localisation dans ma base.

    les données que je souhaite enregistrer doivent etre enregistré dans la table InterPDP

    pour etre plus claire voici une partie du MLD :

    Secteur( Idsecteur, Nomsecteur)
    Localisation, (IdLocalisation, nomlocalisation)
    PDP (idpdp, intitule, datesignture)
    InterPDP (IdPDP, IdLocalisation, IdSecteur)

    merci pour le temp passé,

    cordialement.

    mercredi 26 mai 2010 14:29
  • Bonjour,

    Dans ce cas utilisez le code de M. PETRESCU, mais exécutez la requête suivante :

    SqlCommand("insert into Localisation(NomLocalisation) values (@nomLocalisation) SELECT @@IDENTITY", con)

    Exécutez la requête, mais en utiliser ExecuteScalar afin de récupérer le dernier identifiant ajouté :

    Dim lastId As Integer
    lastId = Convert.ToInt32(cmd.ExecuteScalar())

    Il vous faudra exécuter à nouveau une requête INSERT pour InterPDP avec l'identifiant IdLocalisation précédemment ajouté.

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    jeudi 27 mai 2010 07:27
    Modérateur
  • bonjour,

    merci pour la reponse,

    je ne doit pas inserer de localisation dans la table localisation,

    prenons l'exemple suivant , je suis en cour d'enregistrer un PDP, lors de la saisie de la localisation j'ai une liste deroulante, je choisi donc une localisation "production", lorsque j'ai choisi ma localisation j'ai une checkboxlist representant les secteur de ma localisation, je coche donc les secteur souhaités. une fois l'enregiostrement terminé je clique sur enregistrer.

    suite a cette enregistrement je souhaite que dans la table INTERPDP soit enregistré les données saisie ainsi si j'ai coché 3 checkboxlist j'auré dans ma table INTERPDP trois enregistrement exemple :

    interpdp(idpdp, idlocalisation, idsecteur)

    ainsi j'auré :

    interpdp(3,2,2)

               (3,2,5)

               (3,2,8)

    pour le pdp 3 et la localisation numero 2 j'ai trois secteur, le secteur 2, 5, et 8.

     

    merci pour votre aide

    jeudi 27 mai 2010 07:45
  • Bonjour,

     

    La table ou vous enregistrez l’information n’est pas relevant pour ce cas. Ce qui est important, par contre, est de parcourir toutes les éléments de votre checklist et de déterminer les valeurs cochées. Pour chaque valeur cochée, vous faites ensuite un ‘Insert Into’ avec les paramètres désirés.

     

    Cordialement,

    Alex

     

     

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

    vendredi 28 mai 2010 08:37
  • bonjour,

    j'ai essayé de faire un script pour parcourir toute les valeur de ma checkbox list mais sa m'affiche un message d'erreur

    voici le script :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
        Dim NbValeur As Integer
        Dim Idlocalisation As Int32
        idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case idlocalisation
    
          Case Is = 1
            'requete permettant d'avoir le nombre de case dans ma checkboxlist
            NbValeur = ExecuteSQL("SELECT count(*)FROM SECTEUR WHERE IdLocalisation = 1")
    
            'parcour la chexbox pour voir quel valeur est coché pour ensuite l'enregistré
            For i = 0 To NbValeur - 1
              If CheckBoxListFrontEnd.DataValueField + 1 = i And CheckBoxListFrontEnd.DataValueField Then
                ExecuteSQL("insert into interpdp (idPDDP, idLocalisation, IdSecteur) values (IdPDP, IdLocalisation, @IddSecteur")
    
              End If
            Next
    
    
          Case Is = 2

    sa bugg car je ne sait pas comment faire pour savoir si une case est coché ou non,

    pouvez vous s'il vous plait me dire si je suis bien parti ? et me dire quel est la maniere de savoir si une case est coché ou non ?

    merci de votre aide.

    vendredi 28 mai 2010 09:01
  • Bonjour,

     

    Vous pouvez voir si un élément est coché avec la propriété Selected :

    Me.CheckBoxList1.Items[i].Selected

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    vendredi 28 mai 2010 09:10
  • merci,

    quand je met la propriété selected, j'ai un message qui m'indique "fin d'instruction attendue" et je ne comprend pas pour quel raison,

    voici mon script :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
        Dim NbValeur As Integer
        Dim Idlocalisation As Int32
    
        idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case idlocalisation
    
          Case Is = 1
            'requete permettant d'avoir le nombre de case dans ma checkboxlist
            NbValeur = ExecuteSQL("SELECT count(*)FROM SECTEUR WHERE IdLocalisation = 1")
    
            'parcour la checkbox pour voir quel valeur est coché pour ensuite l'enregistré
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
               If Me.CheckBoxListFrontEnd.Items[i].Selected = "true" then
                ExecuteSQL("insert into interpdp (idPDDP, idLocalisation, IdSecteur) values (IdPDP, IdLocalisation, @IddSecteur")
              End If
            Next
              
          Case Is = 2

    c'est la ligne ou il y a le "if" qui est souligné en m'indiquant le message d'erreur.

     

    vendredi 28 mai 2010 09:43
  • Bonjour,

     

    Supprimez les guillemets autour de ‘true’. Instruction doit etre

    …[i].Selected = True then

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    vendredi 28 mai 2010 10:00
  • re-bonjour,

    j'ai utilisé le scrit que alex a posté et je l'ai modifié, maintenant sa donne sa :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
        Dim Idlocalisation As Int32
        Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)
        Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)
    
        idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case idlocalisation
          Case Is = 1
            'parcour la checkbox pour voir quel valeur est coché pour ensuite l'enregistré
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
    
              par1.Value = Me.CheckBoxListFrontEnd.Items(i).Value
    
              par2.Value = If(Me.CheckBoxListFrontEnd.Items(i).Selected, "true", "false")
              ExecuteSQL("insert into interpdp (idPDDP, idLocalisation, IdSecteur) values ( IdPDP, IdLocalisation, IddSecteur")
            Next
    
    
    
          Case Is = 2

    je n'ai aucun message d'erreur quand je lance mon application, mais quand je clique sur enregistrer rien ne se passe "je clique dans le vide".

    y a t'il une personne qui peut m'aider s'il vous plait ?

     avec toute la volonté que je met dans cette appli sa ne fonctionne pas.

    mercii

    vendredi 28 mai 2010 10:14
  • Bonjour,

     

    Il faut utiliser les paramètres dans ‘insert into’. Créez aussi des paramètres pour ‘idlocalisation’ :

    Dim param_idlocalisation as new sqlparameter(« idlocal »,System.Data.SqlDbType.Integer, 10)

    param_idlocalisation.Value = DropDownListLocalisation.SelectedValue

     

    et ‘iddsecteur’.

     

    Il vous faut aussi une valeur pour IdPDP, car je ne vois pas aucune dans votre code. Ensuite, utilisez ces paramètres dans ExecuteSQL de cette façon :

    « insert into … values (@idpdp, @idlocal, @iddsecteur ) »

     

    Par contre, je vois que par1 et par2 ne sont plus utilisés dans votre scenario, donc vous pouvez les supprimer.

     

    Avec Me.CheckBoxListFrontEnd.Items(i).Selected vous vérifiez si l’élément de la liste est cochee et vous ajoutez ensuite la valeur de l’élément dans un des paramètres sql. Vous utilisez ces paramètres dans ‘insert into’ comme dans l’exemple dessus.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

    vendredi 28 mai 2010 10:41
  • merci alex,

    ma solution est comme ci dessous maintenant :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
        Dim Idlocalisation As Int32
        Dim param_idlocalisation As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
        Dim param_idSecteur As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
    
        param_idlocalisation.Value = DropDownListLocalisation.SelectedValue
        Idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case Idlocalisation
          Case Is = 1
            'parcour la checkbox pour voir quel valeur est coché pour ensuite l'enregistré
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
              param_idSecteur.Value = CheckBoxListFrontEnd.Items(i).Value
          If Me.CheckBoxListFrontEnd.Items[i].Selected=true then
                ExecuteSQL("insert into interpdp (idPDDP, idLocalisation, IdSecteur) values (@IdPDP, @IdLocalisation, @IddSecteur")
              End If
            Next
    
          Case Is = 2

    cela dit j'ai deux probleme, je ne sait pas comment recupérer l'idpdp, il est enregistré dans la meme page que les secteur et les localisations, quand je tape param mon intellisence me donne "paramidpdp" et ce que c'est utilisable ?

    mon deuxieme probleme concerne toujours le if j'ai enlevé les guillemet mais j'ai le message d'erreur suivant :

    "une valeur type 'system.web.UI.Wbcontrols.ListItem collection' ne peut être convertie en boolean'"

    je te remercie pour ton aide alex.

    vendredi 28 mai 2010 12:07
  • je vient de changer de methode j'utilise la premiere methode que tu a posté, mais je ne sait toujours pas comment recuperer l'idpdp qui est dans la page aspx, de plus j'ai ce meaasage d'erreur qui pointe sur "com.ExecuteNonQuery()" m'indiquant "ExecuteNonQuery : la propriété Connection n'a pas été initialisée." :

    monn  nouveau script correspond a :

     Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
    
        Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)
        Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)
        Dim com As New SqlCommand("insert into interpdp (idPDDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur")
        Dim i As Integer
        Dim param_idlocalisation As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
        Dim param_idSecteur As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
        Dim idlocalisation As Int32
        com.Parameters.Add(par1)
        com.Parameters.Add(par2)
    
        param_idlocalisation.Value = DropDownListLocalisation.SelectedValue
        Idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case Idlocalisation
          Case Is = 1
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
              param_idSecteur.Value = CheckBoxListFrontEnd.Items(i).Value
              par1.Value = Me.CheckBoxListFrontEnd.Items(i).Value
              par2.Value = If(Me.CheckBoxListFrontEnd.Items(i).Selected, "true", "false")
              com.ExecuteNonQuery()
    
            Next
          Case Is = 2
    cordialement.
    vendredi 28 mai 2010 14:50
  • Bonjour,

    Créez et associez un connexion à votre commande :

    com.Connection = new SqlConnection("< chaine de connexion >");
    com.Connection.Open();

    N'oubliez pas de la fermer (méthode Close()) après votre ExecuteNonQuery()

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 28 mai 2010 20:22
    Modérateur
  • bonjour,

    suite a vos remarques j'ai modifier mon script comme ci dessous :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
    
        Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)
        Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)
        Dim com As New SqlCommand("insert into interpdp (idPDDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur")
        Dim i As Integer
        Dim param_idlocalisation As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
        Dim param_idSecteur As New SqlParameter("IdSect", System.Data.SqlDbType.NVarChar, 10)
        Dim idlocalisation As Int32
        com.Connection = New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SuiviPDP;Data Source=DNKPC827\SQLEXPRESS")
        com.Connection.Open()
        com.Parameters.Add(par1)
        com.Parameters.Add(par2)
    
        param_idlocalisation.Value = DropDownListLocalisation.SelectedValue
        Idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case Idlocalisation
          Case Is = 1
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
              param_idSecteur.Value = CheckBoxListFrontEnd.Items(i).Value
              par1.Value = Me.CheckBoxListFrontEnd.Items(i).Value
              par2.Value = If(Me.CheckBoxListFrontEnd.Items(i).Selected, "true", "false")
              com.ExecuteNonQuery()
            Next
          Case Is = 2

    cependant j'ai un message d'erreur m'indiquant que la variable scalaire "@idLocalisation" doit etre declaré, je ne comprend pas car elle est declaré dans mon script,

     

    merci,

    cordialement

    lundi 31 mai 2010 06:40
  • Bonjour,

    Dim par1 As New SqlParameter("@myvalue", System.Data.SqlDbType.NVarChar, 10)
    Dim par2 As New SqlParameter("@mycheck", System.Data.SqlDbType.NVarChar, 10)
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 06:51
    Modérateur
  • merci,

    j'avais dans mon script posté precedemment declaré les variables par1 et par2,  sa ne fonctionné pas car dans la requete d'insertion je n'avais pas declaré mes variables scalaire, je l'ai donc fait.

     mais j'ai un nouveau probleme qui m'indique, "Impossible d'insérer la valeur NULL dans la colonne 'IdLocalisation', table 'SuiviPDP.dbo.InterPDP'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT. L'instruction a été arrêtée." je sait que dans ma base de données la variable "idlocalisation" avait comme propriété non null, donc si aucune valeur dans l'insertion voulé etre inséré j'aurai ce message,  mais je ne comprend pas pourquoi on ne recupere pas la valeur de "idlocalisation" 

    voici mon script :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
    
        Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)
        Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)
        Dim com As New SqlCommand("declare @idlocalisation char; declare @IdSecteur char; insert into interpdp (idPDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur)")
        Dim i As Integer
        Dim param_idlocalisation As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
        Dim param_idSecteur As New SqlParameter("IdSecteur", System.Data.SqlDbType.NVarChar, 10)
        Dim idlocalisation As Int32
    
        com.Connection = New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SuiviPDP;Data Source=DNKPC827\SQLEXPRESS")
        com.Connection.Open()
        com.Parameters.Add(par1)
        com.Parameters.Add(par2)
    
        param_idlocalisation.Value = DropDownListLocalisation.SelectedValue
        Idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case Idlocalisation
          Case Is = 1
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
              param_idSecteur.Value = CheckBoxListFrontEnd.Items(i).Value
              par1.Value = Me.CheckBoxListFrontEnd.Items(i).Value
              par2.Value = If(Me.CheckBoxListFrontEnd.Items(i).Selected, "true", "false")
              com.ExecuteNonQuery()
            Next

    vous pouvez constater que "idlocalisation prend toujours une valeur par rapport au "case", mes test son toujour réalisé a partir du premier case.

    merci,

    cordialement

    lundi 31 mai 2010 07:20
  • Bonjour,

    Le nom des paramètres ne sont pas les mêmes entre le code de la requête et la définition des paramètres.

    Dim com As New SqlCommand("declare @idlocalisation char; declare @IdSecteur char; insert into interpdp (idPDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur)")
    ...
    Dim param_idlocalisation As New SqlParameter("idlocal", System.Data.SqlDbType.NVarChar, 10)
    

    Regardez le nom du paramètre idlocal vs idlocalisation, ils sont incorrects. De plus les paramètres param_idlocalisation et param_idsecteur ne sont pas ajouté à avotre commande SQL.

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 07:33
    Modérateur
  • merci,

    je vient de modifier les erreurs, mais les parametres param_idlocalisation et param_idsecteur comment doient-ils  être ajouté a ma commande sql ?

    je pesné que grace à ces deux lignes ci-dessous s'etait bon :

    Dim param_idlocalisation As New SqlParameter("idlocalisation", System.Data.SqlDbType.Char, 10)
      Dim param_idSecteur As New SqlParameter("IdSecteur", System.Data.SqlDbType.Char, 10)
    cordialement.
    lundi 31 mai 2010 07:45
  • Bonjour,

    com.Parameters.Add(param_idlocalisation)
    com.Parameters.Add(param_idsecteur)
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 07:57
    Modérateur
  • merci,

    sa fonctionne, mais je vient de regarder dans ma base, et j'ai constaté que toute les valeurs de ma checkboxlist ont étaient enregistré, je souhaité juste enregistrer les valeurs cochées.

    cordialement. 

    lundi 31 mai 2010 08:10
  • Bonjour,

    Utilisez une condition dans votre boucle pour ne récupérer que les checkbox cochées :

    If Me.CheckBoxListFrontEnd.Items(i).Selected = True Then
      ...
    End If

    Cordialement


    Gilles TOURREAU - MVP C# - MCP - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 31 mai 2010 08:42
    Modérateur
  • merci beaucoup,

    mon problemùe est resolu,

    voici mon script :

    Protected Sub EnregistrementSecteur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EnregistrementSecteur.Click
    
        Dim par1 As New SqlParameter("myvalue", System.Data.SqlDbType.NVarChar, 10)
        Dim par2 As New SqlParameter("mycheck", System.Data.SqlDbType.NVarChar, 10)
        Dim param_idlocalisation As New SqlParameter("idlocalisation", System.Data.SqlDbType.Char, 10)
        Dim param_idSecteur As New SqlParameter("IdSecteur", System.Data.SqlDbType.Char, 10)
        Dim com As New SqlCommand(" insert into interpdp (idPDP, idLocalisation, IdSecteur) values (330, @IdLocalisation, @IdSecteur)")
        Dim i As Integer
        Dim idlocalisation As Int32
    
        com.Connection = New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SuiviPDP;Data Source=DNKPC827\SQLEXPRESS")
        com.Connection.Open()
        com.Parameters.Add(par1)
        com.Parameters.Add(par2)
        com.Parameters.Add(param_idlocalisation)
        com.Parameters.Add(param_idSecteur)
    
    
        param_idlocalisation.Value = DropDownListLocalisation.SelectedValue
        Idlocalisation = DropDownListLocalisation.SelectedValue
        Select Case Idlocalisation
          Case Is = 1
            For i = 0 To Me.CheckBoxListFrontEnd.Items.Count - 1
              param_idSecteur.Value = CheckBoxListFrontEnd.Items(i).Value
              par1.Value = Me.CheckBoxListFrontEnd.Items(i).Value
              par2.Value = If(Me.CheckBoxListFrontEnd.Items(i).Selected, "true", "false")
              If Me.CheckBoxListFrontEnd.Items(i).Selected = True Then
                com.ExecuteNonQuery()
              End If
    
    
            Next
          Case Is = 2

    cordialement.

    • Marqué comme réponse hamra lundi 31 mai 2010 08:52
    • Non marqué comme réponse hamra lundi 31 mai 2010 09:39
    • Marqué comme réponse Gilles TOURREAUModerator lundi 31 mai 2010 09:41
    lundi 31 mai 2010 08:52
  • j'ai remarqué que pour tester la page j'avais initialisé la valeur de l'idpdp à "330", car je n'arrive pas a recupérer l'idpdp qui se trouve dans la page aspx  ou j'ai les cases a cocher ect.

    comment je peut recuperer l'idpdp ?

    merci, 

    cordialement

    • Marqué comme réponse hamra lundi 31 mai 2010 13:42
    lundi 31 mai 2010 09:41
  • mon probleme est resolu, il fallait juste utiliser :

    param_idPDP.Value = ParamidPDP.Text

    cordialement

    lundi 31 mai 2010 13:41