Pewnie wiesz, że raporty w FastReport .NET można tworzyć nie tylko w specjalnym projektancie, ale również z kodu aplikacji użytkownika. Jednocześnie, zamiast zwykłego pliku z rozszerzeniem frx, otrzymasz zgrupowany raport. Można go przekształcić w bibliotekę i używać w różnych projektach. W jaki sposób powstaje taki raport?
Spójrz na ten kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
//Create instance of class Report Report report = new Report(); //load data DataSet ds = new DataSet(); ds.ReadXml(AppFolder + "\\nwind.xml"); //Register data source report.RegisterData(ds); //Enable data table report.GetDataSource("Products").Enabled = true; //Add report page ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); //Create GroupHeader band GroupHeaderBand group = new GroupHeaderBand(); page.Bands.Add(group); group.CreateUniqueName(); group.Height = Units.Centimeters * 1; group.Condition = "[Products.ProductName].Substring(0,1)"; group.SortOrder = FastReport.SortOrder.Ascending; // create group text TextObject groupTxt = new TextObject(); groupTxt.Parent = group; groupTxt.CreateUniqueName(); groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1); groupTxt.Text = "[[Products.ProductName].Substring(0,1)]"; groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); groupTxt.VertAlign = VertAlign.Center; groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1); // create data band DataBand data = new DataBand(); group.Data = data; data.CreateUniqueName(); data.DataSource = report.GetDataSource("Products"); data.Height = Units.Centimeters * 0.5f; // create product name text TextObject productText = new TextObject(); productText.Parent = data; productText.CreateUniqueName(); productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); productText.Text = "[Products.ProductName]"; // create group footer group.GroupFooter = new GroupFooterBand(); group.GroupFooter.CreateUniqueName(); group.GroupFooter.Height = Units.Centimeters * 1; if (PDFCheckBox.Checked) { report.Prepare(); FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport(); export.Export(report); } else report.Show(); |
Jest to przykład jak stworzyć szablon raportu z grupami. Jak widać, konsekwentnie tworzymy obiekty raportu, zaczynając od raportu i stron do obiektów tekstowych. Stworzone obiekty wkładamy do innego, a w drugim i konfigurujemy właściwości ich wyświetlania. Wymaga to dobrej wydajności Fastreport .NET struktury szablonu raportu. Aby osiągnąć pożądany układ elementów, masz dużo czasu, aby uruchomić raport dokonać oceny wizualnej i poprawić właściwości obiektów, ustawić żądaną szerokość lub współrzędne. Dla tego to rozmieszczenie raportu powinno być na liście, macierze, tabeli - gdzie nie ma potrzeby, aby dostosować położenie elementów względem siebie.
Główną zaletą raportu generowanego w kodzie jest możliwość edytowania raportów podczas wykonywania, dodawania kodu w zależności od warunków lub zdarzeń. Dzięki temu można tworzyć raporty ze złożoną logiką, która bezpośrednio zależy od samej aplikacji klienckiej.
To nie jest tajemnica, że szablony raportów FastReport.Net są formatem xml, pomimo rozszerzenia frx. Szablony te są łatwe do przesyłania i wyświetlania na innych komputerach z pomogą programu Viewer. Niezaprzeczalnymi zaletami są mobilność i niezależność od aplikacji klienckiej w porównaniu do tradycyjnego wzorca w formacie raportu frx lub wersji z danymi wypełnionymi w formacie fpx. W związku z tym mając w swojej aplikacji raporty generowane z kodu, wielu chciałoby mieć możliwość konwertowania ich do normalnego formatu xml-like frx.
To jest bardzo proste:
1 2 |
Report report = new Report(); report.Save("C:\\report.frx"); |
To wszytko. Wystarczy użyć funkcji "Zapisz" w obiekcie raportu. Ponieważ parametry są przekazywane do ścieżki do nazwy pliku, w którym można zapisać raport. Więc możemy użyć jednego konta utworzonego na podstawie kodu i, jeśli to konieczne, przekonwertować go na tradycyjny format frx. Plik wynikowy można przekazać innym programistom lub użytkownikom.
Zarówno raporty oparte na kodzie, jak i raporty frx mają swoje zalety. Pierwszy ma przewagę gdy raport musi zostać zmieniony bezpośrednio "on the go,", drugi wtedy, gdy wymagany jest raport mobilny lub szablon zawiera wiele elementów z wyraźnie zdefiniowaną lokalizacją względem siebie. Musisz wybrać sposób tworzenia raportu na podstawie tych zalet.