Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre à l'essai
    Inscrit en
    juillet 2003
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 90
    Points : 23
    Points
    23

    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 à l'essai
    Inscrit en
    juillet 2003
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 90
    Points : 23
    Points
    23

    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 :
    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 :
    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 : 29
    Localisation : France, Paris (Île de France)

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

    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 :
    SELECT isnull(MAX(ID), 0) + 1 FROM produccion
    Sous MySql :

    Code :
    SELECT COALESCE(MAX(ID), 0) + 1 FROM produccion
    Mais je doute que ton problème vienne de là.
    Tox

  4. #4
    Membre à l'essai
    Inscrit en
    juillet 2003
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 90
    Points : 23
    Points
    23

    Par défaut

    Citation Envoyé par toxycyty Voir le message
    Salut,

    Sous MySql :

    Code :
    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 692
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 692
    Points : 6 537
    Points
    6 537

    Par défaut

    Si on utilise un DataAdapter :
    Code :
    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 à l'essai
    Inscrit en
    juillet 2003
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 90
    Points : 23
    Points
    23

    Par défaut

    Citation Envoyé par Graffito Voir le message
    Si on utilise un DataAdapter :
    Code :
    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 Expert

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2010
    Messages : 1 113
    Points : 1 999
    Points
    1 999

    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 :
    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 Marcel
    Développeur informatique
    Inscrit en
    février 2004
    Messages
    850
    Détails du profil
    Informations personnelles :
    Nom : Homme Marcel
    Localisation : Togo

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

    Informations forums :
    Inscription : février 2004
    Messages : 850
    Points : 1 387
    Points
    1 387

    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 à l'essai
    Inscrit en
    juillet 2003
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : juillet 2003
    Messages : 90
    Points : 23
    Points
    23

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •