Discussion: Visual Studio + MySQL + AutoIncrement [Débutant]

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 97
    Points : 58
    Points
    58

    Par défaut Visual Studio + MySQL + AutoIncrement

    Bonjour,
    Je suis novice et je fais ma premiere appli windows.
    J' ai cree une windows form pour inserer les donnees.
    Mais lorsque je clique sur nouveau, j'ai dans id -1. Id etant autoincrementer.
    Par contre si je le vire de mon windows form... Je peux inserer mes donnees, creer et modifier.
    Donc comment puis je faire pour que lorsque je clique sur nouveau id m'affiche la suivante valeur correctement et non -1 ?
    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 97
    Points : 58
    Points
    58

    Par défaut

    Citation Envoyé par superthx Voir le message
    Bonjour,
    Je suis novice et je fais ma premiere appli windows.
    J' ai cree une windows form pour inserer les donnees.
    Mais lorsque je clique sur nouveau, j'ai dans id -1. Id etant autoincrementer.
    Par contre si je le vire de mon windows form... Je peux inserer mes donnees, creer et modifier.
    Donc comment puis je faire pour que lorsque je clique sur nouveau id m'affiche la suivante valeur correctement et non -1 ?
    Merci
    Bon j'ai essayer un truc.............
    J'ai fais le code suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(id) + 1 AS Expr1 FROM produccion
    Il m'affiche bien ce que je veux mais dans le windows form j'ai encore le -1.
    Je voudrais savoir quel serai le bon code qui fasse que si j'ai id = NULL me mette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(id) + 1 AS Expr1 FROM produccion
    Quelqu'un ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2006
    Messages : 262
    Points : 240
    Points
    240

    Par défaut

    Salut,

    Je voudrais savoir quel serai le bon code qui fasse que si j'ai id = NULL me mette
    Sous SqlServeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT isnull(MAX(ID), 0) + 1 FROM produccion
    Sous MySql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COALESCE(MAX(ID), 0) + 1 FROM produccion
    Mais je doute que ton problème vienne de là.
    Tox

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 97
    Points : 58
    Points
    58

    Par défaut

    Citation Envoyé par toxycyty Voir le message
    Salut,

    Sous MySql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COALESCE(MAX(ID), 0) + 1 FROM produccion
    Mais je doute que ton problème vienne de là.
    MErci d'avoir repondu............

    Mais mon probleme persiste............
    La requete m'affiche bien le prochain numero id......
    Par contre dans le windows form j'ai toujours -1 qui apparait.
    Je crois que je vais abandonner l'idee d'afficher l'id dans le windows form.

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    5 992
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 992
    Points : 7 871
    Points
    7 871

    Par défaut

    Si on utilise un DataAdapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    adapter.InsertCommand = "INSERT " + ... ; // commande INSERT (sans column autoincrément) 
    adapter.InsertCommand += SELECT `"+AutoIncrementColumnName+"` FROM `"+TableName+"` WHERE `"+AutoIncrementColumnName+"` = LAST_INSERT_ID() ;
    adapter.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord ;
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 97
    Points : 58
    Points
    58

    Par défaut

    Citation Envoyé par Graffito Voir le message
    Si on utilise un DataAdapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    adapter.InsertCommand = "INSERT " + ... ; // commande INSERT (sans column autoincrément) 
    adapter.InsertCommand += SELECT `"+AutoIncrementColumnName+"` FROM `"+TableName+"` WHERE `"+AutoIncrementColumnName+"` = LAST_INSERT_ID() ;
    adapter.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord ;
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey ;
    AU ben desole........
    Mais pour un debutant comme moi je sais meme pas ou mettre ce que tu me dis laà.

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 536
    Points : 2 873
    Points
    2 873

    Par défaut

    Tu peux utiliser l’événement RowEnter pour ça, quand je crée une nouvelle ligne la valeur de l'id est null, tu as juste à l'affecter toi même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private void personneDataGridView_RowEnter(object sender, DataGridViewCellEventArgs e)
            {
                DataGridViewCell cellId = personneDataGridView.Rows[e.RowIndex].Cells["Id"];
                if (cellId != null && cellId.Value == null && personnes != null)
                {
                    cellId.Value = Personnes.Max(p => p.Id) + 1;
                }
            }
    toi au lieu de faire un Personnes.Max tu appelles une fonction qui te retourne le prochain ID.

  8. #8
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2004
    Messages
    864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 864
    Points : 1 633
    Points
    1 633

    Par défaut

    Citation Envoyé par superthx Voir le message
    La requete m'affiche bien le prochain numero id......
    Par contre dans le windows form j'ai toujours -1 qui apparait.
    Je crois que je vais abandonner l'idee d'afficher l'id dans le windows form.
    Effectivement, si afficher l'Id ne te sert à rien, il serait préférable de ne pas l'afficher dans le winform et laisser le SGBD gérer l'incrémentation de l'Id.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 97
    Points : 58
    Points
    58

    Par défaut

    Citation Envoyé par callo Voir le message
    Effectivement, si afficher l'Id ne te sert à rien, il serait préférable de ne pas l'afficher dans le winform et laisser le SGBD gérer l'incrémentation de l'Id.
    Merci pour tout...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/02/2009, 01h44
  2. Réponses: 0
    Dernier message: 20/03/2008, 11h09
  3. Réponses: 6
    Dernier message: 26/09/2007, 07h55
  4. Réponses: 1
    Dernier message: 19/07/2007, 21h09
  5. MySQL & Visual studio
    Par MnMall dans le forum Accès aux données
    Réponses: 1
    Dernier message: 08/04/2007, 22h17

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