Bonjour,

Tout d'abord, je suis au courant qu'il existe d'autres (anciens) sujets répondant à ce problème, mais si je crée un nouveau post, c'est que ma demande est différente

Je vous présente rapidement mon projet :
Je dispose d'une base de données Access contenant des commandes de produits (qui sont, pour info, associées à un site en particulier et à un service au sein de l'entreprise).

Mon objectif est le suivant : rendre visible des labels et modifier leur contenu, en ayant le minimum de code sur la page contenant les événements du formulaire (pour des caprices du prof qui risque d'examiner mon projet), soit donc en utilisant une fonction définie dans ma classe Commande.
Si je ne trouve pas de solution, tant pis pour le prof, je retournerai à la méthode classique, en créant une fonction directement sur la page où se trouve le code de l'événement...

Un utilisateur peut rechercher une commande : il saisit la référence et clique sur le bouton "Rechercher".
Voici le code déclencheur (faisant partie de la page où j'aimerais le moins de code possible) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
private void btChercherCommande_Click(object sender, EventArgs e)
{
    string refCmdSaisie = SaisieRefCommande.Text;
    if (refCmdSaisie != "")
   {
        Commande commandeCherchee = new Commande(refCmdSaisie);
 
        // Si la référence existe, on affiche les détails de la commande
        commandeCherchee.afficherCommande(refCmdSaisie);
    }
}
Voici les méthodes de ma classe Commande :

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
        // Cette fonction est utilisée pour faire apparaître les informations principales d'une commande
        // (avec le label avec libellé d'info et le label de données)
 
        // labelTxt : Nom du label qui contiendra la valeur
        // labelLib : Nom du label qui contient le libellé associé au champ
 
        public void labelCmd(Label labelTxt, string message, Label labelLib)
        {
            labelTxt.Text = message;
            labelTxt.Visible = true;
            labelLib.Visible = true;
        }
 
        // Cette fonction vérifie si la commande recherchée existe
        // Si oui, on affiche ses détails
        // Si non, on affiche un message d'erreur
 
        public void afficherCommande(string refCommandeForm)
        {
            // Objet du formulaire où se situent les données à afficher
            formAccueil accueil = new formAccueil();
 
            maConnexion = ConnexionSingleton.GetLinstance();
            maConnexion.Ouvrir();
            maCommand = maConnexion.GetConnexion().CreateCommand();
 
            string reqInfosCommande = "SELECT Se.libelleService, Si.nomClinique, C.fournisseurCommande, "
            + "C.dateCommande, C.dateLivraison, C.nomNegociateur, C.prenomNegociateur "
            + "FROM commande C, site Si, service Se "
            + "WHERE C.refClinique = Si.refClinique "
            + "AND C.codeService = Se.codeService "
            + "AND C.refCommande = '" + refCommandeForm + "' ";
            maCommand.CommandText = reqInfosCommande;
 
            DbDataReader data = maCommand.ExecuteReader();
 
            // Si la requête a un résultat --> que la référence existe, on affiche les infos de la commande
            if (data.HasRows)
            {
                accueil.lbAlerteCmd.Visible = false;
 
                while (data.Read())
                {
                    // Mise à jour et "apparition" des labels
 
                    labelCmd(accueil.lbValClinique, data["nomClinique"].ToString(), accueil.lbLibClinique);
                    labelCmd(accueil.lbValService, data["libelleService"].ToString(), accueil.lbLibService);
                    labelCmd(accueil.lbValFournisseur, data["fournisseurCommande"].ToString(), accueil.lbLibFournisseur);
                    labelCmd(accueil.lbValDateCmd, data["dateCommande"].ToString(), accueil.lbLibDateCmd);
                    labelCmd(accueil.lbValDateLivraison, data["dateLivraison"].ToString(), accueil.lbLibDateLivraison);
                    labelCmd(accueil.lbValNomNego, data["nomNegociateur"].ToString(), accueil.lbLibNomNego);
                    labelCmd(accueil.lbValPrenomNego, data["prenomNegociateur"].ToString(), accueil.lbLibPrenomNego);
                }
            }
 
            maConnexion.Fermer();
        }
    }

Mon problème est le suivant : j'ai mis la propriété "Modifiers" des labels en "public" (ce qui je suppose autorise la modification depuis une classe).
Je n'ai aucune erreur de compilation, et pourtant les labels ne se mettent pas à jour.
J'ai fait plusieurs tests, il ne semble pas y avoir de problèmes de format de données.
Le programme passe bien dans la boucle, la référence de commande saisie est correcte, et la base de données est bien remplie.
(Sur mon vrai code, j'ai mis toutes les boucles else pour afficher un message quand si les champs sont vides, quand la requête ne donne pas de résultat etc...)

Il y a de grandes chances pour que l'erreur soit bête, mais étant donné que je me suis mis depuis peu au C#, j'ai quelques difficultés à l’apercevoir
J'espère avoir été assez clair !

Je vous remercie donc d'avance pour vos solutions et/ou vos conseils

Cordialement,
Owl'