Wenn wir über das .NET-Framework sprechen, denken wir normalerweise an die Programmiersprache #C. Einfach, weil der Anteil der C#-Programmierer überwältigend ist. Vergessen Sie aber auch nicht andere Sprachen. So möchte beispielsweise ein Benutzer des Stimulsoft-Reportgenerators einen Report aus dem Anwendungscode in der Sprache VB.Net erstellen:
“…At this moment I just testing, I would like to create a report with code from VB. At this moment I am trying to show a report with the tittle that I program in VB. but not show me anything in my web application.
Can you give me some guidance on how to do this would be possible to design the report from VB and it shows? Or if I'm omitting any instruction or object to make the report?..."
https://forum.stimulsoft.com/viewtopic.php?f=8&t=2806
Wie jeder andere Reportgenerator, mit dem Sie Reporte aus dem Code erstellen können, kann Stimulsoft Reports.NET aus VB.Net-Code verwendet werden. Die Entwickler haben dem Benutzer freundlicherweise erklärt, wie das geht.
Was in bestimmte Fälle angeht, finden wir in der FastReport.NET-Anwendung jedoch praktisch keine Beispiele in der VB.Net-Sprache. In Anbetracht dessen will ich in diesem Artikel ein Beispiel fürs Erstellen eines Reports aus dem Code einer benutzerdefinierten Anwendung in der Sprache VB.NET korrigieren und zeigen.
Eigentlich ist dies nur eine Interpretation des C# -Codes:
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 |
Aus dem Code und den Kommentaren geht hervor, dass ein Report mit Datengruppierung generiert wird. Dieses Beispiel zeigt jedoch, wie Sie mit den am häufigsten verwendeten Objekten in einfachen Reporten arbeiten. Bitte beachten Sie, dass es nicht ausreicht, ein Reportobjekt zu erstellen. Es muss dennoch auf dem Objekt "platziert" werden, auf dem es angezeigt wird. Dies ist ein Schlüssel zum korrekten Generieren eines Reports aus dem Code.