Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > Windows Forms
Windows Forms Forum d'entraide sur le développement Windows Forms & Applications Windows. Avant de poster -> Articles Windows Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/12/2012, 00h24   #1
superthx
Membre à l'essai
 
Inscription : juillet 2003
Messages : 87
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 87
Points : 22
Points : 22
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
superthx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2012, 22h35   #2
superthx
Membre à l'essai
 
Inscription : juillet 2003
Messages : 87
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 87
Points : 22
Points : 22
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 ?
superthx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h04   #3
toxycyty
Membre confirmé
 
Inscription : juillet 2006
Messages : 261
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 261
Points : 205
Points : 205
Salut,

Citation:
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
toxycyty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h20   #4
superthx
Membre à l'essai
 
Inscription : juillet 2003
Messages : 87
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 87
Points : 22
Points : 22
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.
superthx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h35   #5
Graffito
Expert Confirmé Sénior
 
Avatar de Graffito
 
Inscription : janvier 2006
Messages : 5 390
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 5 390
Points : 6 034
Points : 6 034
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
Graffito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 11h58   #6
superthx
Membre à l'essai
 
Inscription : juillet 2003
Messages : 87
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 87
Points : 22
Points : 22
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à.
superthx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 12h41   #7
youtpout978
Membre Expert
 
Homme John Doe
Développeur .NET
Inscription : novembre 2010
Messages : 903
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 : 903
Points : 1 440
Points : 1 440
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.
youtpout978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 10h57   #8
callo
Membre éclairé
 
Avatar de callo
 
Homme Marcel
Développeur informatique
Inscription : février 2004
Messages : 351
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 : 351
Points : 333
Points : 333
Envoyer un message via MSN à callo Envoyer un message via Yahoo à callo Envoyer un message via Skype™ à callo
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.
callo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 21h54   #9
superthx
Membre à l'essai
 
Inscription : juillet 2003
Messages : 87
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 87
Points : 22
Points : 22
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...
superthx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h22.


 
 
 
 
Partenaires

Hébergement Web