Skip to main content

Create an Invoice in the Visual Studio Report Designer

  • 9 minutes to read

This tutorial describes how to create a simple invoice report at design time.

invoice-preview

Run Demo: View Online Demo Run Demo: View Desktop Demo

Watch Video: Reporting: Create Invoices (YouTube)

Add Data to a Report

Specify a Data Source

Add a new blank report to your application. Click the report’s smart tag, expand the Data Source property’s drop-down list, and click Add Report Data Source.

invoice-report-smart-tag-data-source-property

Select a data source type in the invoked Data Source Wizard and click Next.

ReportWizard-SelectDataSourceType

Select an available connection or specify new connection settings. Click Next to continue. This tutorial uses a connection to the sample Northwind database.

invoice-report-data-source-wizard-select-data-connection

Select Tables, Views, or Stored Procedures

You can obtain data from two different tables to display customer and order data at the same hierarchical level. Click the Queries category’s Add button.

invoice-report-data-source-wizard-master-query

In the invoked Query Builder dialog, add the Customers and Orders tables to a query and join them based on a key column. Click OK to close the Query Builder.

invoice-report-data-source-wizard-master-query

Select the view that contains order details (the OrderDetailsExtended view). Click the Manage Relations button to specify a master-detail relationship between the queries. Drag the key field from one query onto the other query’s key field in the invoked dialog and click OK.

invoice-report-data-source-wizard-master-detail-relation

Click Finish to complete the wizard.

Ensure that the Customers data member is assigned to the report. Click the report’s smart tag and check the Data Source and Data Member properties.

invoice-report-data-member-property

Create the Master Report Layout

Add and Format a Table

Drop the XRTable item from the Toolbox onto the design surface.

invoice-drop-table

Manage the table’s rows and columns so that it contains the required number of cells. You can use the context menu to insert and delete columns, rows, or individual cells. When you delete a single cell, the nearest left cell spans to the next column.

invoice-table-delete-column

Drag cell borders to adjust the table size. In this tutorial, the master table has the following parameters:

Property Value
Location 65.62, 23.36
Size 396.92, 145
Left Column Width 145.5
Right Column Width 251.42

Add Data to the Table

Add the customer’s contact information in the right column. Switch to the Field List and drop data fields onto the column cells.

invoice-table-drop-fields

Add captions to the left column. Double-click a cell to open an in-place editor and enter the text.

invoice-table-add-captions

Create the Detail Report Layout

Add a Detail Band

Right-click the design surface and select Insert Detail Report and the query relationship’s name from the context menu.

invoice-add-detail-report-band

Place order details on the added band. Switch to the Field List and hold CTRL or SHIFT to select multiple fields. Drop the selected fields onto the band to create a table with cells bound to these fields.

invoice-detail-report-drop-fields

Add a top left cell to display a record number. To do that, right-click the existing top left cell and select Insert | Column to Left in the context menu.

Expand the cell’s smart tag and set the Summary property to Report to display the numbers within an entire detail report.

Drag table borders to adjust the table size and location. In this tutorial, the table has the following parameters:

Property Value
Location 80.64, 0
Size 689.35, 32.29
Padding 5, 5, 5, 5

Add a Group Header with Column Titles

Right-click the detail report and select Insert Band | GroupHeader to add a Group Header band. This band displays column titles.

invoice-report-detail-layout-insert-group-header

Switch to the Field List and select the fields for which you want to create column titles. Drag these fields onto the Group Header band with the right mouse button. This creates a table with field names. Add a new cell with a title to the record numbers.

invoice-report-detail-layout-add-table-headers

Expand the Detail Report band’s smart tag and set the Page Break property to AfterBand to print each invoice on a separate page.

invoice-report-detail-report-band-page-break

Drag table borders to adjust the table size and location, and align this table with the table in the Detail band. In this tutorial, the table has the following parameters:

Property Value
Location 80.64, 0
Size 689.35, 31.25
Padding 5, 5, 5, 5

Right-click the detail report and select Insert Band | GroupFooter to add a Group Footer band.

Drop the XRLabel control onto the added band. Expand the label’s smart tag and click the Summary property’s ellipsis button to invoke the Summary Editor.

invoice-label-summary

In this tutorial, we create three summary labels, one below another, with the following parameters:

Label Summary running Summary function Argument expression
Subtotal Report Sum [Quantity] * [UnitPrice]
Discount total Report Sum [UnitPrice] * [Quantity] * [Discount]
Grand total Report Sum [ExtendedPrice]

Expand the Group Footer band’s smart tag and enable the PrintAtBottom property to align totals to the page bottom.

invoice-group-footer-print-at-bottom

