Getting Started with VB .NET and Crystal Reports


Nov 5, 2013 (4 years and 8 months ago)


Chapter 1

Getting Started with VB .NET and
Crystal Reports

Debbie St. George

Wonder Ranch Publishing DBA/Programmer

Covington Visual Studio.Net User Group


Create a simple Crystal Report in Visual

Display a Crystal Report in a Windows Forms

Display a crystal Report in a Web Forms

Publish a Crystal Report as an XML Report
Web Service

Deploy Crystal Reports to the Web

Crystal Report Advantages

Some of the major advantages of using
Crystal Report for Visual Studio .NET are :


Rapid report development


Can extend it to complicated reports with
interactive charts


Exposes a report object model using which it
can interact with other controls on the web


Can programmatically export the reports into
widely used formats like .pdf, .doc, .xls, .html
and .rtf

Information Delivery
Infrastructure is the Key

Based on


by All Users

the Way
User’s Want
to Use Data

Architecture in Detail…

Crystal Reports Walkthrough

using the Pull Model

Add a New Project to the Solution.

Project… Add Item… Crystal Decisions Window App

Add a Crystal Report:

Go to Project.. Add New Item..Web Project Items..Crystal Report

Keep the CrystalReport1.rpt as the default name for this report.
Click Open and you will get the Crystal Report Gallery Dialog.

Select standard report

Select OLE DB (ADO) Microsoft Jet 4.0 OLE DB Provider

Adding data and fields

Group and Total

Top N and Chart Data

Standard Report Design

Crystal Report

Add Crystal Report Viewer to Form1.vb

click on Form1 and View code.
type Text in yellow areas.

Build and then run the report

Add Project.. new
project… web application

click and set form as startup form.
Project as startup project.

From an existing report

Add previously created CrystalReport1

Add code behind webform

Build..Build Solution

Debug.. Start without debugging

Run from the web

As an Asp.Net Web Service

Add crystalreport1

Testing CrystalReport1Service

click on Crystal Report and

set as Startup

Click on Form1.vb and

Select View Code

Change ReportSource to our
Web Service .asmx

Web Form hosted in Windows

Add CR Deployment Project

Crystal Reports Deployment Steps:

* Create a Web Setup Package

* Defining required runtime components

Web Setup Project

(Note: Setup is the same for a Win Project)

From WebSetup (add Merge Modules)

Report files (.RPT) need to be distributed when a .NET application is deployed.

Merge Modules

CR for VS .NET provides merge modules in setup projects to make deployment

a simple task. The merge modules are installed to the following folder, by


Program Files
Common Files
Merge Modules

There are four merge modules that need to be included in a setup project to

deploy reports.





Deploy Crystal Reports

RegWiz.msm Needs Lic Key

Registering Crystal Report Product



Crystal Decisions Website

ASP.NET Web Matrix

The XML for ASP.NET Developers Website
Video Tutorials

Passing a Stored Procedure to a Report

NOTE: This sample Windows application uses the Windows Forms viewer. The sample has one

form (Form1) that contains the viewer. The report code is run from the form's

(Public Sub New( )).


Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

Public Class Form1

Inherits System.Windows.Forms.Form

'Crystal Reports Variables

Dim oRpt As New CRStoredParam()

Dim crTables As Tables

Dim crTable As Table

Dim crTableLogOnInfo As TableLogOnInfo

Dim crConnectionInfo As New ConnectionInfo()

Dim crParameterValues As ParameterValues

Dim crParameterDiscreteValue As ParameterDiscreteValue

Dim crParameterFieldDefinitions As ParameterFieldDefinitions

Dim crParameterFieldDefinition As ParameterFieldDefinition

#Region " Windows Form Designer generated code “

Public Sub New()


'This call is required by the Windows Form Designer.


'Add any initialization after the InitializeComponent() call

' Set the Connection parameters

' Using an OLEDB connection to a SQL Sever DB (Database: Pubs)

