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; }