//--------------------------------------------------------
 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();
            }
        }
示例#6
0
        //--------------------------------------------------
        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);
        }
示例#7
0
 //--------------------------------------------------
 public void AddColonneDeRequete(CColumnDeEasyQueryChampDeRequete col)
 {
     m_listeColonnes.Add(col);
 }