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 :

Enregistrer plusieurs lignes saisies d'un datagridview d'un seul coup


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Par défaut Enregistrer plusieurs lignes saisies d'un datagridview d'un seul coup
    Salut

    Je voudrais savoir comment enregistrer plusieurs lignes saisies d'un DataGrdiView d'un seul coup c'est-à-dire saisir la ligne d'indice 0 puis d'indice 1 et ainsi de suite jusqu'à par exemple la ligne d'indice 9 donc on aura saisi 10 lignes en tout puis d'un click sur le bouton "Save" par exemple on enregistre ces 10 lignes , on suppose qu'on a 5 colonnes.

    J'ai essayé avec une boucle sur les lignes mais ça ne marche pas , peut-etre que je n'ai pas bien utilisé le bon 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub btnSaveAll_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs)
     
           cn.ConnectionString = strcon
     
            Dim cmdAdd As New SqlCommand
            cmdAdd.Connection = cn
     
            For i As Integer = 0 To dgv.Rows.Count - 1
     
                cmdAdd.Parameters.Clear()
     
                Dim pr_id As New SqlParameter("@id", SqlDbType.Int)
                pr_id.Value = dgv.Rows(i).Cells(0).Value
                cmdAdd.Parameters.Add(pr_id)
     
                Dim pr_nom As New SqlParameter("@nom", SqlDbType.VarChar)
                pr_nom.Value = dgv.Rows(i).Cells(1).Value
                cmdAdd.Parameters.Add(pr_nom)
     
                Dim pr_prenom As New SqlParameter("@prenom", SqlDbType.VarChar)
                pr_prenom.Value = dgv.Rows(i).Cells(2).Value
                cmdAdd.Parameters.Add(pr_prenom)
     
     
     
               cmdAdd.CommandText = " insert into MaTable (id,nom,prenom)  
               values(@id,@nom,@prenom)"
     
            Next
     
            If cn.State Then cn.Close()
     
            cn.Open()
            cmdAdd.ExecuteNonQuery()
            cn.Close()
     
            MsgBox("Enregistrement Réussi !", MsgBoxStyle.Information")
     
    End Sub
    End Sub

    Voilà , Merci pour tout

  2. #2
    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
    Bonsoir,

    Ce n'est pas vraiment la bonne méthode mais voici le code corrigé pour que ca fonctionne de cette manière :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub btnSaveAll_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs)
     
           cn.ConnectionString = strcon
     
            ' Création de la commande et de ces paramètre en dehors de la boucle
            ' Cela permet de gagné du temps en ne reconstruisant pas les paramètre à chaque itération (travail inutile d'effacer et de recréé quelque chose qui existe)
            Dim cmdAdd As New SqlCommand
            cmdAdd.Connection = cn
            cmdAdd.CommandText = " insert into MaTable (id, nom, prenom) values(@id, @nom, @prenom)" 
            cmdAdd.Parameters.Clear()
            cmdAdd.Parameters.add("@id", SqlDbType.Int)
            cmdAdd.Parameters.add("@nom", SqlDbType.VarChar)
            cmdAdd.Parameters.add("@prenom", SqlDbType.VarChar)
     
            ' Ouverture de la connexion avant traitement, de cette manière elle reste ouverte pendant les insertions.
            cn.Open()
     
            For i As Integer = 0 To dgv.Rows.Count - 1
                ' Remplissage de la valeur des paramètres de la commande.
                cmdAdd.Parameters("@id").Value = dgv.Rows(i).Cells(0).Value            
                cmdAdd.Parameters("@nom").Value = dgv.Rows(i).Cells(1).Value
                cmdAdd.Parameters("@prenom").Value = dgv.Rows(i).Cells(2).Value
                ' l’exécution de l'insert doit être dans la boucle pour être exécuté sur chaque enregistrement.           
                cmdAdd.ExecuteNonQuery()
            Next
     
            cn.Close()
     
            MsgBox("Enregistrement Réussi !", MsgBoxStyle.Information")
     
    End Sub

    La bonne méthode aurait été de lier le datagridView à une table contenant les colonnes chargées de la BD lors du chargement de la form.
    Et lors du clique sur le bouton save, d’appeler la méthode update d'un adapter auquel on aurait mi les commande update, insert et delete.

    Voir adapter.update sur MSDN ainsi que Comment : mettre à jour les enregistrements dans une base de données

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Par défaut
    Salut

    Merci beaucoup vous m'avez éclairer sur plusieurs points obscurs que je n'ai jamais songé les connaitre , ça marche super !!

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

Discussions similaires

  1. [Débutant] Button pour supprimer plusieurs lignes à la fois dans Datagridview
    Par jeremyvb11 dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/01/2013, 18h55
  2. Enregistrer plusieurs lignes saisies d'un datagridview
    Par devman2011 dans le forum VB.NET
    Réponses: 4
    Dernier message: 17/12/2011, 00h14
  3. [AC-2003] Enregistrer plusieurs lignes
    Par helmut dans le forum IHM
    Réponses: 1
    Dernier message: 21/08/2009, 14h37
  4. Réponses: 1
    Dernier message: 06/03/2008, 20h40
  5. TDBGrid - Un enregistrement sur plusieurs lignes
    Par BRODU dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/05/2004, 07h53

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