//------------------------------------------------------
        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);
        }
예제 #2
0
        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();
        }
예제 #3
0
        //--------------------------------------------------------------------------------------
        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);
        }