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

C# Discussion :

c# gérer un datagridview


Sujet :

C#

  1. #61
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    comment faire pour éviter l'erreur sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    adapter_commande.Update(dataset_commande, "commande");
    si tu ne dis pas de quelle erreur il s'agit, je vois pas ce qu'on peut faire pour toi

    EDIT: ok je suis à la bourre...

  2. #62
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    ERREUR:
    Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.
    Bizarre... normalement ça devrait marcher
    Essaie d'ajouter une clé primaire sur la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataset_commande.Tables["commande"].PrimaryKey = new DataColumn[] { dataset_commande.Tables["commande"].Columns["co_ref"] };
    (dans liste_Load, après le Fill)

  3. #63
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    même erreur !
    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
     
            public MySqlConnection maconnexion;
            public DataSet dataset_commande = new DataSet();
            private MySqlDataAdapter adapter_commande;
            public MySqlCommand cmd;
     
            private void liste_Load(object sender, EventArgs e)
            {
                    timer_reload.Enabled = true;
     
                    // Connexion à la base de données
                    string connexion = "Server=192.168.0.39;Port=3306;Database=db_commande;Uid=pseudo;Pwd=mdp;";
                    maconnexion = new MySqlConnection(connexion);
                    maconnexion.Open(); // Ouverture
     
                    adapter_commande = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del, co_com, co_sta, co_fac, co_imp, for_nom, gra_nom, pro_nom FROM commande,forma,grammage,produit WHERE co_for=for_id AND co_gra=gra_id AND co_pro=pro_id ORDER BY co_dat DESC", maconnexion);
     
                    cmd = maconnexion.CreateCommand();
                    cmd.CommandText = "UPDATE commande SET co_sta=@co_sta WHERE co_ref=@co_ref";
                    cmd.Parameters.Add("@co_sta", MySqlDbType.Int32, 0, "co_sta");
                    cmd.Parameters.Add("@co_ref", MySqlDbType.String, 0, "co_ref");
                    adapter_commande.UpdateCommand = cmd;
     
                    adapter_commande.Fill(dataset_commande, "commande");
                    dataset_commande.Tables["commande"].PrimaryKey = new DataColumn[] { dataset_commande.Tables["commande"].Columns["co_ref"] };
     
                    DataView dataView_attente = new DataView(dataset_commande.Tables["commande"], "co_sta = 0", null, DataViewRowState.CurrentRows);
                    dataGridView_attente.DataSource = dataView_attente;
                    DataView dataView_termine = new DataView(dataset_commande.Tables["commande"], "co_sta = 1", null, DataViewRowState.CurrentRows);
                    dataGridView_termine.DataSource = dataView_termine;
     
            }
     
            private void dataGridView_attente_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex >= 0 && e.ColumnIndex == details.Index)
                {
                    adapter_commande = new MySqlDataAdapter("SELECT co_ref, co_fich, co_dat, co_qte, co_del, co_com, co_fac, co_imp, for_nom, gra_nom, pro_nom, co_sta FROM commande,forma,grammage,produit WHERE co_for=for_id AND co_gra=gra_id AND co_pro=pro_id ORDER BY co_dat ASC", maconnexion);
                    adapter_commande.Fill(dataset_commande, "commande");
     
                    // obtenir la DataRow correspondant à la ligne courante du DataGridView
                    DataRowView drv = dataGridView_attente.CurrentRow.DataBoundItem as DataRowView;
                    drv.Row["co_sta"] = 1;
     
                    adapter_commande.Update(dataset_commande, "commande");
                    MessageBox.Show("Commande terminée !", "Validation", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

  4. #64
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    arf... là je comprends pas trop
    Je regarderai ça ce soir, pas trop le temps pour l'instant
    En attendant tu peux toujours essayer de faire la mise à jour directement avec un MySqlCommand, sans passer par un DataAdapter... ça te fera un bon exercice

  5. #65
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Ou est le MysqlCommandBuilder ??
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #66
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par tomlev
    Dans ce cas le CommandBuilder ne marche pas, il faut que tu écrives toi-même les requêtes de mise à jour...

  7. #67
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    Ou est le MysqlCommandBuilder ??
    il n'est pas utilisable dans ce cas, vu que la SelectCommand est une jointure entre plusieurs tables... ce qui est bizarre c'est que l'UpdateCommand est bien définie, donc ça devrait marcher

  8. #68
    Membre éprouvé Avatar de sisqo60
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2006
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 754
    Points : 1 188
    Points
    1 188
    Par défaut
    s'il n'y a plus de problèmes dans le code, regardes dans la base de données...
    c'est à dire récupère toute ta commande update et écris la dans un analyseur de requete mysql et execute si ça fonctionne bien c'est que c'est le code qui a toujours un problème sinon c'est ta requete ou ta base de données
    Un âne se croit savant parce qu'on le charge de livres (proverbe américain)

    N'oubliez pas de avant de
    Pas de question techniques par MP, c'est contre la philosophie du forum

  9. #69
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    aucun problème sur mon SGBD MySql

  10. #70
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Effectivement je vois pas bien a premiere vue mais ce que je ferais certainement c'est

    1- Essayer la commande en ExecuteNonQuery
    2- Passer avec le watcher pour verifier le contenu de la commande
    3- Adapter la syntaxe obsolete de parameters avec la methode AddWithValue

    Bonne recherche
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  11. #71
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    1- Essayer la commande en ExecuteNonQuery
    Effectivement ce serait un bon début...

    Citation Envoyé par olibara Voir le message
    3- Adapter la syntaxe obsolete de parameters avec la methode AddWithValue
    Quelle syntaxe obsolète ? là il ne précise pas la valeur du paramètre, c'est mappé sur une colonne de la DataTable (via l'argument sourceColumn de Add)

  12. #72
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    AddWithValue

    Oui oui tu a raison c'est moi qui a pas bien regardé .

    Mais je me demande si c'est pas "?" qu'il faut employer plutot que "@"
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  13. #73
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    Mais je me demande si c'est pas "?" qu'il faut employer plutot que "@"
    Tiens, c'est pas bête ça... je crois que tu as raison
    Celà dit, je suis pas sûr que ça suffise à justifier l'erreur... elle se produit avant que l'adapter essaie d'exécuter la requête, et je ne pense pas qu'il l'analyse...

  14. #74
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Avant de l'executer, il ne l'analyse peut etre pas mais il faut bien interpreter les parametres ?
    Et si la syntaxe permettant l'interpretation n'est pas valide, la commande ne sera pas valide non plus !
    Mais bon c'est juste une supposition a vérifier.
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  15. #75
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    Avant de l'executer, il ne l'analyse peut etre pas mais il faut bien interpreter les parametres ?
    Et si la syntaxe permettant l'interpretation n'est pas valide, la commande ne sera pas valide non plus !
    Mais bon c'est juste une supposition a vérifier.
    ben a priori c'est le serveur qui fait l'analyse, non ? enfin, de toutes façons ça coute pas cher de vérifier...

  16. #76
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    merci de vous intéressez à mon problème, j'essaie de comprendre tout ce qui vous me proposez.

    déjà j'ai remplacè le "@" par "?" (aucun changement)

    de plus j'ai belle est bien vérifié mon SGBD dans l'analyseur de requête et mon update marche nikel, voir également un insert etc

    Pour ce qui est de la commande en ExecuteNonQuery (pas encore essayé)

    voila un aperçu du message d'erreur, avec un détail supplémentaire le titre:

  17. #77
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Essaye la commande avec executenonquery

    Le resultat quel qu'il soit permettra de mieux cibler le problème !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  18. #78
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    je veux bien lol je cherche comment faire...

  19. #79
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Je commence a me demander si le where peut marcher dans ce type de requete parametrée via la methode update ? !

    J'ai le sentiment qu'il faut obligatoirement passer par un Primary Key et faire un simple set a=b
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  20. #80
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par olibara Voir le message
    Je commence a me demander si le where peut marcher dans ce type de requete parametrée via la methode update ? !

    J'ai le sentiment qu'il faut obligatoirement passer par un Primary Key et faire un simple set a=b
    euh... ben c'est le cas
    d'ailleurs si tu regardes les commandes générées par un CommandBuilder, c'est comme ça que c'est fait (UPDATE SET champ1=@param1, champ2=@param2 ... WHERE clé = @clé)

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

Discussions similaires

  1. [VB.NET] DataGridView, gérer cases à cocher
    Par tssi555 dans le forum VB.NET
    Réponses: 15
    Dernier message: 20/01/2009, 09h19
  2. Réponses: 6
    Dernier message: 31/07/2007, 10h13
  3. Réponses: 3
    Dernier message: 02/05/2007, 16h32
  4. gérer le copie coller sur un Datagridview
    Par wodel dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/05/2007, 19h55
  5. Réponses: 2
    Dernier message: 23/08/2006, 20h38

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