Fill Empty Space Between Summary and Records

Expand the Detail band’s smart tag and enable the FillEmptySpace property to add empty lines between the Detail band’s data and the summary labels. The FillEmptySpace option becomes available only if the GroupFooterBand.PrintAtBottom property is enabled.

invoice-fill-empty-space

Note

The empty region below the Detail band is populated with copies of the band. These band copies retain the layout and display the cells’ Text property values instead of data. Clear each cell’s Text property to prevent this behavior and display empty lines.

Add an Invoice Header

Add a Page Header band to the master report to display the order number and your company’s logo. Right-click the detail report and select Insert Band | Page Header.

Set the Print On property to AllPages to repeat the header on each page of the invoice.

Drop the XRPanel control onto the band to visually outline the header. Drag the panel’s borders to fit the entire Page Header band.

invoice-resize-panel

Add a Table with Order Information

Drop the XRTable control from the Toolbox onto the panel, and organize its rows and columns so it contains the required number of cells. Drop the fields from the Field List onto the right column. Add captions to the left column.

invoice-add-invoice-number-and-date

Adjust the table parameters as follows:

Property Value
Location 608, 48.33
Size 218.01, 41.67
Column Width 112.86

Add a Logo Image

Drop the XRPictureBox control onto the panel to display your company’s logo. Expand the control’s smart tag. Click the Image Source property’s ellipsis button and choose an image file in the invoked Open dialog.

invoice-picture-box-specify-image-source

Set the Sizing property to ZoomImage to fit the image to the box.

invoice-picture-box-sizing

Format Data

Specify Expressions

In the Detail band, specify the data format for the address field. Expand the cell’s smart tag and click the Expression property’s ellipsis button.

invoice-table-construct-address

Specify a format string in the invoked Expression Editor and click OK.

invoice-table-construct-address

Expand the record number cell’s smart tag and specify the SumRecordNumber() expression in the Expression property.

invoice-add-line-numbers

Specify Format Strings

In the Detail Report band, hold CTRL or SHIFT and select cells with price fields. Switch to the Properties window and click the TextFormatString property’s ellipsis button.

invoice-format-string-currency

Select the Currency category in the invoked Format String Editor and click the required format.

invoice-format-string-currency

Specify a date and time format string for the date cell in the invoice header. Expand the cell’s smart tag and set the Format String property to {0:MM/dd/yy}.

Set the summary labels’ Format String property to [Label Name]: {0:c2} (for example, Subtotal: {0:c2}).

invoice-label-format-string

Sort Data

Select the detail report’s Detail band and switch to the Group and Sort panel. Click Add a Sort and select the required field from the drop-down list. Use the Sort Order property to change the sort order.

invoice-sort-items

Customize the Invoice Appearance

Change Individual Parameters for Summary Labels

You can specify font parameters for an individual element (for instance, set the Bold property to true) in the Properties window.

Click the Font property’s ellipsis button to invoke the Font dialog.

invoice-label-set-font

This dialog allows you to change multiple font parameters at once.

invoice-label-set-font

The TextAlignment property allows you to align text within an element. For instance, you can right-align text in the summary labels.

invoice-labels-align-text

Specify borders for summary labels. Select a label and set its Borders property to Bottom. Specify the BorderColor property to change the border color.

invoice-set-borders

Create a Visual Style

Create a visual style to apply it to multiple report elements. Right-click Styles in the Report Explorer and select Add Style.

invoice-report-add-style

Specify the style settings. You can use the Properties window or the Style Editor. To invoke the Style Editor, right-click the required style and select Edit Styles…

invoice-report-style-settings-fore-color

Drag the created style from the Report Explorer onto a report element to apply the style settings to this element.

invoice-drag-style

You can differentiate odd and even table rows. Select the table and expand the Styles property in the Properties window. Expand the EvenStyle property’s drop-down list and select New.

invoice-report-table-even-style

In this tutorial, the following styles are applied:

Parameter Foreground ForegroundDisabled SimpleText TableHeader
Font Arial, 9.25pt, style=Bold Arial, 9.5pt, style=Bold Arial, 9.25pt Arial, 9.25, Bold
ForeColor 60, 67, 82 128, 128, 128 67, 73, 86 67, 73, 86
Borders Not Set Not Set Bottom Top,Bottom
BorderColor Not Set Not Set 224, 224, 224 67, 73, 86
TextAlignment MiddleRight MiddleRight MiddleLeft MiddleLeft

Create Other Invoice Types

Refer to the following articles for information on how to create other available invoice types:

Create an Invoice in the End-User Report Designer

Tutorials that explain how to create different reports in EUD Report Designers for WinForms and Web are included in the End-User Documentation online help section: