How to create a PDF file from CrystalReport in .NET 2.0

P

pareptrc

Dear all,

I want to write a pdf file from crystal report in my web application.

Here is my proc:

Private Sub CreatePDFReport(ByVal KeyReference As String)

Dim objReport As New ReportDocument()
Dim diskOpts As New DiskFileDestinationOptions()
Dim mReportParameterName As String = "MyReference"

'load report
objReport.Load("C:\Temp\Temp.rpt")

'log on to SQL server
Dim objConnectionInfo As New ConnectionInfo
objConnectionInfo.Type = ConnectionInfoType.SQL
objConnectionInfo.UserID = Config.CrystalUserID
objConnectionInfo.Password = Config.CrystalPassword
objConnectionInfo.DatabaseName = Config.CrystalDatabaseName
objConnectionInfo.ServerName = Config.CrystalServerName



Dim objTables As Tables = objReport.Database.Tables
For Each objTable As
CrystalDecisions.CrystalReports.Engine.Table In objTables
Dim objTableLogonInfo As TableLogOnInfo =
objTable.LogOnInfo
objTableLogonInfo.ConnectionInfo = objConnectionInfo
objTable.ApplyLogOnInfo(objTableLogonInfo)
Next
TranslateReport(objReport)


Dim exportPath As String = "C:\Temp\"
Dim myDiskFileDestinationOptions As DiskFileDestinationOptions
Dim myExportOptions As New ExportOptions


If Not System.IO.Directory.Exists(exportPath) Then
System.IO.Directory.CreateDirectory(exportPath)
End If

myDiskFileDestinationOptions = New DiskFileDestinationOptions()
myExportOptions.ExportDestinationType =
ExportDestinationType.DiskFile
myExportOptions.FormatOptions = Nothing
myExportOptions.ExportFormatType =
ExportFormatType.PortableDocFormat
myDiskFileDestinationOptions.DiskFileName = exportPath &
"Temp_" & KeyReference & ".pdf"
myExportOptions.DestinationOptions =
myDiskFileDestinationOptions
myExportOptions = objReport.ExportOptions

Dim objParamsValues As New ParameterValues
Dim objParameterDiscreteValue As New ParameterDiscreteValue

objParameterDiscreteValue.Value = KeyReference
objParamsValues.Add(objParameterDiscreteValue)


objReport.ParameterFields.Item(mReportParameterName).CurrentValues =
objParamsValues


Try
objReport.Export()

Catch ex As
CrystalDecisions.CrystalReports.Engine.ParameterFieldCurrentValueException
Dim s As String = ex.Message
Catch ex As Exception
Dim s As String = ex.Message
End Try
End Sub


When I run this code, the program crashes and I get this error:
Error in File C:\DOCUME~1\ComputerName\ASPNET\LOCALS~1\Temp\Temp
{F2716611-89A3-45AD-981F-DB0BD1BDB3A3}.rpt:
Invalid export DLL or export format.
Description: An unhandled exception occurred during the execution of
the current web request. Please review the stack trace for more
information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Error
in File C:\DOCUME~1\ComputerName\ASPNET\LOCALS~1\Temp\Temp
{F2716611-89A3-45AD-981F-DB0BD1BDB3A3}.rpt:
Invalid export DLL or export format.

Stack Trace:


[COMException (0x800002b4):
Error in File C:\DOCUME~1\ComputerName\ASPNET\LOCALS~1\Temp\Temp
{F2716611-89A3-45AD-981F-DB0BD1BDB3A3}.rpt:
Invalid export DLL or export format.]

CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions
pExportOptions, RequestContext pRequestContext) +0

CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext
reqContext) +253

[InvalidArgumentException:
Error in File C:\DOCUME~1\ComputerName\ASPNET\LOCALS~1\Temp\Temp
{F2716611-89A3-45AD-981F-DB0BD1BDB3A3}.rpt:

Does anyone have an idea on how to solve this ?

thanks

Pat
Invalid export DLL or export format.]

CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception
e) +292

CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext
reqContext) +308

CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext
reqContext) +676

CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext
reqContext) +214
CrystalDecisions.CrystalReports.Engine.FormatEngine.Export() +70
CrystalDecisions.CrystalReports.Engine.ReportDocument.Export() +53
BuyThisWorkspace.CreatePDFReport(String InvoiceReference) in
 
P

pareptrc

Ok I found the solution:

'**** Imports you will need:
Imports System.IO
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine


Public Sub CreatePDFReport(ByVal ParameterValue As String)

'**** In your Crystal Report, there is a node Parameter Fields
'**** Under which there are the parameter Names
'**** Parameter Value is the value
'**** In a SQL syntax point of view, it is as if you were building a
WHERE clause:
'**** WHERE ParameterName = ParameterValue

Dim mReportParameterName As String = "ParameterName"
Dim objReport As New ReportDocument()

'**** load report
Dim ReportPath As String =
"C:\inetpub\wwwroot\MyWebApplication\MyReport.rpt"
objReport.Load(ReportPath)

'***** log on to SQL server
Dim objConnectionInfo As New ConnectionInfo
objConnectionInfo.Type = ConnectionInfoType.SQL
objConnectionInfo.UserID = "sa"
objConnectionInfo.Password = "saPassword"
objConnectionInfo.DatabaseName = "MyDatabaseName" '***** i.e.
NorthWind
objConnectionInfo.ServerName = "MySQLServerInstanceName"
'***** i.e. ( local )

Dim objTables As Tables = objReport.Database.Tables
For Each objTable As
CrystalDecisions.CrystalReports.Engine.Table In objTables
Dim objTableLogonInfo As TableLogOnInfo =
objTable.LogOnInfo
objTableLogonInfo.ConnectionInfo = objConnectionInfo
objTable.ApplyLogOnInfo(objTableLogonInfo)
Next

'**** Write PDF file to Disk
Dim exportPath As String = "C:\Temp\"
Dim fileName as String = "MyOwnPDFfile.pdf"
Dim CompleteFileName as String = exportPath & fileName
If Not System.IO.Directory.Exists(exportPath) Then
System.IO.Directory.CreateDirectory(exportPath)
End If

'**** Set Parameter values
objReport.SetParameterValue(mReportParameterName,
ParameterValue)

Try
objReport.ExportToDisk(ExportFormatType.PortableDocFormat,
CompleteFileName)
Catch
Finally
objReport.Close()
End Try
End Sub

Thanks for your help!

Pat
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top