Bonjour, bonsoir !
Actuellement étudiant, je travaille dans le cadre d'un stage, sur le développement d'un logiciel de gestion pour un EHPAD (Orpea).
La fonctionnalité sur laquelle je travaille en ce moment, doit permettre de créer une "fiche résident". Le but étant donc de renseigner
quelques informations sur la personne dont :
- Nom
- Prénom
- Autonomie
- Date d'entrée
- Toutes les activités dont le résident :
a déjà pratiqué,
n'a jamais pratiqué mais est intéressé,
n'est pas du tout intéressé.
Le point où je bute est le dernier. En effet j'ai eu beaucoup de mal à visualiser un moyen de mettre en œuvre cette fonction.
Cependant j'ai tout de même réussi à me creuser la tête et à produire quelque chose qui fonctionne... à moitié...
Il faut savoir qu'il y a 6 catégories d'activités et au total 40 activités.
J'ai donc dans un premier temps créé un UserControl avec les contrôles suivants :
- Label : Pour le nom de la catégorie des activités
- checkedListBox : Pour pouvoir cocher les activités
- comboBox : Afin de pouvoir sélectionner un "mode" ex : a déjà pratiqué, pour toutes les activités cochées.
Voici un aperçu :
J'ai ensuite fait les get set afin d'avoir accès aux contrôles, puis, au Load du formulaire j'ai fait les requêtes suivantes :
Cette première requête récupère tous les noms des catégories des activités, crée autant de UserControl qu'il y a de catégorie
puis inscrit le nom dans le label.
Cette requête est chargée de récupérer toutes les activités pour chaque catégorie.
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 using (var connection = new MySqlConnection()) { connection.ConnectionString = "server=**;Port=3306; userid=**; password=**; database=orpeafauriel_bdd"; connection.Open(); const string query = "SELECT CAT_LIBELLE FROM CATEGORIES"; // Récupère le nom des catégories des activités using (var cmd = new MySqlCommand(query, connection)) { using (var reader = cmd.ExecuteReader()) { while (reader.Read()) { // Créer un UserControl tant qu'il y a de catégorie soit 6 et affiche le nom dans le label. _userControl1 = new UserControl1(); _userControl1.LblCategM.Text = reader.GetString("CAT_LIBELLE"); flowLayoutPanel1.Controls.Add(_userControl1); // Ajoute à chaque comboBox des 6 UserControls les 3 possibilités avec un ID (pour la BDD) _userControl1.ComboCotationM.Items.Add(new ObjectItemId("++", "A déjà pratiqué")); _userControl1.ComboCotationM.Items.Add(new ObjectItemId("+-", "N'a jamais pratiqué mais est intéressé")); _userControl1.ComboCotationM.Items.Add(new ObjectItemId("--", "N'est pas du tout intéressé")); // Exécute la requête suivante GetActivites(); } } } }
Obtient donc :
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 using (var connection2 = new MySqlConnection()) { connection2.ConnectionString = "server=**;Port=3306; userid=**; password=**; database=orpeafauriel_bdd"; connection2.Open(); // Cette requête récupère toutes les activités en fonction du nom de la catégorie inscrite dans le label // Si le label = Artistiques, alors toutes les activités de cette catégorie seront inscrites dans la CheckedListActivites const string query2 = "SELECT ACT_LIBELLE FROM ACTIVITES WHERE ACT_CODE_CATEG = (SELECT CAT_CODE FROM CATEGORIES WHERE CAT_LIBELLE = @CAT_LIBELLE)"; using (var cmd2 = new MySqlCommand(query2, connection2)) { cmd2.Parameters.Add(new MySqlParameter("@CAT_LIBELLE", MySqlDbType.VarChar)); cmd2.Parameters["@CAT_LIBELLE"].Value = _userControl1.LblCategM.Text; using (var reader2 = cmd2.ExecuteReader()) { while (reader2.Read()) { // Ajoute toutes les activités de la catégorie en question dans la CheckedList _userControl1.CheckedListActivites.Items.Add(reader2.GetString("ACT_LIBELLE"), false); } } } }
Le problème maintenant et la question est la suivante :
Comment puis-je insérer tout ça dans la table de ma base de données ?
J'ai tenté de boucler les paramètres mais sans grand succès !
Navré pour la longueur de ce post !
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 using (var mySqlConnection = new MySqlConnection()) { mySqlConnection.ConnectionString = "server=**;Port=3306; userid=**; password=**; database=orpeafauriel_bdd"; mySqlConnection.Open(); const string query = "INSERT INTO CENTRES_INTERET(CI_RESID, CI_CATEG, CI_ACT, CI_COTATION) " + "SELECT RESID_ID, ACT_CODE_CATEG, ACT_CODE, COTA_ID " + "FROM RESIDENTS, ACTIVITES, COTATIONS " + "WHERE RESID_NOM = @RESID_NOM AND ACT_LIBELLE = @ACT_LIBELLE AND COTA_LIBELLE = @COTA_LIBELLE"; using (var mySqlCommand = new MySqlCommand(query, mySqlConnection)) { mySqlCommand.Parameters.Add(new MySqlParameter("@RESID_NOM", MySqlDbType.VarChar)); mySqlCommand.Parameters.Add(new MySqlParameter("@ACT_LIBELLE", MySqlDbType.VarChar)); mySqlCommand.Parameters.Add(new MySqlParameter("@COTA_LIBELLE", MySqlDbType.VarChar)); var cotationIdValue = ((ObjectItemId)_userControl1.ComboCotationM.SelectedItem).Value; foreach (var items in _userControl1.CheckedListActivites.CheckedItems) { mySqlCommand.Parameters["@ACT_LIBELLE"].Value = items.ToString(); } mySqlCommand.Parameters["@RESID_NOM"].Value = "BOUCHET"; mySqlCommand.Parameters["@COTA_LIBELLE"].Value = cotationIdValue; mySqlCommand.ExecuteNonQuery(); } }
Merci d'avance pour votre aide,
Cordialement
Partager