none
Mostrar reporte en control CrystalReportViewer de SAP Crystal Report en VB.NET 2010 (Reporte hecho en Crystal Report) RRS feed

  • Pregunta

  • Hola buenas tardes, esta es la situación, tengo una serie de reportes creados y funcionando en SAP Crystal Report , pero NO en la versión que esta en Visual Studio, donde los reportes son parte del proyecto, me explico, estos reportes fueron creado en el entorno de Crystal Report, pero estoy creando una aplicacion en VB.NET donde en una tabla tengo la ruta física de cada reporte para luego intentar mostrarlo en el control de SAP Crystal Report para Visual Studio "CrystalReportViewer", donde al usuario entrar a la ventana de mi programita vea un listado de reportes (utilice para esto un listview) y el usaurio al hacer click en el item del listview me valla a la ruta y refleje el reporte que ya esta listo funcionando en el control "CrystalReportViewer " les anexo la ventana de la aplicacion para que me puedan entender mejor lo que estoy intentado hacer. Espero me puedan orientar.

    • Cambiado Enrique M. Montejo sábado, 28 de mayo de 2016 6:01 Pregunta relacionada con Crystal Reports.
    jueves, 26 de mayo de 2016 21:24

Todas las respuestas

  • Hola:
    Te comento como lo "VEO" yo.
    Generas lod fichero RPT.
    Guardas en una tabla que contenga un campo de tipo VarBinary (Max) si es SQL o BLOB si es Acces el fichero RPT
    En tu fichero EXE, cuando seleccionas un tipo de listado, se llama a un Form que en este ejemplo se llama FrmCrystal que contiene 1 ReportDocument (rdInforme) y 1 CrystalReportViewer (crvInforme):
        Private Sub FrmCrystal_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.Cursor = Cursors.WaitCursor
            Try
                Dim loDataTable As New DataTable
                Using loConexion As New SqlConnection(TU_CADENA:CONEXION)
                    ' Hay que recuperar el fichero crystal de la base de datos y lo pasamos a un fichero
                    Dim aBytCrystal() As Byte = Nothing
                    Dim oFileStream As FileStream
                    Dim lsQuery As String = "Select TU_CAMPO_VARBINARY From TU_TABLAKEOPS Where ......"
                    loConexion.Open()
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        Using drCrystal As SqlDataReader = loComando.ExecuteReader(CommandBehavior.SingleRow)
                            If drCrystal.Read() Then
                                aBytCrystal = CType(drCrystal("TU_CAMPO_VARBINARY"), Byte())
                            End If
                        End Using
                    End Using
                    Dim lsFicheroRPT = "C:\TU_CARPETA\TEMPORAL.RPT"
                    If IO.File.Exists(lsFicheroRPT) Then
                        IO.File.Delete(lsFicheroRPT)
                    End If
                    oFileStream = New FileStream(lsFicheroRPT, FileMode.CreateNew, FileAccess.Write)
                    oFileStream.Write(aBytCrystal, 0, aBytCrystal.Length)
                    oFileStream.Close()
                    Me.rdInforme.Load(lsFicheroRPT)
                    'Cargar el conjunto de datos para llenar el fichero de Crystal
                    Me.rdInforme.SetDataSource(TU_DATATABLE)
                    '
                    Me.crvInforme.ReportSource = Me.rdInforme
                End Using
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "FrmCrystal_Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try  
            Me.WindowState = FormWindowState.Maximized
            Me.Cursor = Cursors.Default
        End Sub

    P.D.
    espero que se entienda

    Un saludo desde Bilbo
    Carlos
    domingo, 29 de mayo de 2016 10:46