Liaison données dans une application multi-couches

Epitt Messages postés 60 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 2 mars 2021 - 17 août 2009 à 20:48
Epitt Messages postés 60 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 2 mars 2021 - 18 août 2009 à 12:03
Bonsoir,

je me suis cassé la tête toute la journée pour afficher mes données selon le schéma qui suit, mais je n'arrive toujours pas à les afficher. J'ai tenté de déboguer pas-à-pas, mais je ne comprends pas où ça cloche. Est-ce qu'une bonne âme pourrait y jeter un oeil svp?



["http://zepload.com/images/1250533960_img_Multicouche_LiaisonsDonnees.jpg" Version plus grande]

Formulaire PRINCIPAL
L'instance Métier est bien affectée à la variable metier

        //Variable de niveau classe pour réception de l'instance clsMetier
        private clsMetier metier =  null;

        public frmPrincipal() //Constructeur
        {
            InitializeComponent();

            //Création de l'instance Métier et affectation à la variable metier
            metier = new clsMetier(); 
        }


Formulaire PROFIL
Je pense que le problème se situe ici. Je peux lier le BindingSource, mais le BindingNavigator reste grisé et les données ne s'affichent pas.
En fait, si je mets un STOP devant la surcharge du constructeur, ça passe tout droit.

        //Variable de niveau classe pour réception de l'instance clsMetier
        private clsMetier metier  = null;

        public frmProfil() //Constructeur
        {
            InitializeComponent();           
        }

        public frmProfil(clsMetier metier) //Surcharge du constructeur
        {
            InitializeComponent();

            //Affectation du paramètre metier à la variable metier
            this.metier =  metier;
        }

        private void frmProfil_Load(object sender, EventArgs e)
        {            
            
            //Création de l'instance de l'objet Met_Profil
            this.metier.CreationObjetProfil();

            //COORDONNEES DES COLLABORATEURS
            //Initialisation de la source des données
            this.bdsCollaborateur.DataSource = metier.ObjetProfil.VueCollaborateur;
            this.bdnCollaborateur.BindingSource = this.bdsCollaborateur;

            //LIAISONS DES DONNEES AUX CONTROLES
            this.txtNoPersonnel.DataBindings.Add("Text", this.bdsCollaborateur, "NoPersonnel");

        }  


Classe dll METIER
L'instance de Donnees est bien affectée à la variable Donnees.
        //Variable de niveau classe pour réception de l'instance AccesDonnees
        private AccesDonnees Donnees  = null;

        //Variable de niveau classe pour réception des instances des objets Métiers
        private Met_Profil objProf =  null;

        public clsMetier() //Constructeur
        {
            //Création de l'instance AccesDonnees et affectation à la variable Donnees
            this.Donnees = new AccesDonnees();

        }
        //Mise à disposition (en lecture seule) des objets Métier
        public Met_Profil ObjetProfil
        {
            get
            {
                return objProf;
            }
        }

        public void CreationObjetProfil()
        { 
        //Création de l'instance "Met_Profil". A disposition dans la variable "objProf".
            objProf = new Met_Profil(this.Donnees);
        }


Classe dll Met_Profil

        //Variable de niveau classe pour réception de l'instance AccesDonnees
        private AccesDonnees Donnees  = null;

        //Variable de niveau classe pour la vue Collaborateur
        private DataView dvCollaborateur = null;

        //Mise à disposition (en lecture seule) de la vue Collaborateur
        public DataView VueCollaborateur
        {
            get
            {
                return dvCollaborateur;
            }
        }

        public Met_Profil() //Constructeur
        {
            
        }

        public Met_Profil(AccesDonnees Donnees) //Surcharge du constructeur
        {
            //Affectation du paramètre Donnees à la variable Donnees
            this.Donnees = Donnees;

            this.PreparationDonnees();
        }
        
        //Méthode qui va regrouper le chargements des données de chaque table.
        private void PreparationDonnees()
        { 
            this.Donnees.ChargerCollaborateur();           
        }    


Composants ACCESDONNEES
Le chargement du DataSet se fait bien. La source de données est OK.
        public AccesDonnees() //Constructeur
        {
            InitializeComponent();
        }

        public AccesDonnees(IContainer container) //Surcharge du constructeur
        {
            container.Add(this);
            InitializeComponent();
        }

        //Chargement des données dans le DataSet
        public void ChargerCollaborateur()
        {            this.tbaCollaborateur.Fill(this.formStats09DataSet1.COLLABORATEUR);
        }

3 réponses

Epitt Messages postés 60 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 2 mars 2021
17 août 2009 à 21:16
J'ai oublié de préciser que c'est en mode déconnecté.
0
Epitt Messages postés 60 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 2 mars 2021
18 août 2009 à 11:29
Bon, l'instance Metier n'est pas transmise, car au déboguage il ne va pas lire la surcharge du constructeur du formulaire Profil..!?
J'ai donc transmis l'instance via l'événement Load de ce formulaire, et ça passe.

Les données sont chargées dans le DataSet, mais ne sont pas transmise au BindingSource pourtant situé dans le même événement Load du formulaire. Est-ce que vous voyer pourquoi svp ?

J'y retourne...peut-être que j'y arriverai d'ici 3 ans et demi
0
Epitt Messages postés 60 Date d'inscription samedi 16 juin 2001 Statut Membre Dernière intervention 2 mars 2021
18 août 2009 à 12:03
J'ai trouvé un maillon manquant pour remonter l'information:
        //Méthode qui va regrouper le chargements des données de chaque table.
        private void PreparationDonnees()
        { 
            //Appel de la méthode qui va charger les données dans les composants AccesDonnees
            this.Donnees.ChargerCollaborateur();
[b]            //Affectation de la vue par défaut à la VueCollaborateur
            this.dvCollaborateur = this.Donnees.formStats09DataSet1.COLLABORATEUR.DefaultView/b;      
        }


Toutefois, dès que la méthode "ChargerCollaborateur" est terminée, il retourne directement afficher le formulaire sans remonter les infos. Je ne pige pas
0
Rejoignez-nous