예제 #1
0
        /// <summary>
        /// Le data du result contient un CArbreTable
        /// </summary>
        /// <returns></returns>
        public CResultAErreur CalculeArbre(CArbreTable arbre)
        {
            CResultAErreur result = CResultAErreur.True;
            //Identifie les relations à mettre en jeu
            ArrayList lstChamps = new ArrayList();

            if (m_strTableInterrogee == "")
            {
                result.EmpileErreur(I.T("Request table is not defined|106"));
                return(result);
            }
            if (arbre == null)
            {
                arbre = new CArbreTableParente(m_strTableInterrogee);
            }
            foreach (C2iChampDeRequete champ in ListeChamps)
            {
                try
                {
                    foreach (CSourceDeChampDeRequete source in champ.Sources)
                    {
                        CComposantFiltreChamp composant    = new CComposantFiltreChamp(source.Source, m_strTableInterrogee);
                        CArbreTable           arbreEnCours = arbre;
                        foreach (CInfoRelationComposantFiltre relation in composant.Relations)
                        {
                            //Stef 08/08/2013 : toutes les relations sont integrées
                            //en leftouter : en effet, on doit prendre toutes les valeurs
                            //de la table source, même si elles n'ont pas de valeur liées dans la
                            //table fille
                            arbreEnCours = arbreEnCours.IntegreRelation(relation, true, composant.IdChampCustom);
                            if (arbreEnCours == null)
                            {
                                result.EmpileErreur(I.T("Itegration error of the relation @1|107", relation.RelationKey));
                                return(result);
                            }
                        }
                        source.ChampDeTable = composant.NomChamp;
                        source.Alias        = arbreEnCours.Alias;
                    }
                }
                catch (Exception e)
                {
                    result.EmpileErreur(new CErreurException(e));
                    result.EmpileErreur(I.T("Error in field @1|108", champ.NomChamp));
                    return(result);
                }
            }
            result.Data = arbre;
            return(result);
        }
예제 #2
0
        /// ////////////////////////////////////////////////////////////////
        /// Le data du result contient un CInfoRelationComposantFiltre[]
        public CResultAErreur GetArbreTables()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_composantPrincipal == null)
            {
                result = CalculeComposantPrincipal();
            }
            if (!result)
            {
                return(result);
            }
            CArbreTableParente arbre = new CArbreTableParente(m_strTablePrincipale);

            result = GetRelations(m_composantPrincipal, arbre, false);
            foreach (CComposantFiltreChamp champ in ChampsAAjouterAArbreTable)
            {
                GetRelations(champ, arbre, true);
            }
            result.Data = arbre;
            return(result);
        }
예제 #3
0
        public CResultAErreur CalculeArbre()
        {
            CArbreTableParente arbre = new CArbreTableParente(m_strTableInterrogee);

            return(CalculeArbre(arbre));
        }