using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using System.Drawing; using System.Data; using FastReport; using FastReport.Data; using FastReport.Dialog; using FastReport.Barcode; using FastReport.Table; using FastReport.Utils; namespace FastReport { public class ReportScript { private void Table1_ManualBuild(object sender, EventArgs e) { int maxOraszam = int.Parse(Report.Parameters.FindByName("MaxOraszam").Value.ToString()); // Fő tábla: hetek DataSourceBase masterData = Data8.DataSource; // Gyerek tábla: összes adat DataSourceBase rowData = Report.GetDataSource("NaploAdatok"); // Fő tábla inicializálása //masterData.Init(); // Mennyi hét van int hetek = masterData.RowCount; // Kacsolat beállítása a fő és a gyerek tábla között Relation rel = new Relation(); rel.Name = "AccountsInvoices"; rel.ParentDataSource = masterData; rel.ChildDataSource = rowData; rel.ParentColumns = new string[] { "C_HETSORSZAMA" }; rel.ChildColumns = new string[] { "C_HETSORSZAMA" }; Report.Dictionary.Relations.Add(rel); // Paraméterben kapott oszlopok, ezek, amik dinamikusan generálódnak minden osztályhoz string[] poszlopok = Report.GetParameterValue("Oszlopok") as string[]; //for(int i=0; i<hetek; i++) { rowData.Init(masterData); // Mennyi oszlop lesz összesen int oszlopok = poszlopok.Length + 4; // Első nap int nap = 0; // Fejléc generálása OsztalyNaplo.PrintRow(0); for (int k = 0; k < oszlopok; k++) { if(k<4) { OsztalyNaplo.PrintColumn(k); } else { OszlopFejlec.Text= poszlopok[k-4]; OsztalyNaplo.PrintColumn(4); } } // Végigmegyünk az összes soron while(rowData.HasMoreRows) { // Ha péntek után még van nap if(nap==5) { // akkor új oldalra kerül OsztalyNaplo.PageBreak(); // Fejléc generálása OsztalyNaplo.PrintRow(0); for (int k = 0; k < oszlopok; k++) { if(k<4) { OsztalyNaplo.PrintColumn(k); } else { OszlopFejlec.Text= poszlopok[k-4]; OsztalyNaplo.PrintColumn(4); } } } // 10 sor van egy naphoz for(int j=1; j < maxOraszam + 1; j++) { OsztalyNaplo.PrintRow(j); // Tanítási napok sorszáma Object temporaszam = Report.GetColumnValue("NaploAdatok.NapSorszama") as object; if(temporaszam != null) { CellNapSorszama.Text = temporaszam.ToString()+"."; } // A hét napja nyelvesítve string temphetnapja = Report.GetColumnValue("NaploAdatok.C_HETNAPJA_DNAME") as string; if(temphetnapja != null) { CellHetNapja.Text = temphetnapja; } // Tantárgyak egy naphoz string temptargy = Report.GetColumnValue("NaploAdatok.Tantargy") as string; if(temptargy!=null) { switch(j) { case 1: CellTargy1.Text = temptargy; break; case 2: CellTargy2.Text = temptargy; break; case 3: CellTargy3.Text = temptargy; break; case 4: CellTargy4.Text = temptargy; break; case 5: CellTargy5.Text = temptargy; break; case 6: CellTargy6.Text = temptargy; break; case 7: CellTargy7.Text = temptargy; break; case 8: CellTargy8.Text = temptargy; break; case 9: CellTargy9.Text = temptargy; break; case 10: CellTargy10.Text = temptargy; break; case 11: CellTargy11.Text = temptargy; break; case 12: CellTargy12.Text = temptargy; break; case 13: CellTargy13.Text = temptargy; break; case 14: CellTargy14.Text = temptargy; break; case 15: CellTargy15.Text = temptargy; break; case 16: CellTargy16.Text = temptargy; break; case 17: CellTargy17.Text = temptargy; break; case 18: CellTargy18.Text = temptargy; break; case 19: CellTargy19.Text = temptargy; break; case 20: CellTargy20.Text = temptargy; break; case 21: CellTargy21.Text = temptargy; break; case 22: CellTargy22.Text = temptargy; break; case 23: CellTargy23.Text = temptargy; break; case 24: CellTargy24.Text = temptargy; break; case 25: CellTargy25.Text = temptargy; break; } } // Mulasztások string tempmulasztas = Report.GetColumnValue("NaploAdatok.Mulasztas") as string; if(tempmulasztas!=null) { Cell50.Text = tempmulasztas.Replace("[","{").Replace("]","}"); Cell50.RowSpan = maxOraszam; } // Az alap 4 oszlop utáni dinamikusan generált oszlopok feltöltése for (int k = 0; k < oszlopok; k++) { if(k<4) { OsztalyNaplo.PrintColumn(k); } else { Cell64.Text=""; string tempmegj = Report.GetColumnValue("NaploAdatok." + poszlopok[k-4]) as string; if(tempmegj != null) { Cell64.Text=tempmegj; Cell64.RowSpan = maxOraszam; } OsztalyNaplo.PrintColumn(4); } } rowData.Next(); } nap++; } OsztalyNaplo.ResultTable.AfterCalcBounds += new EventHandler(ResultTable_AfterCalcBounds); } } private void ResultTable_AfterCalcBounds(object sender, EventArgs e) { // Táblázat szélességének beállítása TableResult resultTable = sender as TableResult; float tableWidth = resultTable.Width; float pageWidth = Engine.PageWidth; //if (tableWidth > pageWidth) { float ratio = pageWidth / tableWidth; foreach (TableColumn column in resultTable.Columns) { column.AutoSize = false; column.Width *= ratio; } resultTable.CalcHeight(); } } private void OsztalyNaploOldal_StartPage(object sender, EventArgs e) { Data8.DataSource = Report.GetDataSource("NaploHetek"); if (!string.IsNullOrWhiteSpace(Report.Parameters.FindByName("NaploZarasanakDatuma").Value.ToString()) && DateTime.Parse(Report.Parameters.FindByName("NaploZarasanakDatuma").Value.ToString()) <= DateTime.Now) { HaladasiNaploLezaras.Visible = true; HaladasiLezarasText.Text =string.Format("Ezt a naplót {0} tanítási nappal lezártam.", Report.GetColumnValue("Fejlec.TanitasiNapokSzama").ToString()); } } } }