//------------------------------------------------------- protected override CResultAErreur GetDatasHorsCalculees(CListeQuerySource sources) { CEasyQuery query = Query; CResultAErreur result = CResultAErreur.True; if (result && TypeSource == null) { result.EmpileErreur(I.T("###Table object must be specified |")); } if (query == null || sources == null) { result.EmpileErreur(I.T("###Query needs a source to provide datas|")); } C2iRequeteAvancee requete = new C2iRequeteAvancee(); requete.TableInterrogee = CContexteDonnee.GetNomTableForType(TypeSource); result = FiltreDynamique.GetFiltreData(); if (!result) { return(result); } if (result.Data is CFiltreData) { requete.FiltreAAppliquer = result.Data as CFiltreData; } foreach (IColumnDeEasyQuery col in Columns) { CColumnDeEasyQueryChampDeRequete colR = col as CColumnDeEasyQueryChampDeRequete; requete.ListeChamps.Add(colR); } DataTable table = null; if (requete.ListeChamps.Count > 0) { result = requete.ExecuteRequete(CContexteDonneeSysteme.GetInstance().IdSession); if (!result) { result.EmpileErreur(I.T("###Error on table @1|")); return(result); } table = result.Data as DataTable; } else { table = new DataTable(); } table.TableName = NomFinal; return(result); }
//////////////////////////////////////////////////////////////////////// /// <summary> /// Retourne un filtre dynamique pour la table associée en /// prenant en compte les filtres des parents /// </summary> /// <returns></returns> public CFiltreDynamique GetFiltreToElementPrincipal() { if (TouteLaTable) { return(null); } CFiltreDynamique filtreDynamiqueParent = null; if (FiltreParent != null) { filtreDynamiqueParent = FiltreParent.GetFiltreToElementPrincipal(); } Type typeElements = CContexteDonnee.GetTypeForTable(NomTable); CStructureTable structure = CStructureTable.GetStructure(typeElements); CFiltreDynamique filtreFinal = (CFiltreDynamique)FiltreDynamique.Clone(); CDefinitionProprieteDynamique defToParent = null; //Trouve la propriété qui amène sur le parent if (RelationToParent != null) { if (RelationToParent.TableFille == NomTable) { if (filtreDynamiqueParent != null && filtreDynamiqueParent.ComposantPrincipal != null) { Type tp = CContexteDonnee.GetTypeForTable(RelationToParent.TableParente); string strNomConvivial = DynamicClassAttribute.GetNomConvivial(tp); //Nous somme dans une relation fille foreach (CInfoRelation relationParente in structure.RelationsParentes) { if (relationParente.RelationKey == RelationToParent.RelationKey) { defToParent = new CDefinitionProprieteDynamiqueDotNet( strNomConvivial, relationParente.Propriete, new CTypeResultatExpression(CContexteDonnee.GetTypeForTable(relationParente.TableParente), false), true, true, ""); break; } } if (defToParent == null) { defToParent = new CDefinitionProprieteDynamique( strNomConvivial, RelationToParent.RelationKey, new CTypeResultatExpression(tp, false), true, true, ""); } } } else { //Nous sommes dans une relation parente foreach (CInfoRelation relationFille in structure.RelationsFilles) { if (relationFille.RelationKey == RelationToParent.RelationKey) { defToParent = new CDefinitionProprieteDynamiqueDotNet( relationFille.NomConvivial, relationFille.Propriete, new CTypeResultatExpression(CContexteDonnee.GetTypeForTable(relationFille.TableFille), true), true, true, ""); break; } } if (defToParent == null) { Type tp = CContexteDonnee.GetTypeForTable(RelationToParent.TableFille); defToParent = new CDefinitionProprieteDynamique( DynamicClassAttribute.GetNomConvivial(tp) + "(" + RelationToParent.NomConvivial + ")", RelationToParent.RelationKey, new CTypeResultatExpression(tp, false), true, true); } if (filtreDynamiqueParent == null) { filtreDynamiqueParent = new CFiltreDynamiqueParentTablePleine(NomTable, RelationToParent); } } } if (filtreDynamiqueParent != null && filtreDynamiqueParent.ComposantPrincipal != null) { filtreDynamiqueParent.ComposantPrincipal.InsereDefinitionToObjetFinal(defToParent); if (FiltreDynamique == null || FiltreDynamique.ComposantPrincipal == null) { return(filtreDynamiqueParent); } CComposantFiltreDynamique composantEt = null; if (!(filtreDynamiqueParent.ComposantPrincipal is CComposantFiltreDynamiqueEt)) { composantEt = new CComposantFiltreDynamiqueEt(); composantEt.AddComposantFils(filtreDynamiqueParent.ComposantPrincipal); } else { composantEt = (CComposantFiltreDynamiqueEt)filtreDynamiqueParent.ComposantPrincipal; } composantEt.AddComposantFils(filtreFinal.ComposantPrincipal); filtreFinal.ComposantPrincipal = composantEt; } if (filtreFinal.ComposantPrincipal == null) { return(null); } return(filtreFinal); }