I am working on an ASP.Net website to display a Crystal Report in a CrystalReportViewer on a ASP.Net page.
I am using Visual Studio 2013 and Crystal Reports 2011 for Sage.
I have Crystal Reports for Visual Studio version 13.0.2000.0 installed.
Trying run the Website on a Win 7 Pro in the local IIS.
On the Test1.aspx page, there are 2 DropDownList boxes for the user to filter the data for the report. When the user clicks on Run Report button, it does the following:
1. Connect to the Oracle database.
2. Run a query using a SELECT statement based on what the user selected in the DropDownList boxes.
3. Fill a dataset with the results of the query.
4. Set the CrystalReportViewer to the dataset.
CrystalReportViewer is not even shown on the web page.
I know the dataset is getting data because I can display it in a label.
What do I need to do to get this to work?
Test1.aspx ------
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test1.aspx.vb" Inherits="Test1" %>
<%@ Register assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" namespace="CrystalDecisions.Web" tagprefix="CR" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Plex H Shipment YM SUM Report<br />
<br />
Year:
<asp:DropDownList ID="ddlYear" runat="server">
</asp:DropDownList>
<br />
Month:
<asp:DropDownList ID="ddlMonth" runat="server">
<asp:ListItem Selected="True">ALL</asp:ListItem>
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
<asp:ListItem>8</asp:ListItem>
<asp:ListItem>9</asp:ListItem>
<asp:ListItem>10</asp:ListItem>
<asp:ListItem>11</asp:ListItem>
<asp:ListItem>12</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Run Report" />
<br />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
<br />
<asp:Label ID="Label2" runat="server"></asp:Label>
<br />
<br />
<asp:Label ID="Label3" runat="server"></asp:Label>
<br />
<br />
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" GroupTreeImagesFolderUrl="" Height="962px" ReportSourceID="CrystalReportSource1" ToolbarImagesFolderUrl="" ToolPanelWidth="200px" Width="1344px" EnableDatabaseLogonPrompt="False" EnableParameterPrompt="False" ToolPanelView="None" />
<CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
<Report FileName="PlexHShipmentYMSumReport_2.rpt">
</Report>
</CR:CrystalReportSource>
</div>
</form>
</body>
</html>
------------------------------------------------------------------------------------------------
Test1.aspx.vb -----
Imports CrystalDecisions.CrystalReports.Engine
Partial Class Test1
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim strCurYear As String
Dim intYear As String
'Get current Year.
strCurYear = Format(Now, "yyyy")
If ddlYear.Items.Count = 0 Then
'Add Items to Year Drop Down List.
ddlYear.Items.Add("ALL")
ddlYear.Items.Add(strCurYear)
intYear = Val(strCurYear) - 1
Do While intYear >= 2012
ddlYear.Items.Add(Trim(Str(intYear)))
intYear = intYear - 1
Loop
End If
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim sql As String
Dim strProcedure As String
Dim strYear As String, strMonth As String
Dim strErrorMsg As String
strProcedure = "btnRunReport_Click"
Try
sql = ""
strYear = ddlYear.Text
strMonth = ddlMonth.Text
sql = "SELECT SHIP_YEAR, SHIP_MONTH, SHIP_TO_BUILDING_CODE, TRUCK_CNT, INTERPLANT_SHIPPER_NO_CNT, " & _
"TOTAL_ITEM_CNT, GTOT_NET_WEIGHT, GTOT_GROSS_WEIGHT, ENTRY_DATE, REVISE_DATE " & _
"FROM VIEW_PLEX_H_SHIPMENT_YM_SUM "
If strYear = "ALL" And strMonth <> "ALL" Then
sql = sql & "WHERE SHIP_MONTH = '" & strMonth & "' "
ElseIf strYear <> "ALL" And strMonth = "ALL" Then
sql = sql & "WHERE SHIP_YEAR = '" & strYear & "' "
ElseIf strYear <> "ALL" And strMonth <> "ALL" Then
sql = sql & "WHERE SHIP_YEAR = '" & strYear & "' AND SHIP_MONTH = '" & strMonth & "' "
End If
sql = sql & "ORDER BY SHIP_YEAR ASC, SHIP_MONTH ASC"
Label1.Text = "SQL Statement is:"
Label2.Text = sql
Call CreateReport2(sql)
ExitReport:
Catch ex As Exception
'strErrorMsg = "Date/Time: " & Format(Now, "MM/dd/yyyy HH:mm:ss") & vbCrLf & _
' "Procedure: " & strProcedure & vbCrLf & _
' "Application: " & strAppName & vbCrLf & _
' "Error Message: " & ex.Message & vbCrLf & vbCrLf
'My.Computer.FileSystem.WriteAllText(strCurPath + "\" + strErrorLogFile, strErrorMsg, True)
End Try
End Sub
Protected Sub CreateReport(ByVal strSql As String)
End Sub
Protected Sub CreateReport2(ByVal strSQL As String)
Dim OrConn As Oracle.ManagedDataAccess.Client.OracleConnection
Dim OrCmd As Oracle.ManagedDataAccess.Client.OracleCommand
Dim OrDa As Oracle.ManagedDataAccess.Client.OracleDataAdapter
Dim OrCB As Oracle.ManagedDataAccess.Client.OracleCommandBuilder
Dim Rpt1 As ReportDocument
OrConn = New Oracle.ManagedDataAccess.Client.OracleConnection()
If IsNothing(Rpt1) Then
Rpt1 = New ReportDocument
End If
If OrConn.State <> Data.ConnectionState.Open Then
'Connection string using ODBC
'OrConn.ConnectionString = "DATA SOURCE=GTRANS01;PERSIST SECURITY INFO=True;USER ID=GADMIN;PASSWORD=GADMINPASS;"
'Connection string without using ODBC
OrConn.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=999.8.7.65)(PORT=999)))(CONNECT_DATA=(SERVICE_NAME=Z99)));User Id=user;Password=password;"
OrConn.Open()
End If
OrCmd = New Oracle.ManagedDataAccess.Client.OracleCommand(strSQL, OrConn)
OrCmd.CommandType = Data.CommandType.Text
OrDa = New Oracle.ManagedDataAccess.Client.OracleDataAdapter(OrCmd)
OrCB = New Oracle.ManagedDataAccess.Client.OracleCommandBuilder(OrDa)
Dim dsData As New Dataset1()
dsData.DataSetName = "PlexHShipmentYMSumData"
OrDa.Fill(dsData)
Label3.Text = "Dataset has " & dsData.Tables(0).Rows.Count & " records."
Rpt1.Load(Server.MapPath("PlexHShipmentYWSumReport_2.rpt"))
Rpt1.SetDatabaseLogon("user", "password")
Rpt1.SetDataSource(dsData.Tables(0))
CrystalReportViewer1.ReportSource = Rpt1
End Sub
End Class