none
exportar crystal reports a pdf desde vb.net RRS feed

  • Pregunta

  • Saludos estimados quisiera saber como puedo exportar un reporte de crystal reports a pdf desde mi aplicación en vb.net me guié con el ejemplo del blog de Leandro Tuttini para crear el reporte ahora necesito exportarlo a pdf alguna sugerencia de como hacerlo
    • Cambiado Enrique M. Montejo viernes, 23 de marzo de 2018 7:54 Pregunta relacionada con Crystal Reports.
    martes, 25 de noviembre de 2014 17:17

Respuestas

  • @Ricardo España

    Si hasta ahí te llena el reporte con datos te toca hacer estos pasos.

     Dim param As New ParameterField()
            param.ParameterFieldName = "CLAVE"
            '
            ' creo el valor que se asignara al parametro
            '
            Dim discreteValue As New ParameterDiscreteValue()
            discreteValue.Value = clave
            param.CurrentValues.Add(discreteValue)
            '
            ' Asigno el paramametro a la coleccion
            '
            Dim paramFiels As New ParameterFields()
            paramFiels.Add(param)
            '
            ' Asigno la coleccion de parametros al Crystal Viewer
            '
            CrystalReportViewer1.ParameterFieldInfo = paramFiels
            '
            ' Creo la instancia del reporte
            '
            Dim report As New PruebaFactura()
            CrystalReportViewer1.ReportSource = report
            Utilidades.ExportToPDF(report, miReporte.pdf)

    Public Shared Function ExportToPDF(rpt As ReportDocument, NombreArchivo As String) As String
    	Dim vFileName As String = Nothing
    	Dim diskOpts As New DiskFileDestinationOptions()
    
    	Try
    		rpt.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
    		rpt.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
    
                    'Este es la ruta donde se guardara tu archivo.
    		vFileName = "c:\Reporte\" & NombreArchivo
    		If File.Exists(vFileName) Then
    			File.Delete(vFileName)
    		End If
    		diskOpts.DiskFileName = vFileName
    		rpt.ExportOptions.DestinationOptions = diskOpts
    		rpt.Export()
    	Catch ex As Exception
    		Throw ex
    	End Try
    
    	Return vFileName
    End Function


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila viernes, 28 de noviembre de 2014 18:05 xxxxxxxx
    • Propuesto como respuesta JoséLuisGarcía viernes, 28 de noviembre de 2014 21:52
    • Marcado como respuesta Ricardo España lunes, 1 de diciembre de 2014 17:40
    viernes, 28 de noviembre de 2014 18:04

