Visual Basic .NET: crear un pdf desde Crystal Reports

Hoy vamos a ver que fácil es crear un archivo pdf desde un informe de cystal reports .net. Para ello utilizaremos una función a la que enviaremos la ruta y el nombre del informe de crystal reports, el datatable usado como origen de datos en el informe, y la ruta y nombre del archivo pdf a crear. En el código de ejemplo mostrado debajo hacemos uso de un botón para inicializar las variables con las rutas del informe y del archivo pdf. También poblaremos el datatable que se utiliza como origen de datos del report.

Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

Imports System.Data.SqlClient

Public Class Form1

  Private Sub btnCrearPdf_Click(ByVal sender As System.Object, ByVal e As  System.EventArgs) Handles btnEnviar.Click

    Dim rpt as string = "C:\Rpts\Clientes.rpt"

    Dim pdf as string = "C:\Temp\ClientesIbericos.pdf"

    Dim dtClientes as datatable = new Datatable

    Dim daClientes as SqlDataAdapter = New SqlDataAdapter("SELECT * FROM Clientes ORDER BY Nombre", _
                                                          "Data Source=SQLSERVER\sqlexpress;Initial Catalog=dbTest" & _
                                                          ";User Id=sa;Password=contraseña_sa")

    daClientesFillSchema(dtClientes, SchemaType.Source)

    daClientes.fill(dtClientes)

    RptToPdf(rpt, dtClientes, pdf)

  End Sub

  Private Sub RptToPdf(ByVal RutaRpt As String, _
                       ByVal DataTableReport As DataTable, _
                       ByVal RutaPdf As String)

    Dim crExportOptions As CrystalDecisions.Shared.ExportOptions = _
        New CrystalDecisions.Shared.ExportOptions

    Dim crDiskFileDestinationOptions As CrystalDecisions.Shared.DiskFileDestinationOptions = _
        New CrystalDecisions.Shared.DiskFileDestinationOptions

    Dim rpt As CrystalDecisions.CrystalReports.Engine.ReportDocument = _
        New CrystalDecisions.CrystalReports.Engine.ReportDocument

    'Abrir informe, establecer la conexión, filtrar registros, y generar el pdf

    With rpt

      .Load(RutaRpt)

      .DataSourceConnections(0).SetConnection("SQLServer\sqlexpress", "dbTest", "sa", "contraseña_sa")

      .SetDataSource(DataTableReport)

      .DataDefinition.RecordSelectionFormula = "{Clientes.PaisId} = '034'"

      crDiskFileDestinationOptions.DiskFileName = RutaPdf

      With crExportOptions

        .ExportDestinationType = ExportDestinationType.DiskFile

        .ExportFormatType = ExportFormatType.PortableDocFormat

        .DestinationOptions = crDiskFileDestinationOptions

      End With

    End With

    Try

      rpt.Export(crExportOptions)

    Catch ex As Exception

      MessageBox.Show(ex.Message, "Error al crear pdf", MessageBoxButtons.OK)

    Finally

      rpt.Close()

    End Try

  End Sub

End Class

Uso de cookies

Este sitio utiliza cookies de terceros y propias para que tengas una mejor experiencia de navegación, puedas compartir contenido en redes sociales y para que podamos obtener estadísticas de los usuarios. Es importante que leas la presente política de cookies y comprendas que, si continúas navegando, consideraremos que aceptas su uso. política de cookies. Puede obtener más información sobre las cookies aquí. ACEPTAR

Aviso de cookies