With crConnectionInfo

.DatabaseName = "DBName“

.ServerName = "ServerNameOrODBCName“

.UserID = "UserID“

.Password = "Password“

End With

crTables = oRpt.Database.Tables

'Set the logon information for each table.

For Each crTable In crTables

crTableLogOnInfo = crTable.LogOnInfo

crTableLogOnInfo.ConnectionInfo = crConnectionInfo



Passing a Stored Procedure to a Report (cont)

' Pass the Stored Procedure parameter to the report

'Get the collection of parameters from the report

crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields

'Access the specified parameter from the collection

crParameterFieldDefinition =

'Get the current values from the parameter field. At this point

'there are zero values set.

crParameterValues = crParameterFieldDefinition.CurrentValues

'Set the current values for the numeric parameter field

crParameterDiscreteValue = New ParameterDiscreteValue()

crParameterDiscreteValue.Value = "50"

'Add the current value for the parameter field


'The current parameter values must be applied for the parameter field.


CrystalReportViewer1.ReportSource = oRpt

End Sub

#End Region

End Class

Passing a Stored Procedure to a Report (cont)




1. Create a Dataset during design time.

2. Create the .rpt file (from scratch) and make
it point to the Dataset that we created in the
previous step.

3. Place a CrystalReportViewer control on the
.aspx page and set its properties to point to
the .rpt file that we created in the previous

4. In your code behind page, write the
subroutine to make the connections to the
database and populate the dataset that we
created previously in step one.

5. Call the Databind method from your code
behind page.

Creating a Dataset during Design Time to Define the Fields of the Reports

1. Right click on "Solution Explorer",

select "Add"
> select "Add New Item
> Select "DataSet"

2) Drag and drop the "Stores" table (within the PUBS
database) from the "SQL Server" Item under "Server

3) This should create a definition of the "Stores" table within the Dataset

Note:The .xsd file created this way contains only the field definitions
without any data in it. It is up to the developer to create the connection
to the database, populate the dataset and feed it to the Crystal Report .

Creating the .rpt File :

4) Create the report file using the steps mentioned previously.
The only difference here is that instead of connecting to the
Database thru Crystal Report to get to the Table, we would be
using our DataSet that we just created.

5)After creating the .rpt file, right click on the "Details"
section of the Report file, select "Add/Remove Database"

6) In the "Database Expert" window, expand "Project Data"
(instead of "OLE DB" that was selected in the case of the PULL
Model), expand "ADO.NET DataSet", "DataSet1", and select
the "Stores" table.

7) Include the "Stores" table into the "Selected
Tables" section by clicking on ">" and then Click

8) Follow the remaining steps to create the report layout
as mentioned previously in the PULL Model to complete
the .rpt Report file creation

Creating a CrystalReportViewer Control

9) Follow the steps mentioned previously in the PULL
Model to create a Crystal Report Viewer control and set
its properties.

Code Behind Page Modifications :

10) Call this subroutine in your page load

Sub BindReport()

Dim myConnection As New SqlClient.SqlConnection()

myConnection.ConnectionString= "server=

Dim MyCommand As New SqlClient.SqlCommand()

MyCommand.Connection = myConnection

MyCommand.CommandText = "Select * from Stores"

MyCommand.CommandType = CommandType.Text

Dim MyDA As New SqlClient.SqlDataAdapter()

MyDA.SelectCommand = MyCommand

Dim myDS As New Dataset1()

'This is our DataSet created at Design Time

MyDA.Fill(myDS, "Stores")

'You have to use the same name as that of your Dataset that you created during design time

Dim oRpt As New CrystalReport1()

' This is the Crystal Report file created at Design Time


' Set the SetDataSource property of the Report to the Dataset

CrystalReportViewer1.ReportSource = oRpt

' Set the Crystal Report Viewer's property to the oRpt Report object that we created

End Sub

Session Summary

Thanks for Attending

Wonder Ranch Publishing