//------------------------------------------------- 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; * }*/ }
//-------------------------------------------------------------------------------------- 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); }