SSRS Barcode Solution using Windows Forms Control | WinForms
This SSRS .NET Barcode Windows® Forms Control tutorial provides steps for generating barcodes in Microsoft SQL Server Reporting Services and Visual Studio .NET environments.
Compatibility:
- Visual Studio .NET 2003, 2005, 2008, 2010, and 2012
- SQL Server Reporting Services (SSRS) 2000, 2005, 2008, 2008R2, 2012 and 2014
- Microsoft .NET Framework
Product Update Notice: The SSRS Native Barcode Generator is now available and offers an easier method of generating barcodes without fonts or other components. IDAutomation now recommends using this product instead of the forms control.
SSRS Barcode Tutorial Overview
A Reporting Services Image Control or Text Box Control can be linked to the IDAutomation .NET Barcode Windows Forms Control to create a valid image of a barcode for display in a report.
- This tutorial will show how to include the IDAutomation .NET Windows Forms Control in a project and how to create a report using the control.
- This example will show how to build a report based on the 'Customers' table of the AdventureWorks database.
- The report will include the database fields of Customer_ID, Store_ID, and Account_Number.
- The BackgroundImage property of a text box control in the report will be added and set to represent the barcode.
Once the report is created, the security settings for the deployment environment must be configured to allow custom assemblies to run.
SSRS Barcode Windows Forms Control Tutorial Applications & Components
- Visual Studio .NET 2012
- SQL Server Reporting Services 2012
- IDAutomation .NET Barcode Windows Forms Control
- AdventureWorks Database
.NET Forms Control | Class Name |
IDAutomation.LinearBarCode.dll | IDAutomation.Windows.Forms.LinearBarCode.Barcode |
IDAutomation.Databar.dll | IDAutomation.Windows.Forms.Databar_Barcode.Databar |
IDAutomation.Aztec.dll | IDAutomation.Windows.Forms.AztecBarcode.AztecBarcode |
IDAutomation.DataMatrix.dll | IDAutomation.Windows.Forms.DataMatrixBarcode.DataMatrixBarcode |
IDAutomation.Maxicode.dll | IDAutomation.Windows.Forms.Maxicode.Maxicode |
IDAutomation.PDF417.dll | IDAutomation.Windows.Forms.PDF417Barcode.PDF417Barcode |
IDAutomation.QRCode.dll | IDAutomation.Windows.Forms.QRCodeBarcode.QRCodeBarcode |
Reporting Services SSRS Barcode Tutorial
Set Up & Installation
- Download the purchased or demo
of the
IDAutomation .NET Barcode Windows Forms Control. This example uses the
IDAutomation.LinearBarCode.dll to generate Code 128 barcodes.
- Copy the IDAutomation.LinearBarcode.dll to the following directories:
%ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies
%Program Files%\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\bin
NOTE: For assistance on how to configure this solution for your environment, review Microsoft's Deploying a Custom Assembly article.
- Navigate to
%ProgramFiles%\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies
and open the RSPreviewPolicy configuration file. The RSPreviewPolicy sets Visual Studio to display the barcode during a Preview. If FullTrust is not granted to the code groups in this file, then the error message "That assembly does not allow partially trusted callers" will appear during the preview. Change the PermissionSetName from Execution to FullTrust.
In the RSPreviewPolicy.config file, place this code after the first CodeGroup:
<CodeGroupclass="FirstMatchCodeGroup"version="1" PermissionSetName="FullTrust" Name="IDAutomationLinearBarCode"Description="This code group grants IDAutomation.LinearBarCode.dll Full Trust permission and allow Preview in Visual Studio.">
<IMembershipConditionclass="UrlMembershipCondition" version="1"Url="C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\IDAutomation.LinearBarCode.dll"/> </CodeGroup> - Navigate to
%ProgramFiles%\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer
and open the rssrvpolicy configuration file.
In the rssrvpolicy.config file, place this code after the first CodeGroup:
<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Description="This code group grants IDAutomationLinearBarCode.dll Full Trust permission.">
<IMembershipCondition class="UrlMembershipCondition"version="1" Url="C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\bin\IDAutomation.LinearBarCode.dll" /> </CodeGroup> -
Reboot the server or servers that
are running the Visual Studio and SQL Server Reporting
Services applications.
Tutorial
- Run Visual Studio and open the report.
- To activate the Report menu in the VS .NET IDE, left-click on the body of the
report. Select Report - Report Properties.
- Select References. In the Add or Remove assemblies, select Add and
then select the ellipsis button (
).
- Select the Browse tab, choose the IDAutomation.LinearBarCode.dll, and select
OK.
- To use the IDAutomation Windows Forms Control in a report, two additional
assemblies need to be included in the project. Select Add, choose the .NET tab, and load System.Windows.Forms and System.Drawing.
- In the Add or Remove classes, set the Class Name. For the IDAutomation.LinearBarCode.dll, use
IDAutomation.Windows.Forms.LinearBarCode.Barcode.
- Set an instance name. This tutorial uses
objBarcode.
- The most common use of the control is to use the BMPPicture property to
create an image that can be included in the report. Select the Code tab on the left and insert this code,
which returns a property representing a byte stream of the image:
Public Function GetLinear(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objBarcode.SymbologyID = IDAutomation.Windows.Forms.LinearBarCode.Symbologies.Code128
objBarcode.Resolution = 2
objBarcode.ResolutionCustomDPI = 96
objBarcode.DataToEncode = Code
objBarcode.XDimensionMILS = 11
objBarcode.NarrowToWideRatio = 3
objBarcode.CheckCharacter = false
objBarcode.BarHeightCM = 2.54
objBarcode.ShowText = false
objBarcode.ApplyTilde = true
objBarcode.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function - To add a field to the report, right-click the last column in the table and select Insert Column - Right. Name the field "Barcode."
- To display the image of a barcode representing the Customer ID
value, use the GetLinear () function created in Step 8. This is done by
setting the values in
the BackgroundImage property of the text box in the Barcode column.
Left-click
the Barcode field's text box to access the Properties Window. If it does
not
display, select View - Properties Window. Expand the BackgroundImage
property and set:
- Source - Select Database from the list. This signifies that the value for the barcode will be pulled from a database field.
- MIMEType - Select image/jpeg from the list. This signifies the format of the image.
- BackgroundRepeat - Select Clip or NoRepeat from the list. This ensures that only one image is placed in the text box.
- Value - =code.GetLinear(Fields!CustomerID.Value). Value sets the report to use the function created in the code module of the report properties. The function uses the chosen field from the database table to create the barcode.
- To ensure the barcode is returned, select the Preview tab.
- Before deploying the report to the Web server, the user may have to update
the security settings of the .NET Framework to give the
IDAutomation.LinearBarCode.dll assembly permission to run. Microsoft has
documented these configuration steps in Knowledge Base article
842419.
- To deploy the solution to the Report Server, select Build - Deploy Solution.
For guidance on how to set up deployment, view
Microsoft's
How
to Set Deployment Properties article.
DataBar and 2D Examples
Step 8 explains how to create a function that will render the barcode for the IDAutomation.LinearBarCode.dll. The examples below are recommended for DataBar and 2D barcode symbologies. For a complete list of properties, view the Properties list in the Forms Control user guide.
DataBar:
Public Function GetDatabar(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objDatabar.Resolution = 2
objDatabar.ResolutionCustomDPI = 96
objDatabar.SymbologyID = IDAutomation.Windows.Forms.Databar_Barcode.Databar.Symbologies.Databar
objDatabar.DataToEncode = Code
objDatabar.ApplyTilde = true
objDatabar.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function
Aztec:
Public Function GetAztec(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objAztec.Resolution = 2
objAztec.ResolutionCustomDPI = 96
objAztec.EncodingMode = IDAutomation.Windows.Forms.AztecBarcode.EncodingModes.Auto
objAztec.DataToEncode = Code
objAztec.XDimensionMILS = 24
objAztec.ApplyTilde = true
objAztec.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function
Data Matrix:
Public Function GetDataMatrix(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objDataMatrix.Resolution = 2
objDataMatrix.ResolutionCustomDPI = 96
objDataMatrix.EncodingMode = IDAutomation.Windows.Forms.DataMatrixBarcode.EncodingModes.Auto
objDataMatrix.PreferredFormat = IDAutomation.Windows.Forms.DataMatrixBarcode.PreferredFormats.Auto
objDataMatrix.DataToEncode = Code
objDataMatrix.XDimensionMILS = 24
objDataMatrix.ApplyTilde = true
objDataMatrix.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function
MaxiCode:
Public Function GetMaxicode(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objMaxicode.Resolution = 2
objMaxicode.ResolutionCustomDPI = 203
objMaxicode.EncodingMode = IDAutomation.Windows.Forms.Maxicode.EncodingModes.Mode2
objMaxicode.DataToEncode = Code
objMaxicode.ApplyTilde = true
objMaxicode.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function
PDF417:
Public Function GetPDF417(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objPDF417.Resolution = 2
objPDF417.ResolutionCustomDPI = 96
objPDF417.PDFMode = IDAutomation.Windows.Forms.PDF417Barcode.PDF417Modes.Binary
objPDF417.DataToEncode = Code
objPDF417.XDimensionMILS = 24
objPDF417.ApplyTilde = true
objPDF417.PDFRows = 0
objPDF417.PDFColumns = 0
objPDF417.PDFErrorCorrectionLevel = 0
objPDF417.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function
QRCode:
Public Function GetQRCode(Code As String) as Byte()
dim stream as System.IO.MemoryStream = New System.IO.MemoryStream
dim bitmapBytes as Byte()
objQRCode.Resolution = 2
objQRCode.ResolutionCustomDPI = 96
objQRCode.ErrorCorrection = IDAutomation.Windows.Forms.QRCodeBarcode.ErrorCorrectionLevels.M
objQRCode.Version = IDAutomation.Windows.Forms.QRCodeBarcode.Versions.AUTO
objQRCode.EncodingMode = IDAutomation.Windows.Forms.QRCodeBarcode.EncodingModes.Byte
objQRCode.DataToEncode = Code
objQRCode.ApplyTilde = true
objQRCode.BMPPicture.Save(stream, System.Drawing.Imaging.ImageFormat.jpeg)
bitmapBytes = stream.ToArray
stream.Close()
Return bitmapBytes
End Function
SSRS Barcode Technical Support
Known SSRS Barcode Generation Issues
- Assembly does not allow partially trusted callers
- '#Error' in Deployed Report using IDAutomation.NETAssembly.dll
- 'An error occurred during local report processing. already exists.'
Additional Support Methods
- Search the IDAutomation Public Forum for similar issues that have been resolved.