예제 #1
0
파일: Tablainfo.cs 프로젝트: AndrasD/VezIR
 /// <summary>
 /// FakUserInterfacenel leirva
 /// </summary>
 /// <returns></returns>
 public TablainfoCollection GetCegPluszCegalattiTermTablaInfok() 
 {
     csakbase = true;
     Tablainfo egyinfo;
     ArrayList ar = new ArrayList();
     for (int i = 0; i < termszarmok.Count; i++)
     {
         if (termszarmok[i].ToString().Trim() == "T" && tablanevek[i].ToString() != "TARTAL")
         {
             egyinfo = this[i];
             if (("C" + egyinfo.Fak.Szintstring).Contains(szintek[i].ToString()) && egyinfo.TermParentTabinfo == null)
                 ar = AddChildren(ar,egyinfo);
         }
     }
     TablainfoCollection tc = new TablainfoCollection();
     for (int i = 0; i < ar.Count; i++)
     {
         if (tc.IndexOf((Tablainfo)ar[i]) == -1)
             tc.Add(ar[i]);
     }
     csakbase = false;
     return tc;
 }
예제 #2
0
파일: Listainfok.cs 프로젝트: AndrasD/VezIR
        /// <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();
        }
예제 #3
0
        private void Listazas()
        {
            //if (VanDatum)
            //{
                FakUserInterface.SetUserSzamitasokKellSzamitasDatum(true);
                FakUserInterface.SetUserSzamitasokDatumHatarok(Convert.ToDateTime(Datum1), Convert.ToDateTime(Datum2));
            //}
            //else
            //{
            //    Datum1 = FakUserInterface.DatumToString(DateTime.Today);
            //    Datum2 = Datum1;
            //}
            prop = report.PrintOptions;
            bool portop = true;
            if (listae && Listainfok.Oszlopinfok.Mezoinfok.Count > 7 || !listae && 1 + Listainfok.Matrixpontinfok.Mezoinfok.Count * (Listainfok.Matrixpontinfok.OszlopokSzama + 1) > 6)
                portop = false;
            if (portop)
                prop.PaperOrientation = PaperOrientation.Portrait;
            else
                prop.PaperOrientation = PaperOrientation.Landscape;
            foreach (DataTable dt in dataset.Tables)
                dt.Rows.Clear();
            dr = null;
            for (int i = 1; i < ig; i++)
            {
                DataView view = (DataView)osszesview[i];
                DataTable table = view.Table;
                if (view.Count != 0)
                {
                    egysor = "";
                    bool first = true;
                    int count = 1;
                    for (int j = 0; j < view.Count; j++)
                    {
                        if (j != 0)
                            egysor += newline[0].ToString();
                        DataRow row = view[j].Row;
                        for (int k = 2; k < table.Columns.Count; k++)
                        {
                            if (i != 1)
                            {
                                if (first)
                                {
                                    egysor += count.ToString();
                                    count++;
                                    first = false;
                                }
                            }
                            if (row[k].ToString() != "")
                            {
                                if (egysor != "")
                                    egysor += " ";
                                egysor += row[k].ToString();
                            }
                            if (i != -1 && table.Columns[k].ColumnName == "ESVAGY" && row[k].ToString() == "")
                                first = true;
                        }
                    }
                    switch (i)
                    {
                        case 1:
                            parfeltetel = egysor;
                            break;
                        case 2:
                            parsormeghatarozas = egysor;
                            break;
                        case 3:
                            paroszlopmeghatarozas = egysor;
                            break;
                    }
                }
            }
            elsotabinfo = Listainfok.ElsoTabinfo;
            DataTable dt1 = dataset.DataTable2;
            dr = dt1.NewRow();
            fotabla = elsotabinfo.DataView;
            OsszesBeallitandoId = Listainfok.OsszesBeallitandoId;
            OsszesBeallitottIdErtek = Listainfok.OsszesBeallitottIdErtek;
            tabinfok = Listainfok.Tablainfok;
            int tablainfoindex = Listainfok.Tablainfok.IndexOf(elsotabinfo);
            string tablanev = elsotabinfo.TablaTag.Azonositok.Szoveg;
            elsotabinfo.Adattabla.Rows.Clear();
            string selstring = elsotabinfo.GetTablainfoSelect(OsszesBeallitottIdErtek);
            string orderstring = elsotabinfo.Sort;
            ValtozasBeallit();
            elsotabinfo.DataView.Sort = orderstring;
            FakUserInterface.Select(fotabla.Table, FakUserInterface.AktualCegconn, fotabla.Table.TableName, selstring, "", false);
            elsotabinfo.Tartalmaktolt();
            if (!listae)
            {
                SorokSzama = Listainfok.Matrixpontinfok.SorokSzama;
                OszlopokSzama = Listainfok.Matrixpontinfok.OszlopokSzama;
            }
            SaveFilterek = new string[tabinfok.Count];
            SaveViewIndexek = new int[tabinfok.Count];
            sorokszama = new int[tabinfok.Count];
            int focount = fotabla.Table.Rows.Count;
            bool folytassuk = focount != 0;
            int rekszam = focount;
            int feldrekszam = 0;
            int fofilcount = elsotabinfo.RowFilterek.Count;
            int olvasdb = 0;
            int tabinfocount = tabinfok.Count - 1;
            if (tabinfocount == 0)
                tabinfocount++;
            if (fofilcount > 0)
            {
                string savfilt = "";
                elsotabinfo.RowFilterIndex = -1;
                int kulsociklusdb = 0;
                do
                {
                    //Datumbeallitasok();
                    //if (elsotabinfo.SpecDatumNevekArray.Count != 0)
                    //    elsotabinfo.DatumString=
                    for (int i = 0; i < fofilcount; i++)
                    {
                        elsotabinfo.SetRowFilter();
                        if (savfilt != elsotabinfo.DataView.RowFilter)
                        {
                            olvasdb += elsotabinfo.DataView.Count * tabinfocount;
                            feldrekszam += elsotabinfo.DataView.Count;
                            savfilt = elsotabinfo.DataView.RowFilter;
                        }
                    }
                    elsotabinfo.RowFilterIndex = -1;
                    kulsociklusdb++;
                } while (kulsociklusdb < elsotabinfo.SpecDatumNevekArray.Count);
                olvasdb += 1;
            }
            else
            {
                feldrekszam = rekszam;
                olvasdb = focount * tabinfocount;
            }
            if (!folytassuk)
                MessageBox.Show(tablanev + " beolvasott rekordszáma: 0\nA feltételek megfogalmazásában esetleg ellentmondás van!");
            else if (this.Name == "Altlistazoalap")
            {
                string figy = "";
                if (rekszam < feldrekszam)
                    figy = "\nA feltételek megfogalmazásában redundacia van!";
                olvasdb = olvasdb * Datumtomb.Count;
                feldrekszam = feldrekszam * Datumtomb.Count;
                folytassuk = MessageBox.Show(tablanev + " beolvasott rekordszáma:" + rekszam.ToString() + "\nFeldolgozott rekordok:" + feldrekszam.ToString() + figy + "\nVárható lemezműveletek száma:" + olvasdb.ToString() + "\nFolytassuk?", "", FakPlusz.MessageBox.MessageBoxButtons.IgenNem) == MessageBox.DialogResult.Igen;
            }
            if (folytassuk)
            {
                dataset.DataTable3.Rows.Clear();
                sorrendtabinfo = null;
                if (Listainfok.Sorrendinfok.Mezoinfok.Count != 0)
                    sorrendtabinfo = (Tablainfo[])Listainfok.Sorrendinfok.Mezoinfok.Tablainfok.ToArray(typeof(Tablainfo));
                if (Listainfok.Oszlopinfok.Mezoinfok.Count != 0)
                    oszloptabinfok = (Tablainfo[])Listainfok.Oszlopinfok.Mezoinfok.Tablainfok.ToArray(typeof(Tablainfo));
                if (Listainfok.Matrixpontinfok.Mezoinfok.Count != 0)
                    matrixponttabinfok = (Tablainfo[])Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok.ToArray(typeof(Tablainfo));
                egysor = "";
                uresek = new bool[tabinfok.Count];
                ures = false;
                for (int j = 0; j < tabinfok.Count; j++)
                    uresek[j] = false;
                firsttime = true;
                dt = dataset.DataTable2;
                elsotabinfo.DataView.RowFilter = "";
                elsotabinfo.SetRowFilter();
                string savfilt = elsotabinfo.DataView.RowFilter;
                SaveFilterek[tabinfok.IndexOf(elsotabinfo)] = savfilt;
                int datumtombcount = 0;
                do
                {
                    if (Datumtomb.Count != 0)
                    {
                        string[] datumok = (string[])Datumtomb[datumtombcount];
                        string elem1 = datumok[0];
                        string elem2 = datumok[1];
                        DateTime[] datetimeok = new DateTime[] { Convert.ToDateTime(datumok[0]), Convert.ToDateTime(datumok[1]) };
                        DateTime ujdatum;
                        if (mindatum.CompareTo(elem1) > 0)
                            ujdatum = Convert.ToDateTime(mindatum);
                        else
                            ujdatum = Convert.ToDateTime(elem1);
                        FakUserInterface.Cegadatok(ujdatum);

                        Datumtoligfeltetel = "(DATUMTOL IS NULL AND (DATUMIG IS NULL OR DATUMIG >= '" + elem1
                            + "') OR DATUMTOL IS NOT NULL AND DATUMTOL <= '" + elem2
                            + "' AND (DATUMIG IS NULL OR DATUMIG >= '" + elem1 + "')) ";
                        Kezdetefeltetel = "(KEZDETE IS NULL OR KEZDETE <= '" + elem2
                            + "') AND (VEGE IS NULL  OR VEGE >= '" + elem1 + "') ";
                        foreach (Tablainfo egyinfo in tabinfok)
                        {
                            string datumstring = "";
                            if (egyinfo.TablaColumns.IndexOf("DATUMTOL") != -1)
                                egyinfo.DatumString = Datumtoligfeltetel;

                            else if (egyinfo.TablaColumns.IndexOf("KEZDETE") != -1)
                                egyinfo.DatumString = Kezdetefeltetel;
                            else if (egyinfo.SpecDatumNevekArray.Count != 0)
                            {
                                for (int i = 0; i < egyinfo.SpecDatumNevek.Length; i++)
                                {
                                    if (egyinfo.SpecDatumNevSzerepel[i] || egyinfo == elsotabinfo)
                                    {
                                        if (datumstring == "")
                                            datumstring += "(";
                                        else
                                            datumstring += " OR ";
                                        string nev = egyinfo.SpecDatumNevek[i];
                                        datumstring += nev + " <= '" + elem2 + "' AND " + nev + " >= '" + elem1 + "'";
                                    }
                                }
                                if (datumstring != "")
                                    datumstring += ")";
                                egyinfo.DatumString = datumstring;
                            }
                            if (egyinfo == elsotabinfo)
                            {
                                selstring = elsotabinfo.GetTablainfoSelect(OsszesBeallitottIdErtek);
                                FakUserInterface.Select(fotabla.Table, FakUserInterface.AktualCegconn, fotabla.Table.TableName, selstring, "", false);
                                elsotabinfo.Tartalmaktolt();
                            }
                            //if (egyinfo != ElsoTabinfo)
                            //{
                            //    egyinfo.BeallitandoIdkArray(elsotabinfoid, ElsoTabinfo, Tablainfok, OsszesBeallitandoId, OsszesBeallitottIdErtek);
                            //}
                        }
                    }

                    do
                    {
                        elsotabinfo.RowFilterIndex = -1;
                        elsotabinfo.DataView.RowFilter = "";
                        elsotabinfo.SetRowFilter();
                        savfilt = elsotabinfo.DataView.RowFilter;
                        SaveFilterek[tabinfok.IndexOf(elsotabinfo)] = savfilt;

                        for (int i = 0; i < fotabla.Count; i++)
                        {
                            elsotabinfo.ViewSorindex = i;
                            SaveViewIndexek[0] = elsotabinfo.ViewSorindex;
                            dr = fotabla[i].Row;
                            elsotabinfo.Tartalmaktolt(i);
                            elsotabinfo.IdErtekBeallitasok(dr, OsszesBeallitottIdErtek);
                            ures = TobbiTabinfoSelect();
                            if (!ures)
                            {
                                if (firsttime)
                                    ReportHeaderOsszeallit();
                                do
                                {
                                    sorrendvaltozasszint = SorrendValtozasok();
                                    kellcsakosszegsorba = false;
                                    if (sorrendvaltozasszint != -1)
                                    {
                                        int tol = Listainfok.Sorrendinfok.Mezoinfok.Count - 1;
                                        if (listae)
                                            count = Listainfok.Oszlopinfok.Mezoinfok.Count - 1;
                                        else
                                            count = (Listainfok.Matrixpontinfok.OszlopokSzama + 1) * Listainfok.Matrixpontinfok.Mezoinfok.Count;

                                        if (listae && (Listainfok.Oszlopinfok.Osszegzendok.Count != 0 || Listainfok.Oszlopinfok.Atlagolandok.Count!=0) || !listae)
                                        {
                                            do
                                            {
                                                dr = dt.NewRow();
                                                s = Listainfok.Sorrendinfok.Mezoinfok[tol].ElozoSorrendTartalom;
                                                if (s != "")
                                                {
                                                    if (listae || tol != Listainfok.Sorrendinfok.Mezoinfok.Count - 1)
                                                        s += " összesen:";
                                                    dr[0] = s;
                                                    dt.Rows.Add(dr);
                                                    if (listae)
                                                        Listainfok.Oszlopinfok.OsszegsorOsszeallit(tol, dt);
                                                    else
                                                        Listainfok.Matrixpontinfok.OsszegsorOsszeallit(tol, dt);
                                                    if (!listae)
                                                    {
                                                        dr = dt.NewRow();
                                                        for (int j = 0; j <= count; j++)
                                                            dr[j] = "__________";
                                                        dt.Rows.Add(dr);
                                                    }
                                                }
                                                tol = tol - 1;
                                            } while (sorrendvaltozasszint <= tol);
                                        }
                                        if (listae)
                                        {
                                            dr = dt.NewRow();
                                            for (int j = 0; j <= count; j++)
                                                dr[j] = "__________";
                                            dt.Rows.Add(dr);
                                        }
                                    }
                                    foreach (Mezoinfo info in Listainfok.Sorrendinfok.Mezoinfok)
                                    {
                                        string tart = info.ColumnInfo.Tablainfo.GetSorrendtartalom(info);
                                        if (tart != "")
                                        {
                                            kellcsakosszegsorba = true;
                                            if (listae)
                                            {
                                                dr = dt.NewRow();
                                                dr[0] = tart;
                                                dt.Rows.Add(dr);
                                            }
                                        }
                                    }
                                    if (listae)
                                    {
                                        foreach (Tablainfo egytabinfo in oszloptabinfok)
                                        {
                                            if (egytabinfo.ViewSorindex != -1)
                                                egytabinfo.Tartalmaktolt(egytabinfo.ViewSorindex);
                                        }
                                        if (egysor != "")
                                            egysor += newline[0];
                                        dr = dt.NewRow();
                                        for (int j = 0; j < dt.Columns.Count; j++)
                                        {
                                            if (j < Listainfok.Oszlopinfok.Mezoinfok.Count)
                                            {
                                                Mezoinfo info = Listainfok.Oszlopinfok.Mezoinfok[j];
                                                string tart = "";
                                                if (!info.CsakOsszegsorba || kellcsakosszegsorba)
                                                    tart = info.ColumnInfo.Tablainfo.GetOszlopTartalom(info);
                                                if (!info.CsakOsszegsorba)
                                                {
                                                    split = tart.Split(vesszo);
                                                    if (split.Length == 2)
                                                    {
                                                        if (split[1].Length > 2)
                                                        {
                                                            split[1] = split[1].Substring(0, 2);
                                                            tart = split[0] + "," + split[1];
                                                        }
                                                    }
                                                    dr[j] = tart;
                                                }
                                                else
                                                    dr[j] = "";
                                                if (info.Osszegzendo || info.Atlagolando)
                                                    Listainfok.Oszlopinfok.Osszegfeladasok(info);
                                            }
                                            else
                                                dr[j] = "";
                                        }
                                        dt.Rows.Add(dr);
                                        ures = TobbiTabinfoKovsor();
                                    }
                                    else
                                    {
                                        for (int j = 0; j < tabinfok.Count; j++)
                                        {
                                            tabinfok[j].ViewSorindex = SaveViewIndexek[j];
                                            tabinfok[j].IdErtekBeallitasok(tabinfok[j].AktualViewRow, OsszesBeallitottIdErtek);
                                        }
                                        for (int j = 0; j < SorokSzama; j++)
                                        {
 //                                           elsotabinfo.DataView.RowFilter = "";
                                            elsotabinfo.ViewSorindex = i;
                                            ures = ElsoTabinfoSorVizsg(j);
                                            if (!ures)
                                            {
                                                ures = TobbiSorTabinfoSelect(j);
                                                bool elso = true;
                                                if (!ures)
                                                {
                                                    do
                                                    {
                                                        if (!elso)
                                                        {
                                                            Tablainfo tabinfo;
                                                            for (int l = 0; l < Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok.Count; l++)
                                                            {
                                                                tabinfo = Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok[l];
                                                                int id = tabinfok.IndexOf(tabinfo);
                                                                tabinfo.ViewSorindex = SaveViewIndexek[id] + 1;
                                                                tabinfo.Tartalmaktolt(tabinfo.ViewSorindex);
                                                                tabinfo.IdErtekBeallitasok(tabinfo.AktualViewRow, OsszesBeallitottIdErtek);
                                                                SaveViewIndexek[id] = tabinfo.ViewSorindex;
                                                            }
                                                            ures = true;
                                                            for (int l = 0; l < Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok.Count; l++)
                                                            {
                                                                tabinfo = Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok[l];
                                                                if (tabinfo.ViewSorindex != -1)
                                                                    ures = false;
                                                            }
                                                        }
                                                        else
                                                        {
                                                            for (int l = 0; l < Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok.Count; l++)
                                                            {
                                                                Tablainfo tabinfo = Listainfok.Matrixpontinfok.Mezoinfok.Tablainfok[l];
                                                                int id = tabinfok.IndexOf(tabinfo);
                                                                SaveViewIndexek[id] = tabinfo.ViewSorindex;
                                                            }
                                                            elso = false;
                                                        }
                                                        if (!ures)
                                                        {
                                                            for (int k = 0; k < OszlopokSzama; k++)
                                                            {
 //                                                               elsotabinfo.DataView.RowFilter = "";
                                                                if (i > elsotabinfo.DataView.Count - 1)
                                                                    elsotabinfo.ViewSorindex = elsotabinfo.DataView.Count - 1;
                                                                else
                                                                    elsotabinfo.ViewSorindex = i;
                                                                ures = ElsoTabinfoOszlopVizsg(k);
                                                                if (!ures)
                                                                {
                                                                    ures = TobbiOszlopTabinfoSelect(k);
                                                                    if (!ures)
                                                                    {
                                                                        Listainfok.Matrixpontinfok.Osszegfeladasok(j, k);
                                                                        Listainfok.Matrixpontinfok.Osszegfeladasok(j, OszlopokSzama);
                                                                        Listainfok.Matrixpontinfok.Osszegfeladasok(SorokSzama, k);
                                                                        Listainfok.Matrixpontinfok.Osszegfeladasok(SorokSzama, OszlopokSzama);
                                                                    }
                                                                }
                                                            }
                                                            for (int k = 0; k < tabinfok.Count; k++)
                                                                tabinfok[k].ViewSorindex = SaveViewIndexek[k];
                                                        }
                                                    } while (!ures);
                                                }
                                            }
                                            for (int k = 0; k < tabinfok.Count; k++)
                                            {
                                                tabinfok[k].ViewSorindex = SaveViewIndexek[k];
                                                tabinfok[k].DataView.RowFilter = SaveFilterek[k];
                                            }
                                        }
                                        for (int k = 0; k < tabinfok.Count; k++)
                                        {
                                            tabinfok[k].ViewSorindex = SaveViewIndexek[k];
                                            tabinfok[k].DataView.RowFilter = SaveFilterek[k];
                                        }
                                        ures = true;
                                    }
                                } while (!ures);
                            }
                        }
                    } while (elsotabinfo.SetRowFilter());
                    datumtombcount++ ;
                } while (datumtombcount < Datumtomb.Count);

                    if (listae)
                        count = Listainfok.Oszlopinfok.Mezoinfok.Count - 1;
                    else
                        count = (Listainfok.Matrixpontinfok.OszlopokSzama + 1) * Listainfok.Matrixpontinfok.Mezoinfok.Count;

                    if (sorrendtabinfo != null)
                    {
                        int tol = Listainfok.Sorrendinfok.Mezoinfok.Count - 1;
                        if (listae && (Listainfok.Oszlopinfok.Osszegzendok.Count != 0 || Listainfok.Oszlopinfok.Atlagolandok.Count!=0 )|| !listae)
                        {
                            do
                            {
                                dr = dt.NewRow();
                                string s;
                                if (listae)
                                    s = Listainfok.Sorrendinfok.Mezoinfok[tol].ElozoSorrendTartalom;
                                else
                                    s = Listainfok.Matrixpontinfok.Sorrendszovegek[tol];
                                if (listae || tol != Listainfok.Sorrendinfok.Mezoinfok.Count - 1)
                                    s += " összesen:";
                                dr[0] = s;
                                dt.Rows.Add(dr);
                                if (listae)
                                    Listainfok.Oszlopinfok.OsszegsorOsszeallit(tol, dt);
                                else
                                    Listainfok.Matrixpontinfok.OsszegsorOsszeallit(tol, dt);

                                tol = tol - 1;
                                if (!listae)
                                {
                                    dr = dt.NewRow();
                                    for (int j = 0; j <= count; j++)
                                        dr[j] = "__________";
                                    dt.Rows.Add(dr);
                                }
                            } while (tol >= 0);
                        }
                        if (Listainfok.Oszlopinfok.Osszegzendok.Count != 0 || Listainfok.Oszlopinfok.Atlagolandok.Count!=0)
                        {
                            dr = dt.NewRow();
                            for (int j = 0; j <= count; j++)
                                dr[j] = "__________";
                            dt.Rows.Add(dr);
                            dr = dt.NewRow();
                            dr[0] = "Végösszesen:";
                            dt.Rows.Add(dr);
                            Listainfok.Oszlopinfok.OsszegsorOsszeallit(Listainfok.Sorrendinfok.Mezoinfok.Count, dt);
                        }
                    }
                    if (!listae)
                    {
                        if (sorrendtabinfo != null)
                        {
                            dr = dt.NewRow();
                            dr[0] = "Végösszesen:";
                            dt.Rows.Add(dr);
                        }
                        Listainfok.Matrixpontinfok.OsszegsorOsszeallit(Listainfok.Matrixpontinfok.SorrendmezokSzama, dt);
                    }
                //    datumtombcount++ ;
                //} while (datumtombcount < Datumtomb.Count);

                report.SetDataSource(dataset);
                string szov = "";
                report.SetParameterValue("cegnev", FakUserInterface.AktualCegnev);
                report.SetParameterValue("megnevezes", Tabinfo.Szoveg);
                report.SetParameterValue("feltetel", parfeltetel);
                if (parfeltetel != "")
                    szov = "Feltétel:";
                else
                    szov = "";
                report.SetParameterValue("feltszov", szov);
                if (paroszlopmeghatarozas != "")
                    szov = "Oszlopmeghatározások:";
                else
                    szov = "";
                report.SetParameterValue("oszlopmeghszov", szov);
                report.SetParameterValue("oszlopmeghatarozas", paroszlopmeghatarozas);
                if (parsormeghatarozas != "")
                    szov = "Sormeghatározások:";
                else
                    szov = "";
                report.SetParameterValue("sormeghszov", szov);
                report.SetParameterValue("sormeghatarozas", parsormeghatarozas);
                if (Datum2 == "")
                    report.SetParameterValue("datum", Datum1);
                else
                    report.SetParameterValue("datum", Datum1 + " - " + Datum2);
                if (listae)
                {
                    for (int i = 0; i < Listainfok.Oszlopinfok.Mezoinfok.Count; i++)
                    {
                        Mezoinfo info = Listainfok.Oszlopinfok.Mezoinfok[i];
                        if (!info.ColumnInfo.Comboe && info.ColumnInfo.Numeric(info.ColumnInfo.DataType))
                        {
                            report.Section2.ReportObjects[i].ObjectFormat.HorizontalAlignment = Alignment.RightAlign;
                            report.Section3.ReportObjects[i].ObjectFormat.HorizontalAlignment = Alignment.RightAlign;
                        }
                        else
                        {
                            report.Section2.ReportObjects[i].ObjectFormat.HorizontalAlignment = Alignment.LeftAlign;
                            report.Section3.ReportObjects[i].ObjectFormat.HorizontalAlignment = Alignment.LeftAlign;
                        }
                    }
                }
                crystalReportViewer1.ReportSource = report;
                crystalReportViewer1.Enabled = false;
                crystalReportViewer1.Enabled = true;
            }
            else
                tabControl1.SelectedIndex = 0;
        }