SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => ASP .NET => Mensaje iniciado por: fofoam en Martes 10 de Enero de 2006, 20:19
-
Hola, tengo un detalle al exportar un reporte de crystal reports a formato pdf, ya que al momento de abrirlo me sale el siguiente error 'distintivo desconocido:
0‚05"·
tengo el sig codigo:
Dim oStream As System.IO.MemoryStream
oStream = Session("Report").ExportToStream (CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.BinaryWrite(oStream.ToArray())
Response.End()
Espero alguien tenga una solucion?
Salu2.
-
yo exporto de otra manera
Dim strLinkArchivo As String
Dim strExportTempFile As String
Dim rptReporte As Object
strExportTempFile = [ruta y nombre del archivo donde lo vas a dejar .pdf]
strLinkArchivo = [ruta para levantar el reporte]
rptReporte = New [Reporte a exportar]
'***** [si es que el reporte tiene parametros agragas estas lineas sino no]
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As New ParameterValues
Dim crParameterDiscreteValue As New ParameterDiscreteValue
crParameterDiscreteValue.Value = [Valor del Parametro]
crParameterFieldDefinitions = rptReporte.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item("[Nombre del Parametro]")
crParameterValues = crParameterFieldDefinition.CurrentValues
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
'*****
If File.Exists(strExportTempFile) Then File.Delete(strExportTempFile)
Dim objDiskOpt As New DiskFileDestinationOptions
Dim crExportOptions As ExportOptions
crExportOptions = rptReporte.ExportOptions
With crExportOptions
.FormatOptions = New PdfRtfWordFormatOptions
.ExportFormatType = ExportFormatType.PortableDocFormat
.ExportDestinationType = ExportDestinationType.DiskFile
Dim destOption As New DiskFileDestinationOptions
destOption.DiskFileName = strExportTempFile
.DestinationOptions = destOption
End With
rptReporte.Export()
If Not strLinkArchivo Is Nothing Then
Response.Write("<script>window.open('" & strLinkArchivo & "','popUpArchivo');</script>")
End If
ojala te sirva
-
hola Ctapia, he tratado de aplicar la forma que tu utilizas para exportar pero me genera un error en la linea de rptReporte.Export()
que dice que no es posible conectar;
en las var string puse asi, aunque tengo duda? si esta correcto.
strExportTempFile = "C:\Reporte.pdf"
strLinkArchivo = "C:\"
El reporte no lo tienes que visualizar en el CrystalReportViewer?
De antemano gracias, por la solucion...
Salu2 . . .
-
Hola, ya verificaste ke la ruta donde intentas exportar el archivo pdf tenga permisos de escritura?
Yo tuve un error similar al exportar un pdf y mostrarlo, tuve ke agregar al directorio los permisos de escritura del usuario IUSR(cuenta de invitado para Internet), ASP.NET Machine Account(ASPNET), y desde eso me trabaja perfecto, de cualkier modo y por si te sirve de algo te pongo el código ke utilizo:
'''' Esto lo uso para agregar los parámetros al reporte en caso
'''' de ke tangas los cambias a tu conveniencia
Dim paramFields As New CrystalDecisions.Shared.ParameterFields
Dim paramFields2 As New CrystalDecisions.Shared.ParameterFields
Dim discreteVal As New CrystalDecisions.Shared.ParameterDiscreteValue
Dim discreteVal2 As New CrystalDecisions.Shared.ParameterDiscreteValue
Dim paramField As New CrystalDecisions.Shared.ParameterField
Dim paramField2 As New CrystalDecisions.Shared.ParameterField
Dim rangeVal As New CrystalDecisions.Shared.ParameterRangeValue
Dim rangeVal2 As New CrystalDecisions.Shared.ParameterRangeValue
Dim areac As String
Dim areai As String
Dim areaf As String
Dim fechai As String
Dim fechaf As String
Dim crReportDocument As ReportDocument
Dim crExportOptions As ExportOptions
Dim crDiskFileDestinationOptions As DiskFileDestinationOptions
areac = Trim(Session("area"))
fechai = Session("fechai")
fechaf = Session("fechaf")
paramField = New CrystalDecisions.Shared.ParameterField
paramField.ParameterFieldName = "rangofecha"
rangeVal.StartValue = CDate(fechai)
rangeVal.EndValue = CDate(fechaf)
paramField.CurrentValues.Add(rangeVal)
paramField2.ParameterFieldName = "rangoarea"
rangeVal2.StartValue = areai
rangeVal2.EndValue = areaf
paramField2.CurrentValues.Add(rangeVal2)
paramFields.Add(paramField)
paramFields.Add(paramField2)
CrystalReportViewer3.ParameterFieldInfo = paramFields
CrystalReportViewer3.ReportSource = emple
Dim cr_val_r As CrystalDecisions.Shared.ParameterRangeValue
Dim cr_val_r2 As CrystalDecisions.Shared.ParameterRangeValue
Dim cr_Parametros As CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions
Dim cr_nom_par As CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition
Dim cr_val_par As CrystalDecisions.Shared.ParameterValues
cr_Parametros = emple.DataDefinition.ParameterFields
cr_nom_par = cr_Parametros.Item("rangofecha")
cr_val_par = cr_nom_par.CurrentValues
cr_val_r = New CrystalDecisions.Shared.ParameterRangeValue
cr_val_r.StartValue = fechai.ToString
cr_val_r.EndValue = fechaf.ToString
cr_val_par.Add(cr_val_r)
cr_nom_par.ApplyCurrentValues(cr_val_par)
cr_nom_par = cr_Parametros.Item("rangoarea")
cr_val_par = cr_nom_par.CurrentValues
cr_val_r2 = New CrystalDecisions.Shared.ParameterRangeValue
cr_val_r2.StartValue = areai
cr_val_r2.EndValue = areaf
cr_val_par.Add(cr_val_r2)
cr_nom_par.ApplyCurrentValues(cr_val_par)
'*********Aki creas el pdf
Fname = "C:\inetpub\wwwroot\checadas\archivos\" & Session.SessionID.ToString & ".pdf"
If File.Exists(Fname) Then
System.IO.File.Delete(Fname)
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = Fname
crExportOptions = emple.ExportOptions
With crExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
emple.Export()
' Akí te abre el pdf creado en el navegador
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(Fname)
Response.Flush()
Response.Close()
Else
crDiskFileDestinationOptions = New DiskFileDestinationOptions
crDiskFileDestinationOptions.DiskFileName = Fname
crExportOptions = emple.ExportOptions
With crExportOptions
.DestinationOptions = crDiskFileDestinationOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
End With
emple.Export()
' Akí te abre el pdf creado en el navegador
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/pdf"
Response.WriteFile(Fname)
Response.Flush()
Response.Close()
End If
para borrar el archivo lo hago de este modo
Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Unload
System.IO.File.Delete(Fname)
End Sub
espero te ayude, saludos :hola: