Exemple #1
0
 public string GetValeurData(object valeur, CParametreVisuDonneePrecalculee parametre)
 {
     if (m_dummyForData != null && FormuleData != null)
     {
         if (m_typeObjetDonneeData != null)
         {
             try
             {
                 Int32        nVal = Int32.Parse(valeur.ToString());
                 CObjetDonnee obj  = parametre.GetFromCache(m_typeObjetDonneeData, nVal);
                 m_dummyForData.SetValeurChamp(m_dummyForData.Variable, obj);
             }
             catch {
                 return(valeur.ToString());
             }
         }
         else
         {
             m_dummyForData.SetValeurChamp(m_dummyForData.Variable, valeur);
         }
         CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(m_dummyForData);
         CResultAErreur result             = FormuleData.Eval(ctx);
         if (result)
         {
             return(result.Data.ToString());
         }
     }
     if (valeur != null)
     {
         return(valeur.ToString());
     }
     return("");
 }
Exemple #2
0
        public string GetValeurHeader(DataColumn col, CParametreVisuDonneePrecalculee parametre)
        {
            CChampFinalDetableauCroiseDonneeAvecValeur champFinal = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDetableauCroiseDonneeAvecValeur;
            object valeurPivot = null;

            if (champFinal != null)
            {
                valeurPivot = champFinal.ValeurPivot;
            }
            if (FormuleHeader != null)
            {
                try
                {
                    if (m_typeObjetDonneeHeader != null)
                    {
                        Int32        nVal = Int32.Parse(champFinal.ValeurPivot.ToString());
                        CObjetDonnee obj  = parametre.GetFromCache(m_typeObjetDonneeHeader, nVal);
                        m_dummyForHeader.SetValeurChamp(m_dummyForHeader.Variable, obj);
                    }
                    else if (m_dummyForHeader != null)
                    {
                        m_dummyForHeader.SetValeurChamp(m_dummyForHeader.Variable, valeurPivot);
                    }
                    CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(m_dummyForHeader);
                    CResultAErreur result             = FormuleHeader.Eval(ctx);
                    if (result)
                    {
                        return(result.Data.ToString());
                    }
                }
                catch { }
            }
            return(col.ColumnName);
        }
Exemple #3
0
 public CFormatChampTableauCroise GetFormatData(object valeur, CParametreVisuDonneePrecalculee parametre)
 {
     if (m_dummyForData != null)
     {
         if (m_typeObjetDonneeData != null)
         {
             try
             {
                 Int32        nVal = Int32.Parse(valeur.ToString());
                 CObjetDonnee obj  = parametre.GetFromCache(m_typeObjetDonneeData, nVal);
                 m_cacheObjetsValeurs.TryGetValue(nVal, out obj);
                 m_dummyForData.SetValeurChamp(m_dummyForData.Variable, obj);
             }
             catch { }
         }
         else
         {
             m_dummyForData.SetValeurChamp(m_dummyForData.Variable, valeur);
         }
         return(FormatParDefaut.GetFormatDynamique(m_dummyForData));
     }
     return(null);
 }
