none
Report viewer Demasiado lento RRS feed

  • Pregunta

  • Hola, tengo un informe con parametros y cargo algunas imagenes(3).-

    El tema es que en la línea de seteo:   reportViewer.SetDisplayMode(DisplayMode.PrintLayout)

    Ahi, tarda 3 minutos para abrir el reporte .-

    Me parece exesivo, ya que no son muchos los parametros .-

    Todo de forma local .-

    No puedo encontrar la solución, muchas gracias x la ayuda .-

    Saludos.-

    • Cambiado Enrique M. Montejo jueves, 18 de agosto de 2016 9:29 Pregunta relacionada con el control de informes de Windows Forms.
    jueves, 28 de febrero de 2013 15:46

Todas las respuestas

  • Hola te dejo mi solucion, ami me funciono 100%. Tal ves puedes adaptarla a tu necesidad.

            'Resulta que al utilizar un generador de reportes, cuando la base de datos crese, al generador le cuesta preparar los datos y eso se ve reflejado en un consumo de tiempo muy considerable.
            'Debido a que el generador de reportes esta vinculado a un DataSet, el cual es llenado con los datos de toda la base de datos, la solucion que se me ocurrio, fue generer un DataAdapter para
            'cada tabla involucrada en la generacion del informe, los cuales se generan filtrando solo los datos que se necesitan para el informe. De esta manera, el generador de reportes no se ve afetado
            'por el tamaño de la base de datos.
            Try
                'Se Genera una coneccion con la base de datos y se crean los OleDbDataAdapter necesarios para seleccinar los datos deseados para el informe y asi redimensionar
                'los origenes de datos que utilizara el generador de reportes.
                'Cadenas de coneccion y consulas.
                Dim CadenaConeccion As New String("Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0; Data Source=" & My.Computer.FileSystem.CurrentDirectory & "\BDHornos.sdf")
                Dim CadenaConsulta As String
                'Se establece la coneccion.
                Dim ConeccionBDH As New OleDb.OleDbConnection(CadenaConeccion)
                'Se crean los DataAdapter.
                Dim DataAdapter_DatosEmpresaGeneradoraTratamientos, DataAdapter_DatosTratamientos, DataAdapter_RegistrosTratamientos As New OleDb.OleDbDataAdapter
                'Se realizan las consultas a las tablas para llenar los DataAdapter.
                CadenaConsulta = New String("SELECT * FROM DatosEmpresaGeneradoraTratamientos")
                DataAdapter_DatosEmpresaGeneradoraTratamientos.SelectCommand = New OleDb.OleDbCommand(CadenaConsulta, ConeccionBDH)
    
                CadenaConsulta = New String("SELECT * FROM DatosTratamientos WHERE NumeroTratamiento = '" + CStr(N_R) + "'
                                                                             AND FechaHoraTratamiento = '" + CDate(FechaHoraTratamiento).ToString("MM-dd-yyyy HH:mm:ss") + "'")
                DataAdapter_DatosTratamientos.SelectCommand = New OleDb.OleDbCommand(CadenaConsulta, ConeccionBDH)
    
                CadenaConsulta = New String("SELECT * FROM RegistrosTratamientos WHERE NumeroTratamiento = '" + CStr(N_R) + "' 
                                                                                 AND FechaHoraTratamiento
                                                                                 BETWEEN '" + CDate(FechaHoraTratamiento).ToString("MM-dd-yyyy HH:mm:ss") + "' 
                                                                                 AND '" + CDate(FechaHoraTratamientoHasta).ToString("MM-dd-yyyy HH:mm:ss") + "'")
                DataAdapter_RegistrosTratamientos.SelectCommand = New OleDb.OleDbCommand(CadenaConsulta, ConeccionBDH)
                'Se actualizan los origenes de datos vinculados al generador de reportes, con los origenes de datos seleccionados recien creados.
                DataAdapter_DatosTratamientos.Fill(Me.BDHornosDataSet.DatosTratamientos)
                DataAdapter_RegistrosTratamientos.Fill(Me.BDHornosDataSet.RegistrosTratamientos)
                DataAdapter_DatosEmpresaGeneradoraTratamientos.Fill(Me.BDHornosDataSet.DatosEmpresaGeneradoraTratamientos)
            Catch ex As Exception
                MsgBox("Error al acceder a la base de datos para generar el Informe." + Chr(13) + "Consulte al proveedor del sistema.", vbCritical)
            End Try
    Saludos desde Argentina.


    miércoles, 17 de agosto de 2016 18:40