chapter 1 getting started with vb.net and crystal reports debbie st. george wonder ranch publishing...
TRANSCRIPT
Chapter 1
Getting Started with VB .NET and Crystal Reports
Debbie St. GeorgeWonder Ranch Publishing DBA/Programmer
Covington Visual Studio.Net User Group
Slide 2
Objectives• Create a simple Crystal Report in Visual
Studio.NET• Display a Crystal Report in a Windows
Forms Application• Display a crystal Report in a Web Forms
Application• Publish a Crystal Report as an XML
Report Web Service• Deploy Crystal Reports to the Web
Slide 3
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 form
- Can programmatically export the reports into widely used formats like .pdf, .doc, .xls, .html and .rtf
Slide 5
Based on Standards
Supports Existing Data Sources
Accessible by All Users
Delivered the Way User’s Want to Use Data
Architecture in Detail…
Slide 6
Crystal Reports Walkthrough - using the Pull Model Add a New Project to the Solution.Project… Add Item… Crystal Decisions Window App
Slide 7
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.
Slide 31
Add CR Deployment Project
Crystal Reports Deployment Steps:
* Create a Web Setup Package
* Defining required runtime components
Crystal Reports Deployment Steps:
* Create a Web Setup Package
* Defining required runtime components
Slide 34
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
default:
C:\Program Files\Common Files\Merge Modules\
There are four merge modules that need to be included in a setup project to
deploy reports.
•Managed.MSM
•Database_Access.MSM
•Database_Access_enu.MSM
•REGWIZ.MSM
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
default:
C:\Program Files\Common Files\Merge Modules\
There are four merge modules that need to be included in a setup project to
deploy reports.
•Managed.MSM
•Database_Access.MSM
•Database_Access_enu.MSM
•REGWIZ.MSM
Deploy Crystal Reports
Slide 37
Resources
Crystal Decisions Websitehttp://www.crystaldecisions.com/products/dev_zone/default.asp
Free ASP.NET Web Matrix http://www.asp.net/webmatrix/default.aspx?tabindex=4&tabid=46
The XML for ASP.NET Developers Website Video Tutorialshttp://www.xmlforasp.net/
http://www.aspfree.com/authors/jitajay/crystalreport.aspx
Slide 38
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 constructor (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
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 constructor (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
Slide 39
#Region " Windows Form Designer generated code “ Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent()
'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 crTable.ApplyLogOnInfo(crTableLogOnInfo) Next
#Region " Windows Form Designer generated code “ Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent()
'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 crTable.ApplyLogOnInfo(crTableLogOnInfo) Next
Passing a Stored Procedure to a Report (cont)
Slide 40
' 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 = rParameterFieldDefinitions.Item("@percentage")
'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 crParameterValues.Add(crParameterDiscreteValue)
'The current parameter values must be applied for the parameter field. crParameterFieldDefinition.ApplyCurrentValues(crParameterValues) CrystalReportViewer1.ReportSource = oRpt End Sub
#End Region
End Class
' 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 = rParameterFieldDefinitions.Item("@percentage")
'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 crParameterValues.Add(crParameterDiscreteValue)
'The current parameter values must be applied for the parameter field. crParameterFieldDefinition.ApplyCurrentValues(crParameterValues) CrystalReportViewer1.ReportSource = oRpt End Sub
#End Region
End Class
Passing a Stored Procedure to a Report (cont)
Slide 41
CRYSTAL REPORTS WALKTHROUGH –
USING THE PUSH MODEL (Objectives)
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 step.
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.
Slide 42
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"
Slide 43
2) Drag and drop the "Stores" table (within the PUBS database) from the "SQL Server" Item under "Server Explorer".
Slide 44
3) This should create a definition of the "Stores" table within the DatasetNote: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 .
Slide 45
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.
Slide 46
7) Include the "Stores" table into the "Selected Tables" section by clicking on ">" and then Click "ok"
Slide 47
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 Control9) Follow the steps mentioned previously in the PULL
Model to create a Crystal Report Viewer control and set its properties.
Slide 48
48Code Behind Page Modifications : 10) Call this subroutine in your page load - Sub BindReport() Dim myConnection As New SqlClient.SqlConnection() myConnection.ConnectionString= "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes" 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 oRpt.SetDataSource(myDS) ' 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