Unbound reports are reports without an underlying source recordset. This type of report can be useful in two situations:
As an example of a simple unbound report, let's create a simple newsletter without a source recordset. This is done with the C1ReportDesigner application, except that you leave the ConnectionString and RecordSource properties blank and add placeholder fields to the report. The placeholder fields are simple labels whose contents will be set by an application.
Assuming you created a report with six placeholder fields named "FldHeadlineXXX" and "FldBodyXXX" (where XXX ranges from 1 to 3), you could use the following code to render the report:
To write code in Visual Basic
Visual Basic |
Copy Code
|
---|---|
Private Sub MakeReport() ' find report definition file Dim path As String = Application.StartupPath Dim i As Integer = path.IndexOf("\bin") If i > -1 Then path = path.Substring(0, i) path = path & "\" ' load unbound report c1r.Load(path & "Newsletter.xml", "NewsLetter") ' set field values c1r.Fields("FldHeadline1").Text = "C1Report Launched" c1r.Fields("FldBody1").Text = "ComponentOne unveils..." c1r.Fields("FldHeadline2").Text = "Competitive Upgrades" c1r.Fields("FldBody2").Text = "Get ahead ..." c1r.Fields("FldHeadline3").Text = "C1Report Designer" c1r.Fields("FldBody3").Text = "The C1Report Designer..." ' done, show the report c1ppv.Document = c1r ' and/or save it to an HTML document so your subscribers ' can get to it over the Web c1r.RenderToFile(path & "Newsletter.htm", FileFormatEnum.HTML) End Sub |
To write code in C#
C# |
Copy Code
|
---|---|
private void MakeReport() { // find report definition file string path = Application.StartupPath; int i = path.IndexOf("\bin"); if ( i > -1 ) { path = path.Substring(0, i) path = path + "\"; // load unbound report c1r.Load(path + "Newsletter.xml", "NewsLetter"); // set field values c1r.Fields["FldHeadline1"].Text = "C1Report Launched"; c1r.Fields["FldBody1"].Text = "ComponentOne unveils..."; c1r.Fields["FldHeadline2"].Text = "Competitive Upgrades"; c1r.Fields["FldBody2"].Text = "get { ahead ..."; c1r.Fields["FldHeadline3"].Text = "C1Report Designer"; c1r.Fields["FldBody3"].Text = "The C1Report Designer..."; // done, show the report c1ppv.Document = c1r; // and/or save it to an HTML document so your subscribers // can get to it over the Web c1r.RenderToFile(path + "Newsletter.htm", FileFormatEnum.HTML); } |
Here's what this issue of ComponentOne's newsletter looks like. Notice that our simple program does not deal with any formatting at all; it simply supplies the report contents. The report definition created with the C1ReportDesigner application takes care of all the formatting, including a headline with a logo, page footers, fonts and text positioning.
Separating format from content is one of the main advantages of unbound reports.