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 :
Nom : uc.png
Affichages : 144
Taille : 1,9 Ko

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.

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();
                        }
                    }
                }
            }
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
            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);
                        }
                    }
                }
            }
Obtient donc :

Nom : result.png
Affichages : 149
Taille : 24,3 Ko

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 !

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();
                }
            }
Navré pour la longueur de ce post !
Merci d'avance pour votre aide,

Cordialement