Exemplo n.º 1
0
        /*//-------------------------------------------------------
         * private object GetObjetPourFormuleHeader(
         *  object valeur)
         * {
         *  string strNomChamp = m_champFinal.NomChamp;
         *  if (m_para != null)
         *  {
         *      CChampFinalDeTableauCroiseDonnee champFinal = ChampFinal as CChampFinalDeTableauCroiseDonnee;
         *      if (champFinal != null && champFinal.Pivot != null)
         *      {
         *          CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champFinal.Pivot.NomChamp);
         *          if (cle != null && cle.TypeLie != null)
         *          {
         *              CObjetDonneeAIdNumerique obj = Activator.CreateInstance(cle.TypeLie, new object[] { ctx }) as CObjetDonneeAIdNumerique;
         *              try
         *              {
         *                  int nVal = Int32.Parse(valeur.ToString());
         *                  if (obj.ReadIfExists(nVal))
         *                      return new CDummyForHeaderFormula(obj);
         *              }
         *              catch
         *              {
         *              }
         *          }
         *      }
         *  }
         *  CChampFinalDeTableauCroiseDonnee champDonnee = m_champFinal as CChampFinalDeTableauCroiseDonnee;
         *  if (champDonnee == null || champDonnee.Pivot == null)
         *      return null;
         *  return new CDummyForHeaderFormula(valeur);
         * }*/

        //-------------------------------------------------------
        public CDummyForDataFormula GetObjetPourFormuleData(CParametreDonneeCumulee parametreDonnee)
        {
            CChampFinalDeTableauCroiseCle champFinalCle = ChampFinal as CChampFinalDeTableauCroiseCle;

            if (champFinalCle != null)
            {
                CCleDonneeCumulee cle = parametreDonnee.GetChampCle(champFinalCle.NomChamp);
                if (cle != null && cle.TypeLie != null)
                {
                    return(new CDummyForDataFormula(cle.TypeLie));
                }
            }
            return(new CDummyForDataFormula(m_champFinal.TypeDonnee));
        }
Exemplo n.º 2
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);
        }