Пример #1
0
        private void OsszegsorOsszeallit(Mezoinfo info, ref Decimal szintosszeg, ref int darabszam, DataRow dr)
        {

            int oszl = Mezoinfok.IndexOf(info);
            bool atlagolando = info.Atlagolando;
            if (atlagolando)
            {
                if (darabszam == 0 || darabszam == -1)
                    szintosszeg = 0;
                else
                    szintosszeg = szintosszeg / darabszam;
            }
            string s = szintosszeg.ToString();
            string[] split = s.Split(new char[] { Convert.ToChar(",") });
            if (split.Length == 2 && split[1].Length > 2)
                s = split[0] + "," + split[1].Substring(0, 2);
            dr[oszl] = s;
            szintosszeg = 0;
            if (darabszam != -1)
                darabszam = 0;
        }
Пример #2
0
 /// <summary>
 /// mezoinfo aktualis tartalmanak feladasa Osszegek-be
 /// </summary>
 /// <param name="info">
 /// mezoinfo
 /// </param>
 public virtual void Osszegfeladasok(Mezoinfo info)
 {
     if (info.Osszegzendo)
         Osszegfeladasok(info, true);
     if (info.Atlagolando)
         Osszegfeladasok(info, false);
 }
Пример #3
0
        private void Osszegfeladasok(Mezoinfo info, bool osszege)
        {
            Tablainfo tabinfo = info.ColumnInfo.Tablainfo;
            tabinfo.GetOszlopTartalom(info);
            MezoinfoCollection osszegzendok = Osszegzendok;
            if (!osszege)
                osszegzendok = Atlagolandok;
            for (int i = 0; i < osszegzendok.Count; i++)
            {
                if (info == osszegzendok[i])
                {
                    Decimal feladando = Convert.ToDecimal(info.AktualisTartalom);
                    string feladstring = info.AktualisTartalom;
                    if (feladstring != "")
                    {
                        string[] split;
                        split = info.AktualisTartalom.Split(new char[] { Convert.ToChar(",") });
                        if (split.Length == 2 && split[1].Length > 2)
                        {
                            split[1] = split[1].Substring(0, 2);
                            feladstring = split[0] + "," + split[1];
                            feladando = Convert.ToDecimal(feladstring);
                        }
                    }

                    //Decimal feladando = egesz + tized;
                    if (osszege)
                    {
                        foreach (Decimal[] osszegek in Osszegek)
                            osszegek[i] = osszegek[i] + feladando;
                    }
                    else
                    {
                        foreach (int[] darabok in AtlagDarabszam)
                            darabok[i]++;
                        foreach (Decimal[] atlosszegek in AtlagOsszegek)
                            atlosszegek[i] = atlosszegek[i] + feladando;
                    }
                }

            }
            if (info.Atlagolando)
            {
            }
        }
Пример #4
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();
        }
Пример #5
0
 /// <summary>
 /// uj mezoinfo hozzaadas a kollekciohoz
 /// </summary>
 /// <param name="tabinfo">
 /// tablainformacio
 /// </param>
 /// <param name="mezoinfo">
 /// a mezoinformacio
 /// </param>
 public void Add(Tablainfo tabinfo, Mezoinfo mezoinfo)
 {
     Tablainfok.Add(tabinfo);
     string mezonev = mezoinfo.ColumnInfo.ColumnName;
     int i = Colok.IndexOf(mezonev);
     if (i == -1)
     {
         Colok.Add(mezoinfo.ColumnInfo);
         mezonevek.Add(mezonev);
         tabinfo.SorrendInfok(mezoinfo, this);
         tabinfo.OszlopInfok(mezoinfo, this);
         i = base.Add(mezoinfo);
         string sortelem = mezoinfo.ColumnInfo.ColumnName;
         TabinfoSortok.Add(sortelem);
     }
 }
Пример #6
0
 /// <summary>
 /// Altalanos listazashoz
 /// </summary>
 public string GetOszlopTartalom(Mezoinfo mezoinfo)
 {
     DataRow aktrow = AktualViewRow;
     string tart = "";
     int i = oszlopmezoinfok.IndexOf(mezoinfo);
     if (aktrow != null)
     {
         string tartoszlnev = mezoinfo.TartalomOszlopNev;
         tart = aktrow[tartoszlnev].ToString();
     }
     if(tart!="")
     {
         if (mezoinfo.ColumnInfo.DataType.ToString() == "System.DateTime")
             tart = Convert.ToDateTime(tart).ToShortDateString();
     }
     else if (!mezoinfo.ColumnInfo.Numeric(mezoinfo.ColumnInfo.DataType))
         tart = "";
     else
         tart = "0";
     mezoinfo.AktualisTartalom = tart;
     return tart;
 }
