Hi I have created a 2003 .Net app which runs fine locally but when I place it in production I get this error 'Method not found: System.IO.Stream CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(CrystalDecisions.Shared.ExportFormatType)'
Public Sub CreateReport(ByVal sReport As String, ByVal _
arParams
As Array, Optional ByVal _
DoParams
As Boolean = True)
Dim oRpt As New ReportDocument
Dim oSubRpt As New ReportDocument
Dim Counter As Integer
Dim crSections As Sections
Dim crSection As Section
Dim crReportObjects As ReportObjects
Dim crReportObject As ReportObject
Dim crSubreportObject As SubreportObject
Dim crDatabase As Database
Dim crTables As Tables
Dim crTable As Table
Dim crLogOnInfo As TableLogOnInfo
Dim crConnInfo As New ConnectionInfo
Dim crParameterValues As ParameterValues
Dim crParameterDiscreteValue As ParameterDiscreteValue
Dim crParameterRangeValue As ParameterRangeValue
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterFieldDefinition2 As ParameterFieldDefinition
Dim strFile As String
Dim fi As FileInfo
Dim tstr As String
Dim sPath As String
Dim configurationAppSettings As _
System.Configuration.AppSettingsReader = _
New System.Configuration.AppSettingsReader
Dim sReportPath As String = _
configurationAppSettings.GetValue("ReportPath",
GetType(System.String)) & sReport
Dim pos As Integer
'Try
tstr = Microsoft.VisualBasic.Format(Now, "MM/dd/yyyy HH:mm:ss")
'load report
oRpt.Load(sReportPath)
'log on to SQL server
'Report code starts here
'Set the database and the tables objects to the main report 'oRpt'
crDatabase = oRpt.Database
crTables = crDatabase.Tables
'Loop through each table and set the connection info
'Pess the connection info to the logoninfo object then apply the
'logoninfo to the main report
For Each crTable In crTables
With crConnInfo
.ServerName = _
configurationAppSettings.GetValue("ServerName", _
GetType(System.String))
.DatabaseName = _
configurationAppSettings.GetValue("DatabaseName", _
GetType(System.String))
.UserID = _
configurationAppSettings.GetValue("UserID", _
GetType(System.String))
.Password = _
configurationAppSettings.GetValue("Password", _
GetType(System.String))
End With
crLogOnInfo = crTable.LogOnInfo
crLogOnInfo.ConnectionInfo = crConnInfo
crTable.ApplyLogOnInfo(crLogOnInfo)
Next
'Set the sections collection with report sections
crSections = oRpt.ReportDefinition.Sections
'Loop through each section and find all the report objects
'Loop through all the report objects
'to find all subreport objects, then set the
'logoninfo to the subreport
For Each crSection In crSections
crReportObjects = crSection.ReportObjects
For Each crReportObject In crReportObjects
If crReportObject.Kind = ReportObjectKind.SubreportObject Then
'If you find a subreport, typecast
'the reportobject to a subreport object
crSubreportObject =
CType(crReportObject, SubreportObject)
'Open the subreport
oSubRpt = _
crSubreportObject.OpenSubreport(crSubreportObject.SubreportName)
crDatabase = oSubRpt.Database
crTables = crDatabase.Tables
'Loop through each table and set the connection info
'Pess the connection info
'to the logoninfo object then apply the
'logoninfo to the subreport
For Each crTable In crTables
With crConnInfo
.ServerName = _
configurationAppSettings.GetValue("ServerName", _
GetType(System.String))
.UserID = _
configurationAppSettings.GetValue("UserID", _
GetType(System.String))
.Password = _
configurationAppSettings.GetValue("Password", _
GetType(System.String))
End With
crLogOnInfo = crTable.LogOnInfo
crLogOnInfo.ConnectionInfo = crConnInfo
crTable.ApplyLogOnInfo(crLogOnInfo)
Next
End If
Next
Next
' Set the parameters
If DoParams Then
'Get the collection of parameters from the report
crParameterFieldDefinitions = oRpt.DataDefinition.ParameterFields()
For Counter = 0 To UBound(arParams)
crParameterFieldDefinition = crParameterFieldDefinitions.Item(Counter)
'Response.Write(crParameterFieldDefinition.ParameterFieldName & "<br>")
'Get the current values from the parameter field.
crParameterValues = crParameterFieldDefinition.CurrentValues
If Not IsArray(arParams(Counter)) Then
'Test if param passed in matches CR param recieving
Dim test As String
Dim paramcounter As Integer
For paramcounter = 0 To UBound(arParams)
' Response.Write(arParams(paramcounter))
test = arParams(paramcounter)
'Grabs param from CR and compares against param passed in
If test.StartsWith(crParameterFieldDefinition.ParameterFieldName()) Then
arParams(Counter) = test.Substring(test.IndexOf("=") + 1)
'Set the current values for the parameter field 0
crParameterDiscreteValue =
New ParameterDiscreteValue
crParameterDiscreteValue.Value = test.Substring(test.IndexOf("=") + 1)
'Add the first current value for the parameter field
crParameterValues.Add(crParameterDiscreteValue)
'Response.Write(crParameterFieldDefinition.ParameterFieldName() & "- " & crParameterDiscreteValue.Value)
'Response.Flush()
Exit For
End If
Next
Else
crParameterRangeValue =
New ParameterRangeValue
crParameterRangeValue.StartValue = arParams(Counter)(0)
crParameterRangeValue.EndValue = arParams(Counter)(1)
crParameterValues.Add(crParameterRangeValue)
End If
'All current parameter values
'must be applied for the parameter field.
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
Next
End If
Dim s As System.IO.MemoryStream = oRpt.ExportToStream(ExportFormatType.PortableDocFormat)
'Dim s As System.IO.MemoryStream = oRpt.ExportToStream(5)
' the code below will create pdfs
' in memory and stream them to the browser
' instead of creating files on disk.
With HttpContext.Current.Response
.ClearContent()
.ClearHeaders()
.ContentType = "application/pdf"
.AddHeader("Content-Disposition", "inline; filename=Report.pdf")
.BinaryWrite(s.ToArray)
.End()
End With
'Catch ex As System.Exception
'Finally
' Erase arParams
'End Try
End Sub