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

  1. #1
    Nouveau 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 : 29
    Points
    29

    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
    Nouveau 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 : 29
    Points
    29

    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 confirmé
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Paris (Île de France)

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

    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
    Nouveau 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 : 29
    Points
    29

    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 Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 990
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 990
    Points : 7 763
    Points
    7 763

    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
    Nouveau 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 : 29
    Points
    29

    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
    Expert Confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2010
    Messages
    1 489
    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 489
    Points : 2 719
    Points
    2 719

    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 Expert Avatar de callo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2004
    Messages
    862
    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 : 862
    Points : 1 588
    Points
    1 588

    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
    Nouveau 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 : 29
    Points
    29

    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.

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