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


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
    Salut tout le monde

    J'ai une table T qui contient les champs : id,nom,prénom,age et sur ma form j'ai un datagridview qui affiche les données issues de cette table T , je sais enregistrer une seule ligne saisie du datagridview mais je ne sais pas enregistrer plusieurs lignes à la fois.C'est-à-dire je veux saisir 10 ou 20 lignes puis appuyer sur le bouton "Save"

    les champs sont tous de type varchar

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Imports System.Data.SqlClient
     Public Class Form1
        Dim cn As New SqlConnection
     
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
     Dim strcon As String = "data source=(local);initial catalog=mydb1;integrated"  security=true"
     
            cn.ConnectionString = strcon
            Dim da As New SqlDataAdapter("select * from T", cn)
            Dim ds As New DataSet
            Dim dt As DataTable
            dt = ds.Tables("T")
            da.Fill(ds, "T")
            dgv.DataSource = ds
            dgv.DataMember = "T"
     
    end sub
     
    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
     
           Dim cmdAdd As New SqlCommand
            cmdAdd.Connection = cn
     cmdAdd.CommandText = "INSERT INTO T(id,nom,prénom,age) VALUES('" & dgv.CurrentRow.Cells(0).Value.ToString & "','" & dgv.CurrentRow.Cells(1).Value.ToString & "','" & dgv.CurrentRow.Cells(2).Value.ToString & "','" & dgv.CurrentRow.Cells(3).Value.ToString & "')"
     
            Try
                If cn.State Then cn.Close()
                cn.Open()
                cmdAdd.ExecuteNonQuery()
                cn.Close()
     
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
        End Sub
    Merci d'avance.

  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,

    voici un tuto qui dit comment reporter les changements d'un datatable en base de donnée automatiquement : http://msdn.microsoft.com/fr-fr/libr...er.update.aspx

    Examinez le, et si vous avez des questions dessus, n'hésitez pas...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Par défaut Boucle
    Je te propose de faire une boucle comme ceci. Il enregistrera toutes lignes de ton datagrid quelques soit leur dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 0 To Me.DataGridView1.Rows.Count - 1
                            Dim row As DataGridViewRow = Me.DataGridView1.Rows(i)
     
                                tran.CommandText = "Insert into transfertdepot(codtrans,depotexpedit,depotdestinat,expeditor,destino,datevir,qtetransfert,codPro,produit,Valor,PA,PVU) values ('" & Me.TextBox1.Text & "','" & dep & "','" & dep1 & "','" & expedit & "','" & destin & "','" & Now.ToShortDateString & "'," & Val(Me.DataGridView1.Rows(i).Cells(7).Value) & ",'" & Me.DataGridView1.Rows(i).Cells(1).Value & "','" & Me.DataGridView1.Rows(i).Cells(2).Value & "'," & Val(Me.DataGridView1.Rows(i).Cells(12).Value) & "," & Val(Me.DataGridView1.Rows(i).Cells(5).Value) & "," & Val(Me.DataGridView1.Rows(i).Cells(6).Value) & ")"
                                tran.ExecuteNonQuery()

  4. #4
    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
    Citation Envoyé par eddyphan Voir le message
    Je te propose de faire une boucle comme ceci. Il enregistrera toutes lignes de ton datagrid quelques soit leur dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i = 0 To Me.DataGridView1.Rows.Count - 1
                            Dim row As DataGridViewRow = Me.DataGridView1.Rows(i)
     
                                tran.CommandText = "Insert into transfertdepot(codtrans,depotexpedit,depotdestinat,expeditor,destino,datevir,qtetransfert,codPro,produit,Valor,PA,PVU) values ('" & Me.TextBox1.Text & "','" & dep & "','" & dep1 & "','" & expedit & "','" & destin & "','" & Now.ToShortDateString & "'," & Val(Me.DataGridView1.Rows(i).Cells(7).Value) & ",'" & Me.DataGridView1.Rows(i).Cells(1).Value & "','" & Me.DataGridView1.Rows(i).Cells(2).Value & "'," & Val(Me.DataGridView1.Rows(i).Cells(12).Value) & "," & Val(Me.DataGridView1.Rows(i).Cells(5).Value) & "," & Val(Me.DataGridView1.Rows(i).Cells(6).Value) & ")"
                                tran.ExecuteNonQuery()
    C'est une solution bien plus compliquée que de faire tout sur le dataAdapteur.
    En effet dans ce cas, si on appuie plusieurs fois sur le bouton, c'est plusieurs fois que les lignes seront (essayerons d'être car clé) insérées.

    La solution du dataAdapteur gère tout tout seul, vous chargez un datatable que vous liez avec le dataGridView et dans le code du bouton il suffit de mettre la méthode update du dataadapteur et il se charge de regarder quelles lignes ont été ajoutées, supprimées ou modifiées et il appel en conséquence les requêtes insert, delete ou update que l'ont a même pas besoin de taper si l'ont utilise un CommandBuilder.
    Citation Envoyé par MSDN
    Si votre DataTable est mappé à une table de base de données unique ou est généré par celle-ci, vous pouvez tirer parti de l'objet DbCommandBuilder pour générer automatiquement les objets DeleteCommand, InsertCommand et UpdateCommand du DataAdapter. Pour plus d'informations, voir Génération de commandes à l'aide de CommandBuilders (ADO.NET).
    Bref un peu de lecture / test que je recommande à tout le monde.
    MSDN : Mise à jour de sources de données à l'aide de DataAdapters (ADO.NET)


  5. #5
    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 Ajouter plusieurs lignes à un datagridview
    Salut à tout le monde

    Merci beaucoup pour votre aide car la solution du DataAdapter et du CommanBuilder est la meilleure Merci le problème est réglé

+ 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. Réponses: 2
    Dernier message: 15/03/2012, 01h11
  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: 26/04/2006, 09h52
  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