Ejemplo n.º 1
0
        /// <summary>
        /// objectum letrehozasa
        /// </summary>
        /// <param name="listainfok">
        /// listainfok
        /// </param>
        /// <param name="fakuserinterface">
        /// fakuserinterface
        /// </param>
        /// <param name="view">
        /// a feltetelmeghatarozas view-ja
        /// </param>
        /// <param name="viewindex">
        /// sorindex a view-ban
        /// </param>
        public Feltetelinfo(ListaInfok listainfok, FakUserInterface fakuserinterface, DataView view, int viewindex)
        {
            ListaInfok = listainfok;
            Feltetelinfok = ListaInfok.FeltColl;
            DataRow dr = view[viewindex].Row;
            Tablainfo tabinfo = fakuserinterface.GetByAzontip(dr["AZONTIP"].ToString());
            Tabinfo = tabinfo;
            Cols mezocol = null;
            bool csakuressor = dr["MEZONEV"].ToString() == "";
            ZaroZarojel = dr["ZAROZAROJEL"].ToString();
            if (csakuressor)
                FeltetelSorLista = ZaroZarojel;
            else
            {
                mezocol = tabinfo.TablaColumns[dr["MEZONEV"].ToString()];
                ColumnInfo = mezocol;
                NyitoZarojel = dr["NYITOZAROJEL"].ToString();
                Relacio = dr["RELACIO"].ToString();
                Ertek = dr["MASODIKELEM"].ToString();
                EsVagy = dr["ESVAGY"].ToString();
                FeltetelSorLista = NyitoZarojel;
                bool stringe = mezocol.DataType.ToString() == "System.String";
                bool datume = mezocol.DataType.ToString() == "System.DateTime";
                if (mezocol.Comboe)
                {
                    FeltetelSorSelect = mezocol.ColumnName + Relacio;
                    if (stringe)
                        FeltetelSorSelect += "'";
                    FeltetelSorSelect += mezocol.Combo_Info.GetComboAktfileba(Ertek);
                    if (stringe)
                        FeltetelSorSelect += "'";
                }
                else if (stringe)
                {
                    if (Relacio == "=")
                    {
                        FeltetelSorSelect = mezocol.ColumnName + "like '%"+ Ertek + "%'";
                    }
                    else
                        FeltetelSorSelect = "substring(" + mezocol.ColumnName + ",1," + Ertek.Length + ")" + Relacio + "'" + Ertek + "'";
                }
                else if (datume)
                    FeltetelSorSelect = mezocol.ColumnName + Relacio + "'" + Ertek + "'";
                else
                    FeltetelSorSelect = mezocol.ColumnName + Relacio + Ertek;
                FeltetelSorLista += dr["ELSOELEM"].ToString();
 //               FeltetelSorSelect += Relacio;
                FeltetelSorLista += Relacio;
                //if (!mezocol.Comboe)
                //{
                //    if (mezocol.DataType.ToString() == "System.String" || mezocol.DataType.ToString() == "System.DateTime")
                //        FeltetelSorSelect += "'" + Ertek + "'";
                //    else
                //        FeltetelSorSelect += Ertek;
                //}
                //else
                //    FeltetelSorSelect += mezocol.Combo_Info.GetComboAktfileba(Ertek);
                if (viewindex < ListaInfok.Hivo.userselectcount && view.Table.TableName=="FELTETEL")
                    UserFeltetel = true;
                FeltetelSorLista += dr["MASODIKELEM"].ToString();
                FeltetelSorLista += ZaroZarojel;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// objectum letrehozasa
        /// </summary>
        /// <param name="hivo">
        /// hivo
        /// </param>
        /// <param name="osszesview">
        /// viewk listaja
        /// </param>
        public ListaInfok(Altlistazoalap hivo, ArrayList osszesview)
        {
            Hivo = hivo;
            Tabinfo = Hivo.Tabinfo;
            Listae = hivo.listae;
            FakUserInterface = hivo.FakUserInterface;
            TablainfoRow = Tabinfo.DataView[0].Row;
            int ig;
            if (Listae)
                ig = 2;
            else
                ig = 4;
            for (int l = 0; l < ig; l++)
            {
                view = (DataView)osszesview[0];   // parameterview
                table = view.Table;
                sort = view.Sort;
                view.Sort = "AZONTIP,MEZONEV";
                if (l == 0)
                {
                    azontip = "";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        string colnev = table.Columns[i].ColumnName;
                        if (colnev.Contains("SORSZAM"))
                            view.Sort = colnev + ",AZONTIP,MEZONEV";
                        else
                            view.Sort = "AZONTIP,MEZONEV";
                        azontip = "";
                        for (int j = 0; j < view.Count; j++)
                        {
                            dr = view[j].Row;
                            egyazontip = dr["AZONTIP"].ToString();
                            if (egyazontip != azontip)
                                tabinfo = FakUserInterface.GetByAzontip(egyazontip);
                            MezoinfoOsszeallit(dr);
                            if (vanfeltben || vansorfeltben || vanoszlfeltben || sorrendsorszam != "0" || kellosszegzes ||
                                osszegzendo || atlagolando || csakosszegsorba || oszlopsorszam != "0" || matrixsorszam != "0")
                            {
                                if (Tablainfok.IndexOf(tabinfo) == -1)
                                {
                                    Tablainfok.Add(tabinfo);
                                    Clear(tabinfo);
                                }
                                Mezoinfo mezoinfo = new Mezoinfo(tabinfo, mezonev, sorrendsorszam, kellosszegzes, osszegzendo,
                                    atlagolando, csakosszegsorba, oszlopsorszam, matrixsorszam);
                               switch (colnev)
                                {
                                    case "OSZLOPSORSZAM":
                                        if (oszlopsorszam != "0")
                                            Oszlopinfok.Mezoinfok.Add(tabinfo, mezoinfo);
                                        break;
                                    case "SORRENDSORSZAM":
                                        if (sorrendsorszam != "0")
                                        {
                                            Sorrendinfok.Mezoinfok.Add(tabinfo, mezoinfo);
                                            string ssort = tabinfo.Sort;
                                            if (ssort != "")
                                                ssort += ",";
                                            ssort += mezoinfo.ColumnInfo.ColumnName;
                                            tabinfo.Sort = ssort;
                                        }
                                        break;
                                    case "MATRIXSORSZAM":
                                        if (matrixsorszam != "0")
                                        {
                                            Matrixpontinfok.Mezoinfok.Add(tabinfo, mezoinfo);
                                        }
                                        break;
                                }
                            }
                            azontip = egyazontip;
                        }
                    }

                }
                else
                {
                    azontip = "";
                    string filt = view.RowFilter;
                    view.RowFilter = "VANFELTBEN = 'Igen'";
                    if (l != 1)
                        view.RowFilter += " OR VANSORFELTBEN = 'Igen' OR VANOSZLFELTBEN = 'Igen '";
                    for (int i = 0; i < view.Count; i++)
                    {
                        dr = view[i].Row;
                        egyazontip = dr["AZONTIP"].ToString();
                        if (egyazontip != azontip)
                            tabinfo = FakUserInterface.GetByAzontip(egyazontip);
                        azontip = egyazontip;
                        MezoinfoOsszeallit(dr);
                        Tablainfok.Add(tabinfo);
                        Mezoinfo mezoinfo = new Mezoinfo(tabinfo, mezonev, sorrendsorszam, kellosszegzes, osszegzendo,
                            atlagolando, csakosszegsorba, oszlopsorszam, matrixsorszam);
                        switch (l)
                        {
                            case 1:
                                if(dr["VANFELTBEN"].ToString()=="Igen")
                                    Feltetelinfok.Mezoinfok.Add(tabinfo, mezoinfo);
                                break;
                            case 2:
                                if(dr["VANSORFELTBEN"].ToString()=="Igen")
                                    Sorfeltetelinfok.Mezoinfok.Add(tabinfo, mezoinfo);
                                break;
                            case 3:
                                if(dr["VANOSZLFELTBEN"].ToString()=="Igen")
                                    Oszlopfeltetelinfok.Mezoinfok.Add(tabinfo, mezoinfo);
                                break;
                        }
                    }
                    view.RowFilter = filt;
                    DataView feltview = (DataView)osszesview[l];
                    switch (l)
                    {
                        case 1:
                            FeltColl = Feltetelinfok.FeltetelinfoCollection;
                            break;
                        case 2:
                            FeltColl = Sorfeltetelinfok.FeltetelinfoCollection;
                            break;
                        case 3:
                            FeltColl = Oszlopfeltetelinfok.FeltetelinfoCollection;
                            break;
                    }
                    for (int i = 0; i < feltview.Count; i++)
                        FeltColl.Add(new Feltetelinfo(this, FakUserInterface, feltview, i));
                }
                view.Sort = sort;
            }
            if (Matrixpontinfok.Mezoinfok.Count == 0)
            {
                Oszlopinfok.OszlopokOsszeAllit();
                Oszlopinfok.Osszegzesek(Sorrendinfok);
            }
            else
            {
                Oszlopfeltetelinfok.OszlopokOsszeAllit();
                Matrixpontinfok.OszlopokOsszeAllit();
            }
            Parameterhiba = false;
            Tablainfo gyoker = null;
            if (Tablainfok.Count == 0)
            {
                Parameterhiba = true;
                MessageBox.Show("Nincs még paraméterezés!");
                return;
            }
            for (int ii = 0; ii < Tablainfok.Count; ii++)
            {
                if (gyoker == null)
                {
                    gyoker = Tablainfok[ii].FirstTermParentTabinfo;
                    if (gyoker == null)
                        gyoker = Tablainfok[ii];
                }
                else
                {
                    Tablainfo ujgyoker = Tablainfok[ii].FirstTermParentTabinfo;
                    if(ujgyoker==null)
                        ujgyoker=Tablainfok[ii];
                    if (gyoker != ujgyoker)
                    {
                        string hibaszov = "";
                        for (int j = 0; j < Tablainfok.Count; j++)
                        {
                            if (gyoker != Tablainfok[j])
                            {
                                if (gyoker.TermChildTabinfo.IndexOf(Tablainfok[j]) == -1)
                                {
                                    if (hibaszov != "")
                                        hibaszov += ",\n";
                                    hibaszov += Tablainfok[j].TablaTag.Azonositok.Szoveg;
                                }
                            }
                        }
                        hibaszov += "\n Nem elérhetö " + gyoker.TablaTag.Azonositok.Szoveg + "-ból\nParaméterezze újra!";
                        MessageBox.Show(hibaszov);
                        Parameterhiba = true;
                        return;
                    }
                }

            }
            TablainfoCollection teljeschain = new TablainfoCollection();
            TablainfoCollection chain;
            int maxchain = 1;

            foreach (Tablainfo egyinfo1 in gyoker.TermChildTabinfo)
            {
                int ii = egyinfo1.TermChildTabinfo.Count;
                if (ii > maxchain)
                    maxchain = ii;
            }
            for(int i=0;i<gyoker.TermChildTabinfo.Count;i++)
                teljeschain.Add(gyoker.TermChildTabinfo[i]);
            int chaincount = teljeschain.Count;
            for (int i = 0; i < gyoker.TermChildTabinfo.Count; i++)
            {
                chain = gyoker.TermChildTabinfo[i].TermChildTabinfo;
                for (int j = 0; j < chain.Count; j++)
                    teljeschain.Add(chain[j]);
            }
            int teljescount = teljeschain.Count;
            if (chaincount < teljeschain.Count)
            {
                chain = teljeschain;
                do
                {
                    int ij = 0;
                    do
                    {
                        for (int i = 0; i < chain.Count; i++)
                        {
                            TablainfoCollection egychain = chain[i].TermChildTabinfo;
                            for (int j = 0; j < egychain.Count; j++)
                                teljeschain.Add(egychain[j]);
                            chaincount = teljeschain.Count;
                        }
                        ij++;
                        if (chain.Count > ij)
                            chain = chain[ij].TermChildTabinfo;
                        else if(chaincount!=teljeschain.Count)
                        {
                            ij = 0;
                            chain = teljeschain[chaincount - 1].TermChildTabinfo;
                        }
                        else
                            break;
                    } while (true);
                } while (chaincount != teljeschain.Count);

            }
            TablainfoCollection newtabinfok = new TablainfoCollection();
            string elsotabinfoid = "";
            ArrayList tabsorrend = new ArrayList();
            int maxindex=-1;
            object[] egyobj;
            ArrayList indexar = new ArrayList();
            for (int i = 0; i < Tablainfok.Count; i++)
            {
                egyobj = new object[2];
                egyobj[1] = Tablainfok[i];
                int j = -1;
                if (gyoker != Tablainfok[i])
                {
                    j = teljeschain.IndexOf(Tablainfok[i]);
                }
                egyobj[0] = j;
                indexar.Add(j);
                if (maxindex < j)
                    maxindex = j;
                tabsorrend.Add(egyobj);
            }
            int egyindex = -1;
            do
            {
                for (int i = 0; i < tabsorrend.Count; i++)
                {
                    egyobj = (object[])tabsorrend[i];
                    if (egyobj[0].ToString() == egyindex.ToString())
                    {
                        newtabinfok.Add((Tablainfo)egyobj[1]);
                        tabsorrend.RemoveAt(i);
                    }
                }
                egyindex++;
            } while (tabsorrend.Count > 0);
            if (newtabinfok[0].TermParentTabinfo != null)
                elsotabinfoid = newtabinfok[0].TermParentTabinfo.IdentityColumnName;
            else
                elsotabinfoid = newtabinfok[0].IdentityColumnName;
            ElsoTabinfo = newtabinfok[0];      
            if (ElsoTabinfo.TermParentTabinfo != null)
                elsotabinfoid = ElsoTabinfo.TermParentTabinfo.IdentityColumnName;
            else
                elsotabinfoid = ElsoTabinfo.IdentityColumnName;
            Tablainfok = newtabinfok;
            for (int i = 0; i < Tablainfok.Count; i++)
                Tablainfok[i].ElsoTabinfo = ElsoTabinfo;
            Feltetelinfok.Rendezes(this);
            if (!Listae)
            {
                Oszlopfeltetelinfok.Rendezes(this);
                Sorfeltetelinfok.Rendezes(this);
                Matrixpontinfok.Osszegzesek(this);
            }
            TablainfoCollection parentchain = ElsoTabinfo.TermParentTabinfoChain;
            TablainfoCollection childchain = ElsoTabinfo.TermChildTabinfo;
            OsszesBeallitandoId = ElsoTabinfo.BeallitandoIdkArray("", ElsoTabinfo,Tablainfok, OsszesBeallitandoId, OsszesBeallitottIdErtek);
            foreach (Tablainfo info in Tablainfok)
            {
                if (info.TablaColumns.IndexOf("DATUMTOL") != -1)
                    info.DatumString = Hivo.Datumtoligfeltetel;

                else if (info.TablaColumns.IndexOf("KEZDETE") != -1)
                    info.DatumString = Hivo.Kezdetefeltetel;
                if (info != ElsoTabinfo)
                {
                    info.BeallitandoIdkArray(elsotabinfoid, ElsoTabinfo,Tablainfok, OsszesBeallitandoId, OsszesBeallitottIdErtek);
                }
            }
            if (Feltetelinfok.Mezoinfok.Count != 0)
                Feltetelinfok.SortOsszeallit();
            if (Oszlopfeltetelinfok.Mezoinfok.Count != 0)
                Oszlopfeltetelinfok.SortOsszeallit();
            if (Sorfeltetelinfok.Mezoinfok.Count != 0)
                Sorfeltetelinfok.SortOsszeallit();
        }