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 :

Rechargement des données dans un datagridview + mysql [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Par défaut Rechargement des données dans un datagridview + mysql
    Bonjour,
    Je suis tout nouveau sur ce forum, et tout nouveau à VB.NET également. J'espère qu'une âme charitable voudra bien m'éclairer.

    Sur une forme, j'ai un DataGridView qui me donne un sommaire de tous les registres d'une table. Lorsque je clique sur une ligne dans le datagridview (SelectionChanged), je charge alors les donnée du registre dans les champs correspondants en dessous du datagridview pour les éditer. Lorsque je sauvegarde ces données dans la base de donnée, certains champs affichés par le datagridview ne sont plus valides. Je veux donc recharger mes données dans le DataGridView.

    Le bug que j'ai actuellement, c'est que lorsque je recharge mes données dans le DataGridView, alors que celui-ci semble vide, il émet un SelectionChanged qui bloque car je tente de charger les données d'une ligne avec un index négatif...

    Devrais-je utiliser un autre event que SelectionChanged? Sinon, y aurait-il un autre moyen de recharger mon DataGridView?
    Je suis ouvert à toutes vos lumières!!!

    (Bon, il me reste des tentatives commentées de déboguages dans mon code , et je dois ajouter que j'utilise MySQL sur un serveur distant...)

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    Imports MySql.Data.MySqlClient
     
    Public Class FormGestMbr
        Public dbconn As New MySqlConnection
        Public sql As String
        Public dbcomm As MySqlCommand
        Public dbread As MySqlDataReader
     
        'create data adapter
        Dim da As Common.DbDataAdapter
        'create dataset
        Dim ds As DataSet = New DataSet
     
        '**************************
        Private bindingSource1 As New BindingSource()
        Private dataAdapter As New MySqlDataAdapter()
     
        Private Sub UpdateDataGridView()
            sql = "SELECT mbr_id, titre, prenom, nomfam, ville, telephone, courriel FROM membres;"
     
            Try
                Me.dataAdapter = New MySqlDataAdapter(sql, dbconn)
     
                Dim commandBuilder As New MySqlCommandBuilder(Me.dataAdapter)
                Dim dss As New DataSet()
                Me.dataAdapter.Fill(dss, "membres")
                Me.bindingSource1.DataSource = dss
                'DataGVMembres.DataSource = dss
                DataGVMembres.DataMember = "membres"
                Me.DataGVMembres.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader)
                'DataGVMembres.AutoResizeColumn(0)
                'DataGVMembres.AutoResizeColumn(1)
                'DataGVMembres.AutoResizeColumn(2)
                'DataGVMembres.AutoResizeColumn(3)
                ''DataGVMembres.AutoResizeColumn(4)
                ''DataGVMembres.AutoResizeColumn(5)
                'DataGVMembres.AutoResizeColumn(6)
            Catch ex As MySqlException
                MessageBox.Show("Erreur: " + sql)
            End Try
     
        End Sub
     
        Private Sub FormGestMbrShown(sender As Object, e As EventArgs) Handles MyBase.Shown
     
            UpdateDataGridView()
     
        End Sub
     
        Private Sub FormGestMbrLoad(sender As Object, e As EventArgs) Handles MyBase.Load
            dbconn = New MySqlConnection("server=localhost;user id=un_user_id;password=un_password;database=une_bd")
            Try
                dbconn.Open()
            Catch ex As Exception
                Console.Out.WriteLine("Erreur de connection à la BD: " + ex.Message)
            End Try
            Me.DataGVMembres.DataSource = Me.bindingSource1
        End Sub
     
        Private Sub FormGestMbrFormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            'Fermeture de la connection à la BD
            dbconn.Close()
            dbconn.Dispose()
        End Sub
     
        Private Sub DataGVMembres_Click(sender As Object, e As EventArgs) Handles DataGVMembres.Click
     
        End Sub
     
        Private Sub DataGVMembres_SelectionChanged(sender As Object, e As EventArgs) Handles DataGVMembres.SelectionChanged
            'MsgBox(DataGVMembres.SelectedCells.Item(0).Value.ToString())
            '****************************************************
     
            If DataGVMembres.CurrentRow.Index >= 0 Then
                Dim un_mbr_id As String = DataGVMembres.SelectedRows.Item(0).Cells.Item(0).Value.ToString()
                Dim sqlquery As String = "SELECT * FROM membres WHERE mbr_id='" + un_mbr_id + "';"
                Dim data As MySqlDataReader
                Dim adapter As New MySqlDataAdapter
                Dim command As New MySqlCommand(sqlquery, dbconn)
                adapter.SelectCommand = command
                data = command.ExecuteReader()
                data.Read()
                tb_mbr_id.Text = data(0).ToString()
                tbTitre.Text = data(3).ToString()
                tbPrenom.Text = data(2).ToString()
                tbNom.Text = data(1).ToString()
                tbAdresse.Text = data(5).ToString()
                tbVille.Text = data(6).ToString()
                tbCodePostal.Text = data(9).ToString()
                tbProvince.Text = data(7).ToString()
                tbPays.Text = data(8).ToString()
                tbTelephone.Text = data(10).ToString()
                tbFax.Text = data(11).ToString()
                tbCourriel.Text = data(12).ToString()
                cbListeCourriel.Checked = data(15)
                tbInfoComp.Text = data(4).ToString()
                tbVieuxRegistre.Text = data(13).ToString()
                tbDateInscription.Text = data(18).ToString()
                cbNonMembre.Checked = data(14)
                cbProtocoleSigne.Checked = data(17)
                cbCoordonneePerimee.Checked = data(16)
                tbCommMembre.Text = data(19).ToString()
                tbCommAdmin.Text = data(20).ToString()
     
                'MsgBox(data(1).ToString() + " : " + data(2).ToString())
                'While data.Read()
                '    Label1.Text = data(1).ToString
                '    Label2.Text = data(3).ToString
                'End While
     
                data.Close()
                'adapter.Dispose()
                'command.Dispose()
            End If
        End Sub
     
        Private Sub bSauvegarder_Click(sender As Object, e As EventArgs) Handles bSauvegarder.Click
            Dim sqlUpdate As New String("UPDATE membres SET titre='" + tbTitre.Text + "', prenom='" + tbPrenom.Text + "', nomfam='" + tbNom.Text + "', infocomp='" + tbInfoComp.Text + "', adresse='" + tbAdresse.Text + "', ville='" + tbVille.Text + "', province='" + tbProvince.Text + "', pays='" + tbPays.Text + "', code_postal='" + tbCodePostal.Text + "', telephone='" + tbTelephone.Text + "', fax='" + tbFax.Text + "', courriel='" + tbCourriel.Text + "', vieuxreg='" + tbVieuxRegistre.Text + "', non_membre=" + cbNonMembre.Checked.ToString + ", liste_courriel=" + cbListeCourriel.Checked.ToString + ", cdonnee_perimee=" + cbCoordonneePerimee.Checked.ToString + ", protocole_signe=" + cbProtocoleSigne.Checked.ToString + ", date_inscription='" + tbDateInscription.Text + "', commentaire_mbr='" + tbCommMembre.Text + "', commentaire_admin='" + tbCommAdmin.Text + "' WHERE mbr_id='" + tb_mbr_id.Text + "';")
     
            Dim cmd As MySqlCommand = New MySqlCommand(sqlUpdate, dbconn)
            Dim i As Integer = cmd.ExecuteNonQuery()
            If (i > 0) Then
                MsgBox("Sauvegarde des modifications au registre du membre " + tbPrenom.Text + " " + tbNom.Text + " correctement effectuée!")
                UpdateDataGridView()
            Else
                MsgBox("Erreur de sauvegarde des modifications au registre du membre " + tbPrenom.Text + " " + tbNom.Text + "...")
            End If
            'UpdateDataGridView()
     
        End Sub
    End Class

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Par défaut
    Je crois que j'ai trouvé ma solution, je me suis accroché sur le OnClick du datagridview au lieu du OnSelectedChanged...
    Je continue sur cette voie, si vous avez quand même des commentaires, il seront apprécié quand même!!!

  3. #3
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par CptNome Voir le message
    Je crois que j'ai trouvé ma solution, je me suis accroché sur le OnClick du datagridview au lieu du OnSelectedChanged...
    Je continue sur cette voie, si vous avez quand même des commentaires, il seront apprécié quand même!!!
    Tu devrais essayer avec l'event:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView_CellMouseDoubleClick
    Quand une personne double cliquera sur ton data grid view l'event s’exécutera.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Sinon 2 petites remarques :
    Pour la concaténation de chaîne utilise le caractère &. (pas le +)
    Il faut utiliser les requêtes paramétrées. Voir Tuto ou Faq.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Par défaut
    Merci pour les conseils! Je vais regarder ça!

  6. #6
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Par défaut
    Bonjour rv26t,
    Merci pour tes conseils, puis-je rajouter une petite question?

    Pourquoi est-ce que l'opérateur & et mieux que + pour concaténer les chaînes de caractères?

    A+

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

Discussions similaires

  1. Accélérer l'affichage des données dans un datagridview
    Par GCAccess dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/11/2009, 11h11
  2. probleme d'insertion des données dans un datagridview
    Par meryDev dans le forum Windows Forms
    Réponses: 0
    Dernier message: 20/06/2009, 14h14
  3. probléme d'affichage des données dans le datagridview
    Par asprog dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/05/2009, 22h23
  4. affichage des donnes dans une datagridview
    Par daloul dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/04/2008, 08h04
  5. [C#] Comment enregistrer des données dans un base Mysql ?
    Par zidenne dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/09/2006, 17h51

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