Mówiąc o .Net framework, zwykle wyobrażamy sobie język programowania #C. Może po prostu dla tego, że udział programistów języka C# jest przeważający. Ale nie powinniśmy zapominać również o innych językach. Na przykład użytkownik generatora raportów z Stimulsoft chce utworzyć raport z kodu aplikacji w języku VB.NET:
“…Właśnie testuję, chciałbym stworzyć raport z kodem z VB. Próbuje pokazać raport z tytułem, który programuje w VB. ale w mojej aplikacji webowej nic si nie wyświetla.
Czy mogę otrzymać wskazówki, jak zrobić aby zaprojektowanie i wyświetlanie raportu z VB stało się możliwe? Czy może pomijam jakieś punkty instrukcji niezbędne do wykonania raportu?..."
https://forum.stimulsoft.com/viewtopic.php?f=8&t=2806
Podobnie jak każdy inny generator raportów, który pozwala na tworzenie raportów z kodu, Stimulsoft Reports.Net mogą być używane z kodu w języku VB.NET. Deweloperzy oczywiście wyjaśnili użytkownikowi, jak to zrobić.
Ale kiedy weźmiemy pod uwagę niektóre przypadki używania FastReport.NET, praktycznie nie widzimy żadnych przykładów w języku VB.NET. Dlatego chcielibyśmy poprawić ten artykuł i pokazać przykład tworzenia raportu z kodu aplikacji użytkownika w języku VB.NET.
Fakt jest taki, że to tylko interpretacja kodu C#:
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 |
Dim AppFolder As String Dim report As New Report() 'create instance of class Report Dim ds As New DataSet() 'create dataset object AppFolder = "C:\Users\User\source\repos\VBCodeReport\VBCodeReport\App_Data" 'load data ds.ReadXml(AppFolder + "\nwind.xml") report.RegisterData(ds) report.GetDataSource("Products").Enabled = True 'create report page Dim page As New ReportPage() report.Pages.Add(page) 'add created page to report page collection page.CreateUniqueName() 'with generated name 'create group header band Dim group As New GroupHeaderBand() page.Bands.Add(group) 'add the band to band collection group.CreateUniqueName() 'with generated name group.Height = Units.Centimeters * 1 group.Condition = "[Products.ProductName].Substring(0,1)" 'set the group condition group.SortOrder = FastReport.SortOrder.Ascending 'and set sort order 'create text object Dim groupTxt As New TextObject() groupTxt.Parent = group 'set the object on whitch the text will be shown groupTxt.CreateUniqueName() groupTxt.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1) 'set the text object bounds groupTxt.Text = "[[Products.ProductName].Substring(0,1)]" 'set the text value groupTxt.Font = New Font("Arial", 14, FontStyle.Bold) 'set the font style groupTxt.VertAlign = VertAlign.Center ' set the text align groupTxt.Fill = New LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5F, 1) 'set the text object fill 'create data band Dim data As New DataBand() group.Data = data 'set the group data data.CreateUniqueName() data.DataSource = report.GetDataSource("Products") 'set data band source data.Height = Units.Centimeters * 0.5F 'set data band height 'create one more text object Dim productText As New TextObject() productText.Parent = data 'add the text object to data band productText.CreateUniqueName() productText.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5F) 'set the text object bounds productText.Text = "[Products.ProductName]" 'set the text value 'create group footer band group.GroupFooter = New GroupFooterBand() group.GroupFooter.CreateUniqueName() group.GroupFooter.Height = Units.Centimeters * 1 'set the group footer height 'create total object Dim groupTotal As New Total() groupTotal.Name = "TotalRows" 'set total object name groupTotal.TotalType = TotalType.Count 'set total type groupTotal.Evaluator = data 'set the band for which the total will be calculated groupTotal.PrintOn = group.GroupFooter 'set the total place report.Dictionary.Totals.Add(groupTotal) 'add the total object to totals collection 'create text object Dim totalText As New TextObject() totalText.Parent = group.GroupFooter 'set the object on whitch the text will be shown totalText.CreateUniqueName() totalText.Bounds = New RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5F) 'set the text object bounds totalText.Text = "Rows: [TotalRows]" 'set the text value totalText.HorzAlign = HorzAlign.Right 'set the text align totalText.Border.Lines = BorderLines.Top 'set the border lines type report.Show() 'show report |
Z kodu i komentarzy wynika, że raport z grupą danych jest już jest stworzony. Niemniej jednak ten przykład pokazuje jak pracować z najczęściej używanymi obiektami w prostych raportach. Należy zauważyć, że nie wystarczy utworzyć obiekt raportu, nadal trzeba "umieścić" go na obiekcie, w którym będzie wyświetlany. Jest to kluczowy punkt w prawidłowym tworzeniu raportu z kodu.