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

Windows Forms Discussion :

supprimer une ligne d'un datagridview avec une requêtte sql


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Points : 55
    Points
    55
    Par défaut supprimer une ligne d'un datagridview avec une requêtte sql
    Bonjour,
    j'ai besoind e votre aide
    je veux supprimer une ligne que je selectionne dans mon datagridview en cliquant sur le boutton supprimer, et je ne sais pas quoi mettre dans mon event click !!?

    la suppression doit se faire sur une base SQL, donc je présume faut créer une connexion avec cette base, et dans sqlcommand mettre delete from "ma table" where " ASP = celui de la ligne selectionné ".

    cette confition doit recuperer le numéro ASP de la ligne selectionné, comment je peux recupérer celui la !!?

    je sais que c'est pas bien expliqué, mais j'espère que quelqu'un poura m'aider

    merci infiniment d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Points : 55
    Points
    55
    Par défaut Voilà, j'ai avancé un peu !!
    SAlut, j'ai trouvé une solution, en se basant sur l'index de la ligne selectionnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int index = dataGridView1.CurrentRow.Index
    et sur l'indice de la colonne clé primaire (dans mon cas 0), j'ai obtenu la valeur stockée et affichée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string valeur = dataGridView1[0, index].Value.ToString()
    en se basant sur celui, je lance une requêtte delete normal qui s'effectue correctement, sauf que je veux afficher après mo resultat après suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGridView1.DataSource = DS;[/
    cette ligne me pose souci, elle me sort une exception d'indice !!

    Pouvez vous me le corriger Svp !!?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int index = dataGridView1.CurrentRow.Index;
               string valeur = dataGridView1[0, index].Value.ToString();
               SqlConnection SqlC = new SqlConnection("Data Source=TIMA;Initial Catalog=HOPITAL;Integrated Security=True");
               SqlCommand SqlCmd = new SqlCommand("delete from personnel where ASP_personnel = @paramSup", SqlC);
               SqlCmd.Parameters.AddWithValue("@paramSup", valeur);
               SqlDataAdapter SqlD = new SqlDataAdapter(SqlCmd);
               DataSet DS = new DataSet();
               SqlD.Fill(DS);
               dataGridView1.DataSource = DS;

  3. #3
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Points : 55
    Points
    55
    Par défaut voilààà !! ENFIN :)
    C bon, j'ai trouvé la solution !!
    Bizarr mais le forum ses jours ci n'est plus actif, d'habitude j'obtiens des reponses dans les secondes qui suit et il m'a toujours aidé
    je ne suis pas fainéante, la preuve c'est que j'ai pu résoudre mes soucis toute seule, c'est juste que j'ai une contrainte de temps
    bref, voilà ma solution pour ceux qui seront possé à postuler pour un même souci :

    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
    string valeur = " ";
                if (dataGridView1.Rows.Count > 0)
                {
                    int index = dataGridView1.CurrentRow.Index;
                    valeur = dataGridView1[0, index].Value.ToString();
                    MessageBox.Show("Suppression effectuée :\n1 ligne supprimée.");
                }
     
                try
                {
                    SqlConnection SqlC = new SqlConnection("Data Source=TIMA;Initial Catalog=HOPITAL;Integrated Security=True");
                    SqlCommand SqlCmd = new SqlCommand("delete from personnel where ASP_personnel = @paramSup;select * from personnel where nom like @paramN and service like @paramS and fonction like @paramF", SqlC);
                    if (textBox1.Text.Length > 0)
                    {
                        SqlCmd.Parameters.AddWithValue("@paramN", textBox1.Text);
                    }
                    else
                    {
                        SqlCmd.Parameters.AddWithValue("@paramN", '%');
                    }
     
                    if (comboBox1.Text.Length > 0)
                    {
                        SqlCmd.Parameters.AddWithValue("@paramS", comboBox1.Text);
                    }
                    else
                    {
                        SqlCmd.Parameters.AddWithValue("@paramS", '%');
                    }
     
                    if (comboBox2.Text.Length > 0)
                    {
                        SqlCmd.Parameters.AddWithValue("@paramF", comboBox2.Text);
                    }
                    else
                    {
                        SqlCmd.Parameters.AddWithValue("@paramF", '%');
                    }
     
                    SqlCmd.Parameters.AddWithValue("@paramSup", valeur);
     
                    SqlDataAdapter SqlD = new SqlDataAdapter(SqlCmd);
                    DataSet DS = new DataSet();
                    SqlD.Fill(DS);
                    dataGridView1.DataSource = DS.Tables[0];
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    si vous avez autre solution, meilleur que celle si, plus simple ou plus optimisée, n'hésiter pas Svp

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Je pense qu'il y avait plus performant en évitant notamment le dernier select (exécuter à la suite de ton delete).

    En effet, tu n'as qu'à exécuter le delete et supprimer la ligne dans ta datasource. Cela ne demande aucunement de resélectionner toutes tes données. Ce que tu as fait donne certainement de bons résultats avec une dizaine de ligne mais plus ça doit commencer à clignoter et faire mal aux yeux.

    Je trouve également bizarre de faire au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show("Suppression effectuée :\n1 ligne supprimée.");
    Rien ne te dit que ta ligne va correctement être supprimée.

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 154
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Bonjour,

    Je pense qu'il y avait plus performant en évitant notamment le dernier select (exécuter à la suite de ton delete).

    En effet, tu n'as qu'à exécuter le delete et supprimer la ligne dans ta datasource. Cela ne demande aucunement de resélectionner toutes tes données. Ce que tu as fait donne certainement de bons résultats avec une dizaine de ligne mais plus ça doit commencer à clignoter et faire mal aux yeux.

    Je trouve également bizarre de faire au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox.Show("Suppression effectuée :\n1 ligne supprimée.");
    Rien ne te dit que ta ligne va correctement être supprimée.
    Bonsoir,

    Merci de m'avoir répondu

    je ne sais pas comment faire autrement !! peux tu me donner un exemple plus performant !?

    Pour le select, c'est pour que la supression s'effectue et un affichage actualisé sans la ligne supprimée soit fait .
    je n'ai pas compris de quel clignotement vous parlez !?
    je n'ai eu aucun dans mes test, l'affichage est rapide et se fait proprement.

    Pour le message, je l'ai mis au début parceque je l'ai liée à la condition de suppression, qui s'effectue juste s'il y'a une ligne selectionnée.
    je ne sais pas ou est ce que je peux le mettre si non.

    et la suppression s'effectue forcement, puisque ce code est lié à un boutton supprimer sur leqeul l'utilisateur clique.

    merci encore une fois.

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

Discussions similaires

  1. Tableau avec une ligne d'en-tête et une colonne fixe
    Par Mercior63 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 09/02/2015, 17h51
  2. Comment colorer une ligne d'un tableau avec une case à cocher ?
    Par Gdal dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/08/2011, 11h11
  3. Réponses: 2
    Dernier message: 12/07/2010, 12h28
  4. Réponses: 1
    Dernier message: 08/05/2009, 23h12
  5. Tableau avec une ligne d'en-tête et une colonne fixe
    Par heddicmi dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 22/11/2006, 18h45

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