Todas las respuestas

  • Hola:
    Cuando visualizas el informe de crystal, arriba a la izquierda veras algo como esta imagen

    Haciendo click en donde esta la flecha, veras algo como esta imagen


    Un saludo desde Bilbo
    Carlos

    miércoles, 26 de noviembre de 2014 8:23
  • quiero que esto se haga internamente en mi aplicación.

    porque voy a necesitar ese pdf para otro proceso me podrías ayudar con eso

     
    miércoles, 26 de noviembre de 2014 15:04
  • Se genera el pdf pero sin los datos alguien me puede decir que tengo mal en el codigo

    Public Sub generarPDF(ByVal clave As String)
            Dim param As New ParameterField()
            param.ParameterFieldName = "CLAVE"
            '
            ' creo el valor que se asignara al parametro
            '
            Dim discreteValue As New ParameterDiscreteValue()
            discreteValue.Value = clave
            param.CurrentValues.Add(discreteValue)
            '
            ' Asigno el paramametro a la coleccion
            '
            Dim paramFiels As New ParameterFields()
            paramFiels.Add(param)
            '
            ' Asigno la coleccion de parametros al Crystal Viewer
            '
            CrystalReportViewer1.ParameterFieldInfo = paramFiels
            '
            ' Creo la instancia del reporte
            '
            Dim report As New PruebaRetencion()
            CrystalReportViewer1.ReportSource = report
            report.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, "D:\archivo.pdf")

    End Sub

    miércoles, 26 de noviembre de 2014 21:20
  • @Ricardo España

    Public Shared Function ExportToPDF(rpt As ReportDocument, NombreArchivo As String) As String
    	Dim vFileName As String = Nothing
    	Dim diskOpts As New DiskFileDestinationOptions()
    
    	Try
    		rpt.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
    		rpt.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
    
    
    		vFileName = "c:\Reporte\" & NombreArchivo
    		If File.Exists(vFileName) Then
    			File.Delete(vFileName)
    		End If
    		diskOpts.DiskFileName = vFileName
    		rpt.ExportOptions.DestinationOptions = diskOpts
    		rpt.Export()
    	Catch ex As Exception
    		Throw ex
    	End Try
    
    	Return vFileName
    End Function

    Espero haberte ayudado.

    Saludos.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    • Propuesto como respuesta JoséLuisGarcía viernes, 28 de noviembre de 2014 21:52
    miércoles, 26 de noviembre de 2014 21:57
  • Pedro el problema sigue se me muestra los datos en el re porteador pero cuando reviso el pdf esta solo la plantilla sin nada de datos.

    sabes que podría estar pasando si debo guardar los datos del reporte en alguna variable para que no se pierdan

    jueves, 27 de noviembre de 2014 14:00
  • @Ricardo España

    Tienes que llamarlo así :

    Private Sub btnReporte_Click(sender As Object, e As EventArgs)
    	Dim _reporte As ReportePersonal = Reporte.ObtenerReportePersonal()
    	Dim frm As New frmReportePersonal(_reporte)
    	frm.Show()
    
    	Utilidades.ExportToPDF(_reporte, "rptPersonal.pdf")
    	
    End Sub


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    jueves, 27 de noviembre de 2014 15:24
  • Saludos Pedro Avila.

    voy a replantear la pregunta creo q me exprese mal yo estoy llenando un reporte de crystal reports mediante parámetros y los estoy mostrando en un reporteador para ver si esta correcto .

    el código que uso para hacer eso es este.

     Dim param As New ParameterField()
            param.ParameterFieldName = "CLAVE"
            '
            ' creo el valor que se asignara al parametro
            '
            Dim discreteValue As New ParameterDiscreteValue()
            discreteValue.Value = clave
            param.CurrentValues.Add(discreteValue)
            '
            ' Asigno el paramametro a la coleccion
            '
            Dim paramFiels As New ParameterFields()
            paramFiels.Add(param)
            '
            ' Asigno la coleccion de parametros al Crystal Viewer
            '
            CrystalReportViewer1.ParameterFieldInfo = paramFiels
            '
            ' Creo la instancia del reporte
            '
            Dim report As New PruebaFactura()
            CrystalReportViewer1.ReportSource = report

      lo que necesito es que esos datos mostrados se exporten a pdf mediante un proceso internamente. 

    en esa parte es la que tengo errores probe con tu codigo pedro pero sigo con el mismo problema q me genera el pdf con la plantilla vacia.

    viernes, 28 de noviembre de 2014 17:33
  • @Ricardo España

    Si hasta ahí te llena el reporte con datos te toca hacer estos pasos.

     Dim param As New ParameterField()
            param.ParameterFieldName = "CLAVE"
            '
            ' creo el valor que se asignara al parametro
            '
            Dim discreteValue As New ParameterDiscreteValue()
            discreteValue.Value = clave
            param.CurrentValues.Add(discreteValue)
            '
            ' Asigno el paramametro a la coleccion
            '
            Dim paramFiels As New ParameterFields()
            paramFiels.Add(param)
            '
            ' Asigno la coleccion de parametros al Crystal Viewer
            '
            CrystalReportViewer1.ParameterFieldInfo = paramFiels
            '
            ' Creo la instancia del reporte
            '
            Dim report As New PruebaFactura()
            CrystalReportViewer1.ReportSource = report
            Utilidades.ExportToPDF(report, miReporte.pdf)

    Public Shared Function ExportToPDF(rpt As ReportDocument, NombreArchivo As String) As String
    	Dim vFileName As String = Nothing
    	Dim diskOpts As New DiskFileDestinationOptions()
    
    	Try
    		rpt.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
    		rpt.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
    
                    'Este es la ruta donde se guardara tu archivo.
    		vFileName = "c:\Reporte\" & NombreArchivo
    		If File.Exists(vFileName) Then
    			File.Delete(vFileName)
    		End If
    		diskOpts.DiskFileName = vFileName
    		rpt.ExportOptions.DestinationOptions = diskOpts
    		rpt.Export()
    	Catch ex As Exception
    		Throw ex
    	End Try
    
    	Return vFileName
    End Function


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila viernes, 28 de noviembre de 2014 18:05 xxxxxxxx
    • Propuesto como respuesta JoséLuisGarcía viernes, 28 de noviembre de 2014 21:52
    • Marcado como respuesta Ricardo España lunes, 1 de diciembre de 2014 17:40
    viernes, 28 de noviembre de 2014 18:04
  • Gracias Pedro ahora si se soluciono el problema
    viernes, 28 de noviembre de 2014 20:52
  • @Ricardo España

    No te olvides de marcar las respuesta que te ayudaron a resolver tus dudas así otros usuarios del foro pueden beneficiarse de las respuestas. 


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    viernes, 28 de noviembre de 2014 20:55
  • Pedro sabes porque cuando el formulario que realiza este proceso no es el principal porque ya no se genera el pdf

    así es como lo llamo desde otro formulario

    public sub proceso principal

    'proceso principal es donde se llama al metodo que instancia la clase que genera el PDF
     Call pdf(nombreXML)

    End Sub 

    Private Sub pdf(ByVal clave As String)
            Dim p As New FormularioPDF
            p.generarPDF(clave)
     End Sub

    Public Class FormularioPDF
        Public Sub generarPDF(ByVal clave As String)
            Dim param As New ParameterField()
            param.ParameterFieldName = "CLAVE"
            ' creo el valor que se asignara al parametro
            Dim discreteValue As New ParameterDiscreteValue()
            discreteValue.Value = clave
            param.CurrentValues.Add(discreteValue)
            ' Asigno el paramametro a la coleccion
            Dim paramFiels As New ParameterFields()
            paramFiels.Add(param)
            ' Asigno la coleccion de parametros al Crystal Viewer
            CrystalReportViewer1.ParameterFieldInfo = paramFiels
            If S_Proceso = "FACTURA" Then
                ' Creo la instancia del reporte
                Dim report As New PruebaFactura()
                CrystalReportViewer1.ReportSource = report
                ExportToPDF(report, pdf_ruta_factura & "\" & clave & ".pdf")
            ElseIf S_Proceso = "RETENCIONES" Then
                ' Creo la instancia del reporte
                Dim report As New PruebaRetencion()
                CrystalReportViewer1.ReportSource = report
                ExportToPDF(report, pdf_ruta_retencion & "\" & clave & ".pdf")
            End If
        End Sub
        Public Shared Function ExportToPDF(ByVal rpt As ReportDocument, ByVal NombreArchivo As String) As String
            Dim vFileName As String = Nothing
            Dim diskOpts As New DiskFileDestinationOptions()
            Try
                rpt.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
                rpt.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
                vFileName = NombreArchivo
                If File.Exists(vFileName) Then
                    File.Delete(vFileName)
                End If
                diskOpts.DiskFileName = vFileName
                rpt.ExportOptions.DestinationOptions = diskOpts
                rpt.Export()
            Catch ex As Exception
                Throw ex
            End Try
            Return vFileName
        End Function
    End Class



    lunes, 1 de diciembre de 2014 19:04
  • Alguien me podria ayudar yo no se que hacer con ese error :(
    jueves, 4 de diciembre de 2014 21:02
  • Hola , buen día tengo una pregunta, necesito hacer el mismo proceso, pero en mi caso quiero generar varios pdf , mandandole 6 parámetros.

    jueves, 22 de marzo de 2018 15:39
  • Hola Ronald Paico,

    Te recomendamos realizar tu consulta de manera independiente, de esta forma es mas facil para los colaboradores identificarla y brindarte la ayuda necesaria, quedo al pendiente de tus comentarios.

    SALUDOS CORDIALES
    Gracias por usar los foros de MSDN.

    Tonatiuh Abrego
    _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 22 de marzo de 2018 21:03
  • Muchas gracias.

    A mi si que me ha ayudado.

    Un gran saludo!!!

    jueves, 19 de septiembre de 2019 14:32