Bonjour tout le monde,
Voila je suis entrain de réaliser une application que mon professeur d'informatique m'a donné à faire mais j'ai un petit souci.
Je travail en C# sous VisualStudio 2005 avec une base de données sous le SGBD SqlServer 2000.
A Savoir :
* Dans ma base j'ai 2 tables ("employé", "service").
* Dans ma form j'utilise un dataAdapteur et un DataSet relié à ma table "employé".
* Dans ma base de données, j'ai une procédure stockée permettant l'ajout du bon numero.
Sujet de l'application :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE PROCEDURE [dbo].[GETIDEMPLOYE] @myid char(36) OUTPUT AS SET @myid = NEWID() GO
c'est la gestion du personnel d'une entreprise.
Ce que je compte faire :
Donc dans cette application, j'ai une form qui permet d'afficher les différents employés de l'entreprise (qui sont renseigné dans la base) et elle me permet également de rajouter de nouveaux employés.
Mon problème survient lorsque je souhaite enregistrer un nouveaux employé c'est à dire que le champ numéro de ma table "employé" à comme valeur par défaut "NewId()".
Donc dans mon application, le champ "tb_numero" prend comme valeur par défaut "auto".
Je souhaiterais que lorsque j'enregistre ce nouveau employé dans la base de données, que le champ numero change de valeur donc qu'il ne soit plus "auto" mais un truc du genre "1E5C559B-C477-4CC3-A431-104CE1EBCF5D" ce qui est généré grâce au "NewId()".
Voici ce que le document me conseil de faire :
Et voici le code du bouton permettant d'enregistrer dans la base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private void tp1_employe_RowChanged(object sender, DataRowChangeEventArgs e) { if (e.Action == DataRowAction.Add) { dbCo_gesper.Open(); dbPs_idEmploye.ExecuteNonQuery(); dbCo_gesper.Close(); e.Row["numero"] = dbPs_idEmploye.Parameters["@myid"].Value.ToString(); } }
Je vois pas comment faire pour que lors de l'enregistrement la procédure stockée s'exécute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private void bt_validation_Click(object sender, EventArgs e) { DialogResult dr = MessageBox.Show("Voulez-vous sauvegarder tout les changements?", "Sauvegarder et Quitter l'application", MessageBoxButtons.YesNo); if (dr == DialogResult.Yes) { this.BindingContext[dbDs_employe1, dbDs_employe1.tp1_employe.TableName].EndCurrentEdit(); dbAd_employe.Update(dbDs_employe1, dbDs_employe1.tp1_employe.TableName); } }
En gros, comment je peux faire pour appeler la méthode tp1_employe_RowChanged(object sender, DataRowChangeEventArgs e) ???
Car pour le moment le champ numero de ma table "employe" prend comme valeur "auto", donc comment je peux faire pour le modifier??
Merci d'avance!!
Partager