//-------------------------------------------------
        public void Init(IObjetDeEasyQuery table1, IObjetDeEasyQuery table2, CParametreJointure parametre)
        {
            if (table1 == null || table2 == null)
            {
                Visible = false;
                return;
            }
            Visible     = true;
            m_parametre = CCloner2iSerializable.Clone(parametre) as CParametreJointure;
            m_cmbOperateur.Items.Clear();

            if (table1 != null)
            {
                m_txtFormule1.Init(table1, table1.GetType());
            }
            if (table2 != null)
            {
                m_txtFormule2.Init(table2, table2.GetType());
            }

            foreach (EOperateurJointure operateur in Enum.GetValues(typeof(EOperateurJointure)))
            {
                switch (operateur)
                {
                case EOperateurJointure.Egal:
                    m_cmbOperateur.Items.Add("=");
                    break;

                case EOperateurJointure.Superieur:
                    m_cmbOperateur.Items.Add(">");
                    break;

                case EOperateurJointure.SuperieurEgal:
                    m_cmbOperateur.Items.Add(">=");
                    break;

                case EOperateurJointure.Inferieur:
                    m_cmbOperateur.Items.Add("<");
                    break;

                case EOperateurJointure.InferieurEgal:
                    m_cmbOperateur.Items.Add("<=");
                    break;

                case EOperateurJointure.Different:
                    m_cmbOperateur.Items.Add("<>");
                    break;

                default:
                    break;
                }
                m_txtFormule1.Formule        = m_parametre.FormuleTable1;
                m_txtFormule2.Formule        = m_parametre.FormuleTable2;
                m_cmbOperateur.SelectedIndex = (int)m_parametre.Operateur;
            }
        }
        //-----------------------------------
        private void m_lnkAddParametre_LinkClicked(object sender, EventArgs e)
        {
            CParametreJointure        parametre = new CParametreJointure();
            CEditeurParametreJointure editeur   = new CEditeurParametreJointure();

            editeur.Init(m_objetJointure, parametre);
            editeur.Dock = DockStyle.Top;
            m_panelJointure.Controls.Add(editeur);
            editeur.BringToFront();
            editeur.Focus();
        }
        //-------------------------------------------------
        public void Init(CODEQJointure objetJointure, CParametreJointure parametre)
        {
            Init(objetJointure.Table1, objetJointure.Table2, parametre);

            /*m_parametre = CCloner2iSerializable.Clone(parametre) as CParametreJointure;
             * m_cmbOperateur.Items.Clear();
             *
             * if (objetJointure.Table1 != null)
             *  m_txtFormule1.Init(objetJointure.Table1, objetJointure.Table1.GetType());
             * if (objetJointure.Table2 != null)
             *  m_txtFormule2.Init(objetJointure.Table2, objetJointure.Table2.GetType());
             *
             * foreach (EOperateurJointure operateur in Enum.GetValues(typeof(EOperateurJointure)))
             * {
             *  switch (operateur)
             *  {
             *      case EOperateurJointure.Egal:
             *          m_cmbOperateur.Items.Add("=");
             *          break;
             *      case EOperateurJointure.Superieur:
             *          m_cmbOperateur.Items.Add(">");
             *          break;
             *      case EOperateurJointure.SuperieurEgal:
             *          m_cmbOperateur.Items.Add(">=");
             *          break;
             *      case EOperateurJointure.Inferieur:
             *          m_cmbOperateur.Items.Add("<");
             *          break;
             *      case EOperateurJointure.InferieurEgal:
             *          m_cmbOperateur.Items.Add("<=");
             *          break;
             *      case EOperateurJointure.Different:
             *          m_cmbOperateur.Items.Add("<>");
             *          break;
             *      default:
             *          break;
             *  }
             *  m_txtFormule1.Formule = m_parametre.FormuleTable1;
             *  m_txtFormule2.Formule = m_parametre.FormuleTable2;
             *  m_cmbOperateur.SelectedIndex = (int)m_parametre.Operateur;
             * }*/
        }
Beispiel #4
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);
        }