//-------------------------------------------------------- private void m_wndAddColumn_LinkClicked(object sender, EventArgs e) { CDefinitionProprieteDynamique[] defs = CFormSelectChampPourStructure.SelectProprietes ( m_tableFromFramework.TypeSource, CFormSelectChampPourStructure.TypeSelectionAttendue.ChampParent | CFormSelectChampPourStructure.TypeSelectionAttendue.ChampFille | CFormSelectChampPourStructure.TypeSelectionAttendue.UniquementElementDeBaseDeDonnees | CFormSelectChampPourStructure.TypeSelectionAttendue.InclureChampsCustom, null); // Créé le nouveau champ de requete foreach (CDefinitionProprieteDynamique def in defs) { CColumnDeEasyQueryChampDeRequete champUnique = new CColumnDeEasyQueryChampDeRequete(); champUnique.NomChamp = def.Nom; champUnique.TypeDonneeAvantAgregation = def.TypeDonnee.TypeDotNetNatif; champUnique.OperationAgregation = OperationsAgregation.None; champUnique.GroupBy = false; List <CSourceDeChampDeRequete> listeSources = new List <CSourceDeChampDeRequete>(); CSourceDeChampDeRequete source = new CSourceDeChampDeRequete(def.NomChampCompatibleCComposantFiltreChamp); listeSources.Add(source); champUnique.Sources = listeSources.ToArray(); ListViewItem item = new ListViewItem(champUnique.NomChamp); item.Tag = champUnique; m_wndListeColonnes.Items.Add(item); } }
//-------------------------------------------------------- private void m_btnRemoveColumn_LinkClicked(object sender, EventArgs e) { if (m_wndListeColonnes.SelectedItems.Count >= 1) { StringBuilder bl = new StringBuilder(); foreach (ListViewItem item in m_wndListeColonnes.SelectedItems) { CColumnDeEasyQueryChampDeRequete col = item.Tag as CColumnDeEasyQueryChampDeRequete; if (col != null) { bl.Append(col.ColumnName); bl.Append(","); } } bl.Remove(bl.Length - 1, 1); if (CFormAlerte.Afficher(I.T("##Delete column(s) @1 ?", bl.ToString()), EFormAlerteBoutons.OuiNon, EFormAlerteType.Question) == DialogResult.Yes) { System.Collections.ArrayList lst = new System.Collections.ArrayList(m_wndListeColonnes.SelectedItems); foreach (ListViewItem item in lst) { m_wndListeColonnes.Items.Remove(item); } } } }
//-------------------------------------------------------------- private void m_btnAddFieldId_Click(object sender, EventArgs e) { IODEQTableFromFramework source = m_tableFromFramework.ElementsSource[0] as IODEQTableFromFramework; if (source != null) { CStructureTable structure = CStructureTable.GetStructure(source.TypeElements); CColumnDeEasyQueryChampDeRequete col = new CColumnDeEasyQueryChampDeRequete("ID", new CSourceDeChampDeRequete(structure.ChampsId[0].NomChamp), typeof(int), OperationsAgregation.None, true); source.AddColonneDeRequete(col); CResultAErreur result = m_tableFromFramework.GetErreurIncompatibilitéTableParente(); if (!result) { m_panelSourceIncompatible.Visible = true; m_lblImpossible.Text = result.Erreur.ToString(); } else { m_panelSourceIncompatible.Visible = false; } } }
//-------------------------------------------------------- private void m_btnOk_Click(object sender, EventArgs e) { if (m_txtNomTable.Text.Length == 0) { MessageBox.Show(I.T("Please enter a table name|20101")); return; } m_tableFromFramework.FiltreDynamique = m_panelFiltre.FiltreDynamique; m_tableFromFramework.NomFinal = m_txtNomTable.Text; m_tableFromFramework.UseCache = m_chkUseCache.Checked; List <IColumnDeEasyQuery> lst = new List <IColumnDeEasyQuery>(); foreach (ListViewItem item in m_wndListeColonnes.Items) { CColumnDeEasyQueryChampDeRequete col = item.Tag as CColumnDeEasyQueryChampDeRequete; if (col != null) { lst.Add(col); } } m_tableFromFramework.SetColonnesOrCalculees(lst); List <CColonneEQCalculee> colsCalc = new List <CColonneEQCalculee>(); foreach (CColonneEQCalculee col in m_ctrlFormulesNommees.GetFormules()) { colsCalc.Add(col); } m_tableFromFramework.ColonnesCalculees = colsCalc; CResultAErreur result = CResultAErreur.True; if (m_controleOptions != null) { result = m_controleOptions.MajChamps(); } if (result) { result = m_panelPostFilter.MajChamps(); } if (!result) { CFormAlerte.Afficher(result.Erreur); return; } DialogResult = DialogResult.OK; Close(); }
//-------------------------------------------------------- private void EditeColumn(ListViewItem item) { if (item == null) { return; } CColumnDeEasyQueryChampDeRequete col = item.Tag as CColumnDeEasyQueryChampDeRequete; if (col == null) { return; } if (CFormEditChampDeRequete.EditeChamp( col, m_tableFromFramework.TypeSource, null)) { item.Text = col.ColumnName; m_wndListeColonnes.Refresh(); } }
//-------------------------------------------------- protected override CResultAErreur GetDatasHorsCalculees(CListeQuerySource sources) { CResultAErreur result = CResultAErreur.True; CResultAErreurType <CColumnDeEasyQueryChampDeRequete> resCol = GetColonneIdSource(); m_dicRowsParentes = null; if (!resCol) { result.EmpileErreur(resCol.Erreur); return(result); } IODEQTableFromFramework tableSource = this.ElementsSource[0] as IODEQTableFromFramework; if (tableSource != null) { result = tableSource.GetDatas(sources); if (!result) { return(result); } DataTable tableParente = result.Data as DataTable; C2iRequeteAvancee requete = new C2iRequeteAvancee(); requete.TableInterrogee = CContexteDonnee.GetNomTableForType(TypeElements); foreach (IColumnDeEasyQuery col in m_listeColonnes) { CColumnDeEasyQueryChampDeRequete colR = col as CColumnDeEasyQueryChampDeRequete; requete.ListeChamps.Add(colR); } if (requete.ListeChamps.Count == 0) { result.Data = new DataTable(); return(result); } bool bRelTrouve = false; CComposantFiltreOperateur cpOperateur = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurIn); CComposantFiltre cpFinal = cpOperateur; result = FiltreDynamique.GetFiltreData(); if (!result) { return(result); } CFiltreDataAvance filtre = result.Data as CFiltreDataAvance; if (filtre == null) { filtre = new CFiltreDataAvance(requete.TableInterrogee, ""); } CDefinitionProprieteDynamiqueRelation rel = m_definitionSource as CDefinitionProprieteDynamiqueRelation; string strNomChampParent = null; //// Relation standard if (rel != null) { //m_definitionSource.GetDefinitionInverse(TypeElements); if (rel.Relation.TableParente == requete.TableInterrogee) { cpOperateur.Parametres.Add(new CComposantFiltreChamp(rel.Relation.ChampsParent[0], requete.TableInterrogee)); strNomChampParent = rel.Relation.ChampsParent[0]; } else { cpOperateur.Parametres.Add(new CComposantFiltreChamp(rel.Relation.ChampsFille[0], requete.TableInterrogee)); strNomChampParent = rel.Relation.ChampsFille[0]; } bRelTrouve = true; } else { ///Relation Type id CDefinitionProprieteDynamiqueRelationTypeId relTypeId = m_definitionSource as CDefinitionProprieteDynamiqueRelationTypeId; if (relTypeId != null) { cpOperateur.Parametres.Add(new CComposantFiltreChamp(relTypeId.Relation.ChampId, requete.TableInterrogee)); strNomChampParent = relTypeId.Relation.ChampId; cpFinal = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurEt); cpFinal.Parametres.Add(cpOperateur); CComposantFiltre cpType = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurEgal); cpType.Parametres.Add(new CComposantFiltreChamp(relTypeId.Relation.ChampType, requete.TableInterrogee)); cpType.Parametres.Add(new CComposantFiltreVariable("@" + (filtre.Parametres.Count + 1).ToString("0"))); filtre.Parametres.Add(tableSource.TypeElements.ToString()); cpFinal.Parametres.Add(cpType); bRelTrouve = true; } } if (strNomChampParent != null) { requete.ListeChamps.Add(new C2iChampDeRequete(c_nomChampParentId, new CSourceDeChampDeRequete(strNomChampParent), typeof(int), OperationsAgregation.None, false)); } if (!bRelTrouve) { result.EmpileErreur(I.T("Can not find link for table @1|20076", NomFinal)); return(result); } int nParametre = filtre.Parametres.Count; cpOperateur.Parametres.Add(new CComposantFiltreVariable("@" + (filtre.Parametres.Count + 1).ToString("0"))); filtre.Parametres.Add(new int[0]); if (filtre.ComposantPrincipal == null) { filtre.ComposantPrincipal = cpFinal; } else { CComposantFiltreOperateur opEt = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurEt); opEt.Parametres.Add(cpFinal); opEt.Parametres.Add(filtre.ComposantPrincipal); filtre.ComposantPrincipal = opEt; } m_dicRowsParentes = new Dictionary <object, DataRow>(); DataTable maTable = null; int nLectureParLot = 500; for (int nRow = 0; nRow < tableParente.Rows.Count; nRow += nLectureParLot) { int nMax = Math.Min(nRow + nLectureParLot, tableParente.Rows.Count); List <int> lstIds = new List <int>(); for (int n = nRow; n < nMax; n++) { DataRow row = tableParente.Rows[n]; int nVal = (int)row[resCol.DataType.ColumnName]; lstIds.Add(nVal); m_dicRowsParentes[nVal] = row; } filtre.Parametres[nParametre] = lstIds.ToArray(); DataTable tableTmp = null; requete.FiltreAAppliquer = filtre; result = requete.ExecuteRequete(CContexteDonneeSysteme.GetInstance().IdSession); if (!result || !(result.Data is DataTable)) { result.EmpileErreur(I.T("Error on table @1|20070", NomFinal)); return(result); } tableTmp = result.Data as DataTable; if (maTable == null) { maTable = tableTmp; } else { maTable.Merge(tableTmp); } } if (maTable == null) { maTable = new DataTable(NomFinal); foreach (IColumnDeEasyQuery colEQ in ColonnesOrCalculees) { DataColumn col = new DataColumn(colEQ.ColumnName, colEQ.DataType); try { maTable.Columns.Add(col); } catch { } } DataColumn colParent = new DataColumn(c_nomChampParentId, typeof(int)); try { maTable.Columns.Add(colParent); } catch { } } else { //Ajoute les colonnes from parent Dictionary <CColumnEQFromSource, string> dicColFromSourceToNom = new Dictionary <CColumnEQFromSource, string>(); foreach (CColumnEQFromSource colFromSource in m_listeColonnesFromParent) { if (!maTable.Columns.Contains(colFromSource.ColumnName)) { maTable.Columns.Add(colFromSource.ColumnName, colFromSource.DataType); } IColumnDeEasyQuery colSource = tableSource.Columns.FirstOrDefault(c => c.Id == colFromSource.IdColumnSource); if (colSource != null && tableParente.Columns.Contains(colSource.ColumnName)) { dicColFromSourceToNom[colFromSource] = colSource.ColumnName; } } if (maTable.Columns.Contains(c_nomChampParentId)) { foreach (DataRow row in maTable.Rows) { if (row[c_nomChampParentId] is int) { DataRow rowParente = null; if (m_dicRowsParentes.TryGetValue((int)row[c_nomChampParentId], out rowParente)) { if (rowParente != null) { foreach (KeyValuePair <CColumnEQFromSource, string> kv in dicColFromSourceToNom) { row[kv.Key.ColumnName] = rowParente[kv.Value]; } } } } } maTable.Columns.Remove(c_nomChampParentId); } } result.Data = maTable; } return(result); }
//-------------------------------------------------- public void AddColonneDeRequete(CColumnDeEasyQueryChampDeRequete col) { m_listeColonnes.Add(col); }