Exemple #4
0
        /// <summary>
        /// récupère un objet pour formule liée à la cellule
        ///
        /// </summary>
        /// <param name="paramVisu"></param>
        /// <param name="row">Ligne contenant les données (peut être nul en design)</param>
        /// <param name="nCol">Numéro de colonne où se trouve la donnée (peut être null en design)</param>
        /// <returns></returns>
        public CElementAVariablesDynamiques GetObjetPourFormuleCellule
        (
            CParametreVisuDonneePrecalculee paramVisu,
            DataRow row,
            int?nCol)
        {
            CElementAVariablesDynamiques eltAVariables = new CElementAVariablesDynamiques();
            CTypeDonneeCumulee           typeDonnee    = paramVisu.GetTypeDonneeCumulee(CContexteDonneeSysteme.GetInstance());

            if (typeDonnee == null)
            {
                return(null);
            }
            CParametreDonneeCumulee parametreDonnee = typeDonnee.Parametre;

            //Ajoute les clés
            CChampFinalDeTableauCroise[] champsFinaux = paramVisu.TableauCroise.ChampsFinaux;
            int nIdVariable = 0;

            foreach (CChampFinalDeTableauCroise champFinal in champsFinaux)
            {
                CChampFinalDeTableauCroiseCle champCle = champFinal as CChampFinalDeTableauCroiseCle;
                if (champCle != null)
                {
                    CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champCle.NomChamp);
                    if (cle != null)
                    {
                        CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(eltAVariables);
                        variable.Nom        = champCle.NomChamp;
                        variable.IdVariable = nIdVariable.ToString();
                        nIdVariable++;
                        if (cle.TypeLie != null)
                        {
                            variable.SetTypeDonnee(new CTypeResultatExpression(cle.TypeLie, false));
                        }
                        else
                        {
                            variable.SetTypeDonnee(new CTypeResultatExpression(typeof(int), false));
                        }
                        eltAVariables.AddVariable(variable);
                        if (row != null && row.Table.Columns.Contains(champCle.NomChamp))
                        {
                            object val = row[champCle.NomChamp];;
                            if (cle.TypeLie != null)
                            {
                                try
                                {
                                    if (val != DBNull.Value)
                                    {
                                        val = paramVisu.GetFromCache(cle.TypeLie, Int32.Parse((val.ToString())));
                                    }
                                }
                                catch { }
                            }
                            else
                            if (val != DBNull.Value)
                            {
                                val = val.ToString();
                            }
                            //TESTDBKEYOK (SC)
                            eltAVariables.SetValeurChamp(variable.IdVariable, val);
                        }
                    }
                }
            }
            //Ajoute la valeur de colonne pivot (s'il y a lieu )
            CChampFinalDeTableauCroiseDonnee champAvecPivot = ChampFinal as CChampFinalDeTableauCroiseDonnee;

            if (champAvecPivot != null && champAvecPivot.Pivot != null)
            {
                CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champAvecPivot.Pivot.NomChamp);
                if (cle != null)
                {
                    CVariableDynamiqueSysteme variable = new CVariableDynamiqueSysteme(eltAVariables);
                    variable.Nom        = champAvecPivot.Pivot.NomChamp;
                    variable.IdVariable = nIdVariable.ToString();
                    nIdVariable++;
                    if (cle.TypeLie != null)
                    {
                        variable.SetTypeDonnee(new CTypeResultatExpression(cle.TypeLie, false));
                    }
                    else
                    {
                        variable.SetTypeDonnee(new CTypeResultatExpression(typeof(string), false));
                    }
                    eltAVariables.AddVariable(variable);
                    if (row != null && nCol != null)
                    {
                        DataColumn col = row.Table.Columns[nCol.Value];
                        CChampFinalDetableauCroiseDonneeAvecValeur cv = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDetableauCroiseDonneeAvecValeur;
                        if (cv != null)
                        {
                            object val = cv.ValeurPivot;
                            if (cle.TypeLie != null)
                            {
                                try
                                {
                                    if (val != null)
                                    {
                                        val = paramVisu.GetFromCache(cle.TypeLie, Int32.Parse(val.ToString()));
                                    }
                                }
                                catch
                                {
                                }
                            }
                            else
                            if (val != null)
                            {
                                val = val.ToString();
                            }
                            eltAVariables.SetValeurChamp(variable.IdVariable, val);
                        }
                    }
                }
            }

            //Ajoute la valeur de la colonne
            CVariableDynamiqueSysteme variableValue = new CVariableDynamiqueSysteme(eltAVariables);

            variableValue.Nom        = c_nomVariableValue;
            variableValue.IdVariable = nIdVariable.ToString();
            nIdVariable++;
            variableValue.SetTypeDonnee(new CTypeResultatExpression(typeof(double), false));
            eltAVariables.AddVariable(variableValue);
            try
            {
                eltAVariables.SetValeurChamp(variableValue.IdVariable, Convert.ToDouble(row[nCol.Value]));
            }
            catch
            {
            }

            //Ajoute les variables de filtre
            foreach (CFiltreDonneePrecalculee filtreDonnee in paramVisu.FiltresUtilisateur)
            {
                foreach (IVariableDynamique variable in filtreDonnee.Filtre.ListeVariables)
                {
                    CVariableDeFiltreDeportee v = new CVariableDeFiltreDeportee(eltAVariables);
                    v.Nom = variable.Nom;
                    v.SetTypeDonnee(variable.TypeDonnee);
                    v.ChampAssocieAuFiltre = filtreDonnee.ChampAssocie;
                    eltAVariables.AddVariable(v);
                    eltAVariables.SetValeurChamp(v.IdVariable, filtreDonnee.Filtre.GetValeurChamp(variable.IdVariable));
                }
            }
            return(eltAVariables);
        }
Exemple #5
0
 public CElementAVariablesDynamiques GetObjetPourFormuleCellule(
     CParametreVisuDonneePrecalculee paramVisu)
 {
     return(GetObjetPourFormuleCellule(paramVisu, null, null));
 }
