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 :

Programmer des commandes avec C# sous visual studio 2010


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Programmer des commandes avec C# sous visual studio 2010
    Salut.
    Je suis débutant en programmation et c'est pour la première fois que je voulais mettre en place une application permettant la gestion des stagiaire.
    J'ai 9 formulaire et la tache consiste a Enregistrer,Modifier et Supprimer des Enregistrement dans une base de données(sous SQL-SERVER2005) et programmer l'interface sous visual studio avec C#.
    Voila ce que j'ai pu faire:
    programmer les commandes "Enregistrer", "Modifier" et "Supprimer" les stagiaires dans une BD sur un formulaire.
    Biesur des enregistrements avec des formulaires et DataGridView.
    Vos reponses me seront utiles.

  2. #2
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Salut,

    Où est ton problème?

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par benamou11 Voir le message
    .
    Vos reponses me seront utiles.
    Je n'en doute pas mais quelle est la question ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Comment gerer les conflits des clés primaires?
    En fait j'ai programmé les boutons(enregistrer,modifier et supprimer) sous visual studio 2010 avec c# ,le problème est que:
    si j’ajoute un nouveau enregistrement dans la table STAGIAIRE(pour ajouter un nouveau stagiaire), le messages suivant s'affiche
    Violation de la contrainte Primary Key 'PK_Stagiaire'.Impossible d’insérer la clé en double dans l'objet dbo.Stagiaire'.
    J'aimerai savoir comment faire afin de gérer ces conflits.
    Merci d'avoir jeter un coup d’œil.

  5. #5
    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
    Bonjour,

    Ce message te dis que tu essayes d'ajouter une ligne dans ta table stagiaire dont la clé primaire existe déjà.
    Admettons que ta table stagiaire soit comme indiqué avec Id en clé primaire :

    Id | Nom | Prénom
    ------------------------------
    1 | Dupont | Jean
    2 | Martin | Pierre
    3 | Dubois | Alain

    Tu dois essayer d'ajouter la ligne suivante :

    stagiaire(3, Durand, Claude).

    Tu ne peux pas avoir 2 stagiaires ayant un Id à 3, donc ta requête renvoie une erreur et ne s’exécute pas!

  6. #6
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Bonjour,
    En général, on ne donne pas de code tout cuit sur ce forum. Mais, si tu postes ton code qui correspond à tes insertions; on pourras toujours te dire ce qui doit être changé.
    Sinon, tu devras te débrouiller seul à partir de ce qu'on imagine et propose.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    La c'est mon code qui permet d’enregistrer un stagiaire et ca prend les lignes vides et aussi ça me pause un problème si j'enregistre un 2eme stagiaire avec le même numéro.

    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
     private void BtnEnregistrer_Click(object sender, EventArgs e)
            {
                try
                {
                    if (STATUT == "NEW")
                    {
                        int n = stagiaireTableAdapter.InsertQuery(TxtNumStg.Text, txtNomStg.Text, TxtPrenomStg.Text, CbSexeStag.Text, TxtNiv_etude.Text, TxtPhone.Text, TxtEmail.Text, Txtprofil.Text, txtNationaliteStg.Text, TxttypeStage.Text, CbNumEnc.Text, DtpDateNaissance.Value);
                        if (n > 0)
                        {
                            MessageBox.Show("Mise a jour effectuée", "AJOUT STAGIAIRE", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
    
    
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                if (STATUT == "MODIF")
                {
                    TxtNumStg.Text = CODE;
                    int n = stagiaireTableAdapter.UpdateQuery(TxtNumStg.Text, txtNomStg.Text, TxtPrenomStg.Text, CbSexeStag.Text, TxtNiv_etude.Text, TxtPhone.Text, TxtEmail.Text, Txtprofil.Text, txtNationaliteStg.Text, TxttypeStage.Text, DtpDateNaissance.Value);
                    if (n > 0)
                    {
                        MessageBox.Show("Mise a jour effectuée", "MODIFICATION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
    
            }
    Voila la requête provenant de DATASET:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     INSETRTQUERRY
    
    INSERT INTO [Stagiaire] ([Num_stag], [Nom_stag], [Pren_stag], [Sexe_stag], [Niv_etud], [Gsm_stag], [E_mail_stag], [Profil_stag], [Nation_stag], [Type_stag], [Num_enc], [Date_n_stag]) VALUES (@Numstag, @Nomstag, @Prenstag, @Sexestag, @Nivetud, @Gsmstag, @Emailstag, @Profilstag, @Nationstag, @Typestag, @Numenc, @Datenstag)
    Avec Num_stag(Numero du stagiaire) comme Primary_key.

    Et voila la requête UPDATE:
    UPDATEQUERRY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE [Stagiaire] SET [Num_stag] = @Num_stag, [Nom_stag] = @Nom_stag, [Pren_stag] = @Pren_stag, [Sexe_stag] = @Sexe_stag, [Niv_etud] = @Niv_etud, [Gsm_stag] = @Gsm_stag, [E_mail_stag] = @E_mail_stag, [Profil_stag] = @Profil_stag, [Nation_stag] = @Nation_stag, [Type_stag] = @Type_stag,[date_nais_stag] = @date_nais_stag 
    WHERE ([Num_stag] = @Num_stag)
    Vos suggestions m’intéressent.

  8. #8
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par benamou11 Voir le message
    La c'est mon code qui permet d’enregistrer un stagiaire et ça prend les lignes vides et aussi ça me pause un problème si j'enregistre un 2eme stagiaire avec le même numéro.
    Tu parles de ton champ "Num_stag" là ? avec le même N° si c'est ta PK, c'est normal que ça plante ! Ca s'appelle une contrainte d'intégrité, ici une clef primaire, qui doit être unique.

    Accessoirement si ta PK est un int auto-incrémenté par ta DB, alors il est inutile de la passer à la requête. (peut-être en out pour le récupérer)

    et pour le UPDATE on ne fait pas d'update d'une PK !!!!

    Là, il y a des lacunes en SQL, je te conseille donc de lire une doc.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par kheironn Voir le message
    Tu parles de ton champ "Num_stag" là ? avec le même N° si c'est ta PK, c'est normal que ça plante ! Ca s'appelle une contrainte d'intégrité, ici une clef primaire, qui doit être unique.

    Accessoirement si ta PK est un int auto-incrémenté par ta DB, alors il est inutile de la passer à la requête. (peut-être en out pour le récupérer)

    et pour le UPDATE on ne fait pas d'update d'une PK !!!!

    Là, il y a des lacunes en SQL, je te conseille donc de lire une doc.

    Merci pour la remarque d'update,je l'ai modifié et j'ai mis le code concernant ce update.
    Mais mon problème se pose sur l'enregistrement. C'est-a-dire le PK.

    En ce qui concerne le Num_stag,il n'est pas de type (auto-incrément) mais plutôt de type:Varchar(10).
    Le problème est de savoir si y'a une manière de gérer les contraintes par une code.
    Merci pour votre aide.

  10. #10
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par benamou11 Voir le message
    En ce qui concerne le Num_stag,il n'est pas de type (auto-incrément) mais plutôt de type:Varchar(10).
    Le problème est de savoir si y'a une manière de gérer les contraintes par une code.
    Merci pour votre aide.
    Par code ? je ne comprends pas bien.
    j'imagine que tu as un N° de matricule "toto10" et que tu veux l'insérer. Tu as configuré ta table pour que ce champ soit la PK, donc unique. Il est donc impossible de l'ajouter plusieurs fois dans ta table.
    Pour être certain que ce N° n'est pas déjà utilisé, je ferai une requête en base. Mais c'est inutile, en fait, car tu as déjà un retour de contrainte d'unicité violée. Donc tu sais que ce N° existe déjà en base.

    Quel comportement souhaites-tu avoir ? (De toutes façons tu ne devrais pas avoir 1 identifiant pour 2 personnes ! Donc ce cas ne devrait pas se produire.)

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par kheironn Voir le message
    Par code ? je ne comprends pas bien.
    j'imagine que tu as un N° de matricule "toto10" et que tu veux l'insérer. Tu as configuré ta table pour que ce champ soit la PK, donc unique. Il est donc impossible de l'ajouter plusieurs fois dans ta table.
    Pour être certain que ce N° n'est pas déjà utilisé, je ferai une requête en base. Mais c'est inutile, en fait, car tu as déjà un retour de contrainte d'unicité violée. Donc tu sais que ce N° existe déjà en base.

    Quel comportement souhaites-tu avoir ? (De toutes façons tu ne devrais pas avoir 1 identifiant pour 2 personnes ! Donc ce cas ne devrait pas se produire.)
    En fait, j'aimerai que lorsqu'un utilisateur entre par exemple "toto10" comme un nouveau identifiant, on l'affiche le message suivant dans un MessageBox:
    'Cet identifiant existe déjà, saisissez un autre'.
    J'espere que vous m'avez compris, kheironn?
    Je vous remerci pour votre attention.

  12. #12
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 167
    Points : 7 420
    Points
    7 420
    Billets dans le blog
    1
    Par défaut
    Comment est calculé l'identifiant si c'est un string ?

    En effet, c'est bien beau de vouloir éviter les erreurs, mais il faudrait encore que le programme (et même l'utilisateur) sâche comment créer un nouvel ID...

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Comment est calculé l'identifiant si c'est un string ?

    En effet, c'est bien beau de vouloir éviter les erreurs, mais il faudrait encore que le programme (et même l'utilisateur) sâche comment créer un nouvel ID...

    je parle pas de calcul mais plutot c'est une application avec laquelle on peux enregistrer un stagiaire. Pour cela,a chaq enregistrement,on entre un identifiant ici
    (NumStagiaire de format 001/MM/AAAA/nomEntreprise)
    002/MM/AAAA/nomEntreprise
    ..................................
    100/MM/AAAA/nomEntreprise
    ici c'est le
    num qui va de oo1 a 100 qui change et mm=mois d'enregistrement et aaaa=l'annee.
    mais si en en voulant enregister un nouveau par exemple
    003/MM/AAAA/nomEntreprise et qu'on met 002/MM/AAAA/nomEntreprise
    ,on affiche le MessageBox pour indiquer a l'utilisateur que cet identifiant existe déjà.
    Merci.

Discussions similaires

  1. [Débutant] Problème avec ACCESS sous Visual Studio 2010
    Par Cyrodil91 dans le forum VB.NET
    Réponses: 0
    Dernier message: 27/06/2012, 15h18
  2. Réponses: 0
    Dernier message: 11/07/2011, 11h47
  3. Réponses: 1
    Dernier message: 18/04/2011, 17h21
  4. Réponses: 3
    Dernier message: 20/03/2011, 11h43
  5. Réponses: 10
    Dernier message: 19/03/2007, 15h37

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