Ejemplo n.º 1
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;
        }