Пример #7
0
 /// <summary>
 /// Altalanos listazashoz
 /// </summary>
 public void OszlopInfok(Mezoinfo mezoinfo, MezoinfoCollection mezocoll)
 {
     Cols columninfo = mezoinfo.ColumnInfo;
     Tablainfo tabinfo = columninfo.Tablainfo;
     if (mezocoll.Tablainfok.IndexOf(tabinfo) == -1)
     {
         oszlopmezonevek.Clear();
         oszloptartalomnevek.Clear();
         oszlopszelessegek.Clear();
         oszlopnumericek.Clear();
         oszlopmezoinfok.Clear();
     }
     if (mezoinfo.OszlopSorszam != "0")
     {
         oszlopmezonevek.Add(columninfo.ColumnName);
         oszloptartalomnevek.Add(mezoinfo.TartalomOszlopNev);
         oszlopszelessegek.Add(mezoinfo.OszlopSzelesseg);
         oszlopnumericek.Add(columninfo.Numeric(columninfo.DataType) && !columninfo.Comboe);
         oszlopmezoinfok.Add(mezoinfo);
     }
 }
Пример #8
0
 /// <summary>
 /// Altalanos listazashoz
 /// </summary>
 public string GetSorrendtartalom(Mezoinfo mezoinfo)
 {
     DataRow aktrow = null;
     string tart="";
     if (ViewSorindex != -1)
         aktrow = AktualViewRow;
     int i = sorrendmezoinfok.IndexOf(mezoinfo);
     if (aktrow != null)
     {
         string tartoszlnev = mezoinfo.TartalomOszlopNev;
         if (mezoinfo.ColumnInfo.DataType.ToString() == "System.DateTime")
             tart = Convert.ToDateTime(aktrow[tartoszlnev].ToString()).ToShortDateString();
         else
             tart = aktrow[tartoszlnev].ToString();
     }
     if (sorrendtartalmak[i].ToString() != tart)
     {
         mezoinfo.ElozoSorrendTartalom = tart;
         sorrendtartalmak[i] = tart;
         if (Convert.ToBoolean(csakosszegsorba[i].ToString()))
             return mezoinfo.FejSzoveg+ " "+ tart;
         else
             return "";
     }
     else
         tart = "";
     return tart;
 }
Пример #9
0
 /// <summary>
 /// Altalanos listazashoz
 /// </summary>
 public bool Sorrendvaltozas(Mezoinfo mezoinfo)
 {
     if (ViewSorindex == -1)
     {
         if (EredetiLehetUres)
             return true;
         else
             return false;
     }
     DataRow aktrow = AktualViewRow;
     string tartoszlnev = mezoinfo.TartalomOszlopNev;
     string tart;
     if (mezoinfo.ColumnInfo.DataType.ToString() == "System.DateTime")
         tart = Convert.ToDateTime(aktrow[tartoszlnev].ToString()).ToShortDateString();
     else
         tart = aktrow[tartoszlnev].ToString();
     int i = sorrendmezoinfok.IndexOf(mezoinfo);
     if (sorrendtartalmak[i].ToString() != tart)
         return true;
     else
         return false;
 }
Пример #10
0
 /// <summary>
 /// Altalanos listazashoz
 /// </summary>
 
 public void SorrendInfok(Mezoinfo mezoinfo, MezoinfoCollection mezocoll)
 {
     Cols columninfo = mezoinfo.ColumnInfo;
     Tablainfo tabinfo = columninfo.Tablainfo;
     if (mezocoll.Tablainfok.IndexOf(tabinfo) == -1)
     {
         sorrendazonositok.Clear();
         sorrendtartalmak.Clear();
         sorrendtartalomoszlopnevek.Clear();
         csakosszegsorba.Clear();
         sorrendmezoinfok.Clear();
     }
     if (mezoinfo.SorrendSorszam != "0")
     {
         csakosszegsorba.Add(mezoinfo.CsakOsszegsorba);
         sorrendazonositok.Add(columninfo.ColumnName);
         sorrendtartalomoszlopnevek.Add(mezoinfo.TartalomOszlopNev);
         sorrendtartalmak.Add("");
         sorrendmezoinfok.Add(mezoinfo);
     }
 }