none
crear reporte en crystal y pasar a pdf RRS feed

  • Pregunta

  • buenas tardes, les traigo una consulta por si podrian ayudarme.Encontre un forma de hacer el info en vb.net, pero me tira un error y no puede solucionar. Agradeceria un retorno de ustedes.

    les paso el codigo. y les marco la parte que no me renoce.

    SQLconexion = New SqlClient.SqlConnection
            SQLconexion.ConnectionString = "server =CESAR-46D2F7774;database = SGCV_V2; user id ='" & usuario_ & "'; password ='" & contrasena_ & "'"
     '********************************************************************      

      Dim rpt As String = "C:\Rpts\Factura_Pedidos_Cliente.rpt"
            Dim pdf As String = "C:\Temp\Factura_Cliente.pdf"
            'Dim sqlConn As SqlConnection
            Dim sqlDa_Cabecera As SqlDataAdapter
            Dim sqlDa_Detalle As SqlDataAdapter
            Dim dsPc_reImpresion_Factura As New dsFactura_Cabecera_Detalle
            Dim StrCommCabecera, StrCommDetalle As String

            Dim a As Integer = Datos_Impresion_Facturacion

            Try
                StrCommCabecera = "SELECT * FROM VF_FACTURA WHERE COD_FACTURA = " & a & " "
                StrCommDetalle = "SELECT * FROM VF_DETALLE_FACTURA WHERE COD_FACTURA = " & a & ""
                'Crear los DataAdapters
                'sqlConn = New SqlConnection(SQLconexion)
                sqlDa_Cabecera = New SqlDataAdapter(StrCommCabecera, SQLconexion)
                sqlDa_Detalle = New SqlDataAdapter(StrCommDetalle, SQLconexion)

                'Poblar las tablas del dataset desde los dataAdaperts
                sqlDa_Cabecera.Fill(dsPc_reImpresion_Factura, "VF_FACTURA")
                sqlDa_Detalle.Fill(dsPc_reImpresion_Factura, "VF_DETALLE_FACTURA")

                RptToPdf(rpt, dsPc_reImpresion_Factura, pdf)

            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try

    Private Sub RptToPdf(ByVal RutaRpt As String, _
                                             ByVal DataSetReport As DataSet, _
                                             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 pdf

            With rpt
                .Load(RutaRpt)
                .DataSourceConnections(0).SetConnection(SQLconexion) //no me da la opcion para hacer la conexion a la BBDD.
                .SetDataSource(DataSetReport)
                    crDiskFileDestinationOptions.DiskFileName = RutaPdf

                With crExportOptions

                    .ExportDestinationType = ExportDestinationType.DiskFile
                    .ExportFormatType = ExportFormatType.PortableDocFormat
                    .DestinationOptions = crDiskFileDestinationOptions

                End With
            End With

            Try
                rpt.Export()

            Catch ex As Exception

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

            Finally
                rpt.Close()
            End Try

        End Sub
    • Cambiado Enrique M. Montejo lunes, 22 de agosto de 2016 6:19 Pregunta relacionada con Crystal Reports.
    viernes, 17 de mayo de 2013 23:03

Todas las respuestas

  • hola otraves, disculpe las molestias pero encontre unos codigos, mucho mas corto y entendible, para mi, esta vez me crea el archivo pdf, pero cuando voy a la carpeta donde me creo, al intentar abrir me dice el archivo esta abierto o esta siendo utilizado por otro. y no me muestra nada. me podrian ayudar?.

    ** otra consulta como puedo generar nombres diferentes para cada archivo creado??

    ** y como puedo hacer para que al crearlos se abra automaticamante?

    gracias por sus ayudas-

    les paso el codigo:

        Dim sqlDa_Cabecera As SqlDataAdapter
            Dim sqlDa_Detalle As SqlDataAdapter
            Dim dsPc_reImpresion_Factura As New dsFactura_Cabecera_Detalle
            Dim StrCommCabecera, StrCommDetalle As String

            Dim a As Integer = Datos_Impresion_Facturacion

            Try
                StrCommCabecera = "SELECT * FROM VF_FACTURA WHERE COD_FACTURA = " & a & " "
                StrCommDetalle = "SELECT * FROM VF_DETALLE_FACTURA WHERE COD_FACTURA = " & a & ""
                '********************************************************************
                'Crear los DataAdapters
                sqlDa_Cabecera = New SqlDataAdapter(StrCommCabecera, SQLconexion)
                sqlDa_Detalle = New SqlDataAdapter(StrCommDetalle, SQLconexion)

                'Poblar las tablas del dataset desde los dataAdaperts
                sqlDa_Cabecera.Fill(dsPc_reImpresion_Factura, "VF_FACTURA")
                sqlDa_Detalle.Fill(dsPc_reImpresion_Factura, "VF_DETALLE_FACTURA")


                Dim rd As New CrystalDecisions.CrystalReports.Engine.ReportDocument
                rd.Load("d:\GP2\VS 2003 V2\Sistema_Gestio_Compra_Venta_V2\Reportes\crFactura_Pedidos_Cliente.rpt")
                rd.SetDataSource(dsPc_reImpresion_Factura)

                Dim oStrem As New System.IO.MemoryStream
                oStrem = CType(rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat), _
                System.IO.MemoryStream)

                'Si lo deseamos escribimos el pdf a disco.
                Dim ArchivoPDF As New System.IO.FileStream("c:\po.pdf", IO.FileMode.Create)
                ArchivoPDF.Write(oStrem.ToArray, 0, oStrem.ToArray.Length)
                ArchivoPDF.Flush()

            Catch ex As Exception
                MessageBox.Show(ex.ToString)
            End Try

    • Editado chelocho viernes, 17 de mayo de 2013 23:43
    viernes, 17 de mayo de 2013 23:42
  • Hola, esta función te puede servir:

    Public Function ExportToPDF(ByVal rpt As ReportDocument, ByVal NombreArchivo As String) As String
      Dim vFileName As String
      Dim diskOpts As New DiskFileDestinationOptions
     
      Try
        With rpt.ExportOptions
          .ExportDestinationType = ExportDestinationType.DiskFile
         .ExportFormatType = ExportFormatType.PortableDocFormat
     
       End With
     
        vFileName = "c:\" & NombreArchivo
        If File.Exists(vFileName) Then File.Delete(vFileName)
        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ú

    sábado, 18 de mayo de 2013 0:26