public void AddProprietesAccedees( CArbreDefinitionsDynamiques arbre, Type typeSource, string strPropriete) { //TESTDBKEYOK CDbKey key = CDbKey.CreateFromStringValue(strPropriete); /*int nIdChamp = -1; * try * { * nIdChamp = Int32.Parse ( strPropriete ); * } * catch * { * }*/ CChampCalcule champCalcule = new CChampCalcule(CContexteDonneeSysteme.GetInstance()); C2iExpression formule = null; if (champCalcule.ReadIfExists(key)) { formule = champCalcule.Formule; formule.GetArbreProprietesAccedees(arbre); CDefinitionProprieteDynamiqueChampCalcule.DetailleSousArbres(arbre, CContexteDonneeSysteme.GetInstance()); } }
public override void FillArbreProprietesAccedees(CArbreDefinitionsDynamiques arbre) { base.FillArbreProprietesAccedees(arbre); if (m_expression != null) { m_expression.GetArbreProprietesAccedees(arbre); } }
/// //////////////////////////////////////// ///Si l'arbre est basé sur un champ calculé, détaille les ///champs utilisés dans la formule public static void DetailleSousArbres( CArbreDefinitionsDynamiques arbre, CContexteDonnee contexteDonnee, Dictionary <CDefinitionProprieteDynamique, int> dicCountProfondeurParChamp) { //TESTDBKEYOK if (dicCountProfondeurParChamp == null) { dicCountProfondeurParChamp = new Dictionary <CDefinitionProprieteDynamique, int>(); } ArrayList lstSousArbres = new ArrayList(arbre.SousArbres); foreach (CArbreDefinitionsDynamiques sousArbre in lstSousArbres) { if (sousArbre.DefinitionPropriete is CDefinitionProprieteDynamiqueChampCalcule) { int nProfondeur = 0; dicCountProfondeurParChamp.TryGetValue(sousArbre.DefinitionPropriete, out nProfondeur); if (nProfondeur < 10)//En cas d'appel récursif, limite à 10 appels { CChampCalcule champCalc = new CChampCalcule(contexteDonnee); if (champCalc.ReadIfExists(((CDefinitionProprieteDynamiqueChampCalcule)sousArbre.DefinitionPropriete).DbKeyChamp)) { C2iExpression formule = champCalc.Formule; if (formule != null) { CArbreDefinitionsDynamiques arbreDeFormule = new CArbreDefinitionsDynamiques(null); formule.GetArbreProprietesAccedees(arbreDeFormule); nProfondeur++; dicCountProfondeurParChamp[sousArbre.DefinitionPropriete] = nProfondeur; DetailleSousArbres(arbreDeFormule, contexteDonnee, dicCountProfondeurParChamp); nProfondeur--; dicCountProfondeurParChamp[sousArbre.DefinitionPropriete]--; arbre.RemoveSousArbre(sousArbre); foreach (CArbreDefinitionsDynamiques arbreTmp in arbreDeFormule.SousArbres) { arbre.AddSousArbre(arbreTmp); } } } } } else { DetailleSousArbres(sousArbre, contexteDonnee, dicCountProfondeurParChamp); } } }
public void AddProprietesAccedees( CArbreDefinitionsDynamiques arbre, Type typeSource, string strPropriete) { CContexteAnalyse2iExpression ctx = new CContexteAnalyse2iExpression(new CFournisseurPropDynStd(), typeSource); CAnalyseurSyntaxiqueExpression analyseur = new CAnalyseurSyntaxiqueExpression(ctx); CResultAErreur result = analyseur.AnalyseChaine(strPropriete); C2iExpression formule = null; if (result) { formule = result.Data as C2iExpression; formule.GetArbreProprietesAccedees(arbre); CDefinitionProprieteDynamiqueChampCalcule.DetailleSousArbres(arbre, CContexteDonneeSysteme.GetInstance()); } }
private void m_lnkTest_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { C2iExpression formule = m_txtFormule.Formule; if (formule == null) { return; } CArbreDefinitionsDynamiques arbre = new CArbreDefinitionsDynamiques(null); formule.GetArbreProprietesAccedees(arbre); string strChaine = ""; foreach (CArbreDefinitionsDynamiques sa in arbre.SousArbres) { AddToChaine(sa, 1, ref strChaine); } Clipboard.SetDataObject(strChaine); MessageBox.Show(strChaine); int n = arbre.SousArbres.Length; }