//------------------------------------------------------ public IEnumerable <string> GetListeIdsEntites(CEasyQuery query) { HashSet <string> lst = new HashSet <string>(); if (query != null) { CODEQBase table = query.GetObjet(m_strIdTable) as CODEQBase; IColumnDeEasyQuery colSel = null; if (table != null) { foreach (IColumnDeEasyQuery col in table.Columns) { if (col.Id == m_strIdColonne) { colSel = col; } } } if (colSel != null) { CResultAErreur result = table.GetDatas(new CListeQuerySource(query.Sources)); if (result && result.Data is DataTable) { DataTable tableRes = result.Data as DataTable; if (tableRes.Columns[colSel.ColumnName] != null) { foreach (DataRow row in tableRes.Rows) { object val = row[colSel.ColumnName]; if (val != DBNull.Value && val != null) { lst.Add(val.ToString()); } } } } } } return(lst); }
public void Init(IObjetDeEasyQuery tableFiltree, CPostFilterFromQueryTable postFilter, CEasyQuery query) { m_tableFiltree = tableFiltree; m_postFilter = postFilter; m_query = query; //Remplit la liste des tables; List <IObjetDeEasyQuery> lstObjets = new List <IObjetDeEasyQuery>(); if (query != null) { foreach (I2iObjetGraphique objet in query.Childs) { if (objet is IObjetDeEasyQuery) { lstObjets.Add(objet as IObjetDeEasyQuery); } } m_cmbTableSource.DataSource = lstObjets; IObjetDeEasyQuery objetSource = query.GetObjet(postFilter.SourceTableId); m_cmbTableSource.SelectedItem = objetSource; } UpdatePanelJointure(); }
//-------------------------------------------------------------------------------------- public CResultAErreurType <DataTable> FiltreData(DataTable tableSource, CEasyQuery query, CListeQuerySource sources) { CResultAErreurType <DataTable> resTable = new CResultAErreurType <DataTable>(); //Trouve la table source IObjetDeEasyQuery objet = query.GetObjet(m_strTableId); if (objet == null) { resTable.EmpileErreur(I.T("Can not find table @1|20017", m_strTableId)); return(resTable); } //Récupére les données de la table source CResultAErreur result = objet.GetDatas(sources); if (!result) { resTable.EmpileErreur(result.Erreur); return(resTable); } DataTable tableResult = tableSource.Clone(); List <DataRow> lstRows1 = new List <DataRow>(); foreach (DataRow row in tableSource.Rows) { lstRows1.Add(row); } List <DataRow> lstRows2 = new List <DataRow>(); DataTable table = result.Data as DataTable; if (table != null) { foreach (DataRow row in table.Rows) { lstRows2.Add(row); } } Dictionary <object, List <DataRow> > keys1 = null; CParametreJointure.GetDicValeurs(lstRows1, ParametreJointure.FormuleTable1, ref keys1); Dictionary <object, List <DataRow> > keys2 = null; CParametreJointure.GetDicValeurs(lstRows2, ParametreJointure.FormuleTable2, ref keys2); HashSet <DataRow> rowsToKeep = new HashSet <DataRow>(); foreach (KeyValuePair <object, List <DataRow> > kv in keys1) { if (ParametreJointure.Operateur == EOperateurJointure.Egal) { List <DataRow> rows2 = null; if (keys2.TryGetValue(kv.Key, out rows2)) { if (rows2.Count() > 0) { foreach (DataRow row in kv.Value) { rowsToKeep.Add(row); } } } } else { foreach (KeyValuePair <object, List <DataRow> > kv2 in keys2) { if (CParametreJointure.Compare(kv.Key, kv2.Key, ParametreJointure.Operateur)) { foreach (DataRow row in kv.Value) { rowsToKeep.Add(row); } } } } } tableResult.BeginLoadData(); foreach (DataRow row in tableSource.Rows) { if (rowsToKeep.Contains(row)) { tableResult.ImportRow(row); } } tableResult.EndLoadData(); resTable.DataType = tableResult; return(resTable); }