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 :

Comment effectuer un update de ma base de donnée suite à une coche d'un checkbox dans un datagridview en vb.ne [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Par défaut Comment effectuer un update de ma base de donnée suite à une coche d'un checkbox dans un datagridview en vb.ne
    Bonjour,

    je suis débutant en visual basic et depuis plusieurs jours je suis bloqué sur une action qui parait simple mais dont je n'arrive à mettre en oeuvre.

    J'utilise un datagridview en relation avec une table de ma base de donnée. J'ai une colonne qui est composée de checkbox.

    J'ai réussi à effectuer la mise à jour de la base suite à l'ajout d'une ligne, la modification d'une cellule, mais pour la checkbox, je voudrait que la mise à jour s'effectue uniquement par la coche ou décoche sans avoir besoin de valider par "enter".

    Là je suis bloqué, je n'arrive pas à effectuer cette mise à jour directement. Si vous avez une piste je suis preneur.

    Voici le code que j'utilise en relation avec ma base de donnée locale SQL Server :
    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
     
    Imports System.Data.SqlClient
    Public Class Form1
        Dim sCommand As SqlCommand
        Dim sAdapter As SqlDataAdapter
        Dim sBuilder As SqlCommandBuilder
        Dim sDs As DataSet
        Dim sTable As DataTable
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            sAdapter.Update(sTable)
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim connectionString As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\André\source\repos\WindowsApp3\WindowsApp3\bin\Debug\Database1.mdf;Integrated Security=True;Connect Timeout=30"
            Dim sql As String = "SELECT * FROM Stores"
            Dim connection As New SqlConnection(connectionString)
            connection.Open()
            sCommand = New SqlCommand(sql, connection)
            sAdapter = New SqlDataAdapter(sCommand)
            sBuilder = New SqlCommandBuilder(sAdapter)
            sDs = New DataSet()
            sAdapter.Fill(sDs, "Stores")
            sTable = sDs.Tables("Stores")
            connection.Close()
            DataGridView1.DataSource = sDs.Tables("Stores")
        End Sub
     
        Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
            sAdapter.Update(sTable)
        End Sub
     
        Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
            DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
        End Sub
     
        Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
            If e.ColumnIndex = 2 Then
                'Passe bien par  là mais n'effectue pas le update!
                sAdapter.Update(sTable)
                MsgBox("Passage")
            End If
     
        End Sub
     
    End Class
    Je vous remercie par avance pour toutes l'aides que vous prouvez m'apporter.

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    J'ai un DataGridView1 avec un colonne de ChckBox nommée "chk".
    Le code suivant parcoure toutes les lignes du DataGridView1 et m'affiche un message quand la cellule CHK d'une ligne est cochée.
    Tu peux ainsi voir comment je vérifie si la cellule est cochée ou non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            For R As Integer = 0 To DataGridView1.Rows.Count - 1
                If DataGridView1.Item("chk", R).Value Then
                    MessageBox.Show("Ligne " & R & " Checked")
                End If
            Next
    J'espère que ça t'aidera ...

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Par défaut
    Bonjour à tous,

    je viens de trouver la solution, en déplaçant le sélection d'une ligne, on effectue bien la mise à jour par la méthode update.

    Voici le code qui pourrait en intéresser plus d'un afin d'éviter de passer par des boutons additionnels sur un datagridview avec un datasource lié à une base sql server :
    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
     
    Imports System.Data.SqlClient
    Public Class Form1
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: cette ligne de code charge les données dans la table 'Database1DataSet.Stores'. Vous pouvez la déplacer ou la supprimer selon les besoins.
            Me.StoresTableAdapter.Fill(Me.Database1DataSet.Stores)
        End Sub
     
    ' Dans le projet, on utilisera le update natif qui permet d'effectuer des insert, update et delete sans avoir besoin de créer de requête personnalisée.
     
        'Pour une utilisation avec un bouton supplémentaire (à éviter)
        'Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        '    StoresTableAdapter.Update(Database1DataSet.Stores)
        'End Sub
     
        'Gestion de la colonne des checkbox uniquement
        'Le Check ou Uncheck direct ne déclenche pas le rowState à Modified. De ce fait, il faudrait une action supplémentaire pour le déclencher.
        'Contournement fait par passage à la ligne suivante (à affiner pour plus de sureté de fonctionnement).
        Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
            Dim Lig As Integer = DataGridView1.CurrentCell.RowIndex
            Dim Col As Integer = DataGridView1.CurrentCell.ColumnIndex
            If (Col = 2) Then
                DataGridView1.CurrentCell = DataGridView1.Rows.Item(Lig + 1).Cells(2)
                StoresTableAdapter.Update(Database1DataSet.Stores)
                DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
            End If
        End Sub
     
        'Sauvegarde en base sur modification de la cellule.
        Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
            StoresTableAdapter.Update(Database1DataSet.Stores)
        End Sub
     
    End Class

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/07/2015, 15h30
  2. [C# 2.0] Comment réussir l'Update de ma base de données ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 7
    Dernier message: 21/06/2006, 00h04
  3. [ADO.Net][VB.NET][DataAdapter] Comment effectuer l'Update ?
    Par Anubis666 dans le forum Accès aux données
    Réponses: 14
    Dernier message: 19/01/2006, 15h16
  4. Comment gérer efficacement des listes en Base de données ?
    Par alexk dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 12/04/2005, 20h21
  5. [JSP]comment créer un listener pour ma base de données
    Par Ekimasu dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 10/05/2004, 14h49

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