Exemple #6
0
        /*
         * //-------------------------------------------------------
         * private object GetObjetPourFormuleData(object valeur)
         * {
         *  CChampFinalDeTableauCroiseCle champFinalCle = ChampFinal as CChampFinalDeTableauCroiseCle;
         *  if (champFinalCle != null)
         *  {
         *      CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champFinalCle.NomChamp);
         *      if (cle != null && cle.TypeLie != null)
         *      {
         *          CObjetDonnee objet = Activator.CreateInstance(cle.TypeLie, new object[] { contexte }) as CObjetDonnee;
         *          if (objet.ReadIfExists(new object[] { valeur }))
         *              valeur = objet;
         *          else
         *              valeur = null;
         *      }
         *  }
         *  return new CDummyForDataFormula(valeur);
         * }*/

        public CResultAErreur PrepareAffichageDonnees(
            System.Data.DataTable table,
            CContexteDonnee contexte,
            CParametreDonneeCumulee parametreDonnee,
            CParametreVisuDonneePrecalculee parametreVisu)
        {
            CResultAErreur result = CResultAErreur.True;

            m_dummyForData   = null;
            m_dummyForHeader = null;

            m_dummyForHeader = GetObjetPourFormuleHeader(parametreDonnee) as CDummyForHeaderFormula;
            CCleDonneeCumulee cle = null;

            #region Précharge les données nécéssaires pour les entetes de colonnes
            if (FormuleHeader != null)
            {
                //regarde si c'est un champ clé
                CChampFinalDeTableauCroiseDonnee champDonnee = m_champFinal as CChampFinalDeTableauCroiseDonnee;
                if (champDonnee != null && champDonnee.Pivot != null && parametreDonnee != null)
                {
                    cle = parametreDonnee.GetChampCle(champDonnee.Pivot.NomChamp);
                    if (cle != null && cle.TypeLie != null)
                    {
                        if (cle.TypeLie != null)
                        {
                            m_typeObjetDonneeHeader = cle.TypeLie;
                            List <int> lstCles = new List <int>();
                            //Précharge les éléments correspondants. On trouve les valeurs
                            //des éléments dans les données étendues de chaque colonne
                            StringBuilder bl = new StringBuilder();
                            foreach (DataColumn col in table.Columns)
                            {
                                CChampFinalDetableauCroiseDonneeAvecValeur champFinalDeCol = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDetableauCroiseDonneeAvecValeur;
                                if (champFinalDeCol != null && champFinalDeCol.NomChamp == ChampFinal.NomChamp)
                                {
                                    bl.Append(champFinalDeCol.ValeurPivot);
                                    bl.Append(',');
                                }
                            }
                            if (bl.Length > 0)
                            {
                                bl.Remove(bl.Length - 1, 1);
                                CListeObjetsDonnees lst = new CListeObjetsDonnees(contexte, cle.TypeLie);
                                //trouve la clé
                                CObjetDonneeAIdNumerique obj = Activator.CreateInstance(cle.TypeLie, new object[] { contexte }) as CObjetDonneeAIdNumerique;
                                lst.Filtre = new CFiltreData(obj.GetChampId() + " in (" +
                                                             bl.ToString() + ")");
                                foreach (CObjetDonneeAIdNumerique objTmp in lst)
                                {
                                    parametreVisu.PutElementInCache(objTmp);
                                }
                            }
                        }
                    }
                }
            }
            #endregion

            m_dummyForData = GetObjetPourFormuleData(parametreDonnee);
            //Si le champ final correspond à une clé, précharge toutes les valeurs
            //de clé si la clé correspond à un type
            cle = parametreDonnee.GetChampCle(ChampFinal.NomChamp);
            if (cle != null && FormuleData != null && cle.TypeLie != null)
            {
                m_typeObjetDonneeData = cle.TypeLie;
                StringBuilder bl = new StringBuilder();
                if (table.Columns.Contains(ChampFinal.NomChamp))
                {
                    foreach (DataRow row in table.Rows)
                    {
                        try
                        {
                            int nId = Int32.Parse(row[ChampFinal.NomChamp].ToString());
                            bl.Append(nId);
                            bl.Append(',');
                        }
                        catch { }
                    }
                    if (bl.Length > 0)
                    {
                        bl.Remove(bl.Length - 1, 1);
                        CObjetDonneeAIdNumerique obj = Activator.CreateInstance(cle.TypeLie, new object[] { contexte }) as CObjetDonneeAIdNumerique;
                        CListeObjetsDonnees      lst = new CListeObjetsDonnees(contexte, cle.TypeLie);
                        lst.Filtre = new CFiltreData(obj.GetChampId() + " in (" + bl.ToString() + ")");
                        foreach (CObjetDonneeAIdNumerique objTmp in lst)
                        {
                            parametreVisu.PutElementInCache(objTmp);
                        }
                    }
                }
            }
            return(result);
        }