//-------------------------------------------------------
        protected override CResultAErreur GetDatasHorsCalculees(CListeQuerySource sources)
        {
            CEasyQuery     query  = Query;
            CResultAErreur result = CResultAErreur.True;

            if (result && TypeSource == null)
            {
                result.EmpileErreur(I.T("###Table object must be specified |"));
            }
            if (query == null || sources == null)
            {
                result.EmpileErreur(I.T("###Query needs a source to provide datas|"));
            }

            C2iRequeteAvancee requete = new C2iRequeteAvancee();

            requete.TableInterrogee = CContexteDonnee.GetNomTableForType(TypeSource);

            result = FiltreDynamique.GetFiltreData();
            if (!result)
            {
                return(result);
            }
            if (result.Data is CFiltreData)
            {
                requete.FiltreAAppliquer = result.Data as CFiltreData;
            }
            foreach (IColumnDeEasyQuery col in Columns)
            {
                CColumnDeEasyQueryChampDeRequete colR = col as CColumnDeEasyQueryChampDeRequete;
                requete.ListeChamps.Add(colR);
            }
            DataTable table = null;

            if (requete.ListeChamps.Count > 0)
            {
                result = requete.ExecuteRequete(CContexteDonneeSysteme.GetInstance().IdSession);
                if (!result)
                {
                    result.EmpileErreur(I.T("###Error on table @1|"));
                    return(result);
                }
                table = result.Data as DataTable;
            }
            else
            {
                table = new DataTable();
            }
            table.TableName = NomFinal;
            return(result);
        }
        ////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Retourne un filtre dynamique pour la table associée en
        /// prenant en compte les filtres des parents
        /// </summary>
        /// <returns></returns>
        public CFiltreDynamique GetFiltreToElementPrincipal()
        {
            if (TouteLaTable)
            {
                return(null);
            }
            CFiltreDynamique filtreDynamiqueParent = null;

            if (FiltreParent != null)
            {
                filtreDynamiqueParent = FiltreParent.GetFiltreToElementPrincipal();
            }

            Type            typeElements = CContexteDonnee.GetTypeForTable(NomTable);
            CStructureTable structure    = CStructureTable.GetStructure(typeElements);

            CFiltreDynamique filtreFinal = (CFiltreDynamique)FiltreDynamique.Clone();

            CDefinitionProprieteDynamique defToParent = null;

            //Trouve la propriété qui amène sur le parent
            if (RelationToParent != null)
            {
                if (RelationToParent.TableFille == NomTable)
                {
                    if (filtreDynamiqueParent != null && filtreDynamiqueParent.ComposantPrincipal != null)
                    {
                        Type   tp = CContexteDonnee.GetTypeForTable(RelationToParent.TableParente);
                        string strNomConvivial = DynamicClassAttribute.GetNomConvivial(tp);
                        //Nous somme dans une relation fille
                        foreach (CInfoRelation relationParente in structure.RelationsParentes)
                        {
                            if (relationParente.RelationKey == RelationToParent.RelationKey)
                            {
                                defToParent = new CDefinitionProprieteDynamiqueDotNet(
                                    strNomConvivial,
                                    relationParente.Propriete,
                                    new CTypeResultatExpression(CContexteDonnee.GetTypeForTable(relationParente.TableParente), false),
                                    true,
                                    true,
                                    "");
                                break;
                            }
                        }
                        if (defToParent == null)
                        {
                            defToParent = new CDefinitionProprieteDynamique(
                                strNomConvivial,
                                RelationToParent.RelationKey,
                                new CTypeResultatExpression(tp, false),
                                true,
                                true,
                                "");
                        }
                    }
                }
                else
                {
                    //Nous sommes dans une relation parente
                    foreach (CInfoRelation relationFille in structure.RelationsFilles)
                    {
                        if (relationFille.RelationKey == RelationToParent.RelationKey)
                        {
                            defToParent = new CDefinitionProprieteDynamiqueDotNet(
                                relationFille.NomConvivial,
                                relationFille.Propriete,
                                new CTypeResultatExpression(CContexteDonnee.GetTypeForTable(relationFille.TableFille), true),
                                true,
                                true,
                                "");
                            break;
                        }
                    }
                    if (defToParent == null)
                    {
                        Type tp = CContexteDonnee.GetTypeForTable(RelationToParent.TableFille);
                        defToParent = new CDefinitionProprieteDynamique(
                            DynamicClassAttribute.GetNomConvivial(tp) + "(" + RelationToParent.NomConvivial + ")",
                            RelationToParent.RelationKey,
                            new CTypeResultatExpression(tp, false),
                            true, true);
                    }

                    if (filtreDynamiqueParent == null)
                    {
                        filtreDynamiqueParent = new CFiltreDynamiqueParentTablePleine(NomTable, RelationToParent);
                    }
                }
            }
            if (filtreDynamiqueParent != null && filtreDynamiqueParent.ComposantPrincipal != null)
            {
                filtreDynamiqueParent.ComposantPrincipal.InsereDefinitionToObjetFinal(defToParent);

                if (FiltreDynamique == null || FiltreDynamique.ComposantPrincipal == null)
                {
                    return(filtreDynamiqueParent);
                }

                CComposantFiltreDynamique composantEt = null;
                if (!(filtreDynamiqueParent.ComposantPrincipal is CComposantFiltreDynamiqueEt))
                {
                    composantEt = new CComposantFiltreDynamiqueEt();
                    composantEt.AddComposantFils(filtreDynamiqueParent.ComposantPrincipal);
                }
                else
                {
                    composantEt = (CComposantFiltreDynamiqueEt)filtreDynamiqueParent.ComposantPrincipal;
                }
                composantEt.AddComposantFils(filtreFinal.ComposantPrincipal);
                filtreFinal.ComposantPrincipal = composantEt;
            }

            if (filtreFinal.ComposantPrincipal == null)
            {
                return(null);
            }
            return(filtreFinal);
        }