none
Requête VB RRS feed

  • Question

  • Salutations voyageurs du net ! 

    Voila, j'ai besoin d’exécuter une requête update dans une page web en vb.net 

    Je dispose de deux ListBox, s'échangeant mutuellement des objets via deux boutons, quand on clique sur le bouton valider, 

    j'aimerais que pour chaque objet présents dans ma listbox (id="inactive") on exécute la requête suivante : 

    UPDATE Formation SET actif_formation = 1 WHERE (id_formation = @id_formation)

    Il me faut donc faire une boucle, exécutant la requête ?

    Pour ce qui est de la base de données, 

    	<connectionStrings>
      <add name="Formation_2014ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Formation_2014.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True"
       providerName="System.Data.SqlClient" />
     </connectionStrings>

    Voila ce que je peux trouver dans Web.config, je ne sais cependant pas exécuter mes requêtes :/ Les seules que j'exécute actuellement se font via les propriétés UpdateCommand / DeleteCommand / SelectCommand relative à un DataGridView. 

    J'ai déjà parcouru les forums, et me dirige ici pour obtenir une explication plus claire qu'une documentation technique :p 

    Merci d'avance, 

    Krishn4k

    vendredi 28 mars 2014 07:45

Réponses

Toutes les réponses

  • Bonjour

    La réponse directe c'est d’utiliser dans un boucle  SqlCommand avec ExecuteNonQuery .

    Je crois que les exemples sont assez clairs.
    Quelle technologie utilisez-vous pour récupérer les informations dans la BD ?
    Avec DataAdapter/DataSet ou Entity Framework les choses peuvent se changer.

    Bien cordialement,


     

    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera mardi 1 avril 2014 06:24
    • Marqué comme réponse Krishn4k mardi 1 avril 2014 09:47
    vendredi 28 mars 2014 12:32
  • Je récupère mes informations dans la base de données via un SqlDataSource, 

    Voici mon code pour plus de précision ;)

    <asp:ListBox ID="inactive" runat="server" Rows="25" SelectionMode="Multiple" 
                        Width="300px" DataSourceID="formation_inactive" 
                        DataTextField="libelle_formation" DataValueField="id_formation">
                    </asp:ListBox>
                    <asp:SqlDataSource ID="formation_inactive" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:Formation_2014ConnectionString %>" 
                        SelectCommand="SELECT [id_formation], [actif_formation], [libelle_formation] FROM [Formation] WHERE ([actif_formation] = @actif_formation)">
                        <SelectParameters>
                            <asp:Parameter DefaultValue="0" Name="actif_formation" Type="Int16" />
                        </SelectParameters>
                    </asp:SqlDataSource>

    -- Edit -- 

    De plus, comment puis-je faire référence à ma chaîne de connexion directement dans mon code ? Je ne vois pas du tout comment procéder !


    • Modifié Krishn4k mardi 1 avril 2014 06:28
    mardi 1 avril 2014 06:23
  • Bonjour

    Dans ce cas, je dirais d’exécuter pour chaque formation modifié un SqlCommand qui fait la mise à jour.

    Cordialement, 


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 1 avril 2014 06:28
  • Je comprend, mais comment puis-je récupérer l'intégralité du contenu de ma listbox ? 
    Je ne parviens pas à faire une boucle qui récupère mes données ><

    Exemple : 

            For Each formation In active.Items
                MsgBox(formation.ToString)
            Next


    J'affiche simplement le texte de mes items actuellement et j'aimerais récupérer leurs 'Value' qui correspond à leurs ID dans ma base de données. 

    -- Edit -- 

    Ok j'ai fait : 

            For index As Integer = 0 To active.Items.Count - 1
                MsgBox(active.Items.Item(index).Value)
            Next

    Et tout semble fonctionner, je n'ai plus qu'a réussir à appeler ma chaîne de connexion ! 

    -- Edit -- 

    J'ai un exemple de connectionString sur cette page : Exemple ou il est clairement dit : 

    ' To avoid storing the connection string in your code,  
        ' you can retrieve it from a configuration file.


    Ce que je recherche ! Mais je n'ai pas d'exemple pour cette méthode :/ 

    • Modifié Krishn4k mardi 1 avril 2014 08:48
    mardi 1 avril 2014 07:22
  • Vous l'avez déjà dans le fichier de configuration de votre appli. Pour le recouper :

    string connStr = ConfigurationManager.ConnectionStrings["Formation_2014ConnectionString"].ConnectionString

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 1 avril 2014 09:09
  • J'obtiens donc : 

        Protected Sub valider_Click(ByVal sender As Object, ByVal e As EventArgs) Handles valider.Click
            Dim requete, Formation_Id, connStr As String
    
            connStr = ConfigurationManager.ConnectionStrings["Formation_2014ConnectionString"].ConnectionString
    
            For index As Integer = 0 To active.Items.Count - 1
                Formation_Id = active.Items.Item(index).Value
                requete = "UPDATE Formation SET actif_formation = 1 WHERE (id_formation = " + Formation_Id + ")"
                Using connection As New SqlConnection(connStr)
                    Dim command As New SqlCommand(requete, connection)
                    command.Connection.Open()
                    command.ExecuteNonQuery()
                    command.Connection.Close()
                End Using
            Next
        End Sub

    Cependant, j'ai une erreur au niveau de 

    connStr = ConfigurationManager.ConnectionStrings["Formation_2014ConnectionString"].ConnectionString

    Impossible de convertir une valeur de type 'System.Configuration.ConnectionStringSettingsCollection' en 'String' 

    Sur le même principe, au niveau du premier " de cette même ligne, j'obtiens un 'Identificateur attendu', je ne sais pas pourquoi ... 

    mardi 1 avril 2014 09:31
  • En VB.NET  est :

    ConfigurationManager.ConnectionStrings("Formation_2014ConnectionString").ConnectionString

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    mardi 1 avril 2014 09:45
  • Un grand merci, ça fonctionne enfin de mon côté ! 
    mardi 1 avril 2014 09:48