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(""); }
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); }
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); }
/// <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); }
public CElementAVariablesDynamiques GetObjetPourFormuleCellule( CParametreVisuDonneePrecalculee paramVisu) { return(GetObjetPourFormuleCellule(paramVisu, null, null)); }
/* * //------------------------------------------------------- * 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); }