none
ReportViewer desde un dataset manual RRS feed

  • Pregunta

  • Buenas tardes, por favor guienme y ayudenme. tengo el siguiente codigo:

    '######################################################################################
                '##################### Establecer la Conexion con la BD ###############################
                '######################################################################################
                Dim conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("StrConexion").ConnectionString)
                conn.Open()
                '#######################################################################################
                '################### Buscar Datos Aumento/Dismunucion ##################################
                '#######################################################################################

                Fecha = FechaI2.ToShortDateString

                ComandoAumentoDeposito = New System.Data.SqlClient.SqlCommand("spAumentoDeposito", conn)
                ComandoAumentoDeposito.CommandType = CommandType.StoredProcedure
                ParametroAumentoDeposito = ComandoAumentoDeposito.Parameters.Add("@FechaI", SqlDbType.DateTime)
                ParametroAumentoDeposito.Value = FechaI2 'dtpFechaI.Text '+ " " + dtpTiempoI.Text
                ParametroAumentoDeposito = ComandoAumentoDeposito.Parameters.Add("@FechaF", SqlDbType.DateTime)
                ParametroAumentoDeposito.Value = FechaF2 'dtpFechaF.Text '+ " " + dtpTiempoF.Text
                LectorDatosAumentoDeposito = ComandoAumentoDeposito.ExecuteReader

    Ese lo uso para buscar datos en la BD, posteriormente agrego esos datos a un arreglo y los paso a un dataset:

      For z = 0 To UBound(AumDisDep)
                        If Not IsNothing(AumDisDep(z).IdPer) Then
                            FilaAumentoDeposito = DatasetAumentoDeposito.tblAumentoDep.NewRow()
                            FilaAumentoDeposito(0) = (AumDisDep(z).Nombre)
                            FilaAumentoDeposito(1) = AumDisDep(z).Apellido
                            FilaAumentoDeposito(2) = AumDisDep(z).IdPer
                            FilaAumentoDeposito(3) = Format((AumDisDep(z).MontoAum), "###.###.###,00")
                            FilaAumentoDeposito(4) = Trim(Fecha)
                            FilaAumentoDeposito(5) = Trim(Fecha)
                            FilaAumentoDeposito(6) = Format((AumDisDep(z).MontoDis), "###.###.###,00")
                            FilaAumentoDeposito(7) = "-"
                            FilaAumentoDeposito(8) = Format(AumDisDep(z).MontoAum - AumDisDep(z).MontoDis, "###,###,###.00")
                            DatasetAumentoDeposito.tblAumentoDep.Rows.Add(FilaAumentoDeposito)
                        End If

                    Next
                    ComandoAumentoDeposito = Nothing
                    LectorDatosAumentoDeposito.Close()

    Luego intento asignar mis datos a un reportViewer asi:

     Dim rds As ReportDataSource = New ReportDataSource
                    rds.Name = "DatosAumentoDeposito"
                    rds.Value = DatasetAumentoDeposito.tblAumentoDep.Clone()
                    RVAumentoDeposito.LocalReport.ReportPath = "C:\Users\roxseni.ALHAMBRA\Documents\Visual Studio 2012\Projects\Reportes\Reportes\ReporteAumentoDeposito.rdlc"
                    RVAumentoDeposito.LocalReport.DataSources.Add(rds)
                    RVAumentoDeposito.LocalReport.Refresh()

    Pero me dice que no he instanciado el dataset, me podria indicar la manera correcta de yo asignar toda la data que busco y guardo directamente? Por favor he tratado varias cosas y nada me funciona, si se me cargan los datos porque ya lo corri paso a paso pero se me cae es en la asignacion de la data al reporte.

    Asi creo al principio mi dataset y lo instancio con el datatable:

        '########## Instancio al DataSet #############
        Dim DatasetAumentoDeposito As New Datos
        '##### Defino Variable para la(s) filas ######
        Dim FilaAumentoDeposito As DataRow

    datos es el .xsd

    Trabajo con visual 2012 y sql server 2008

    martes, 23 de octubre de 2012 16:44

Respuestas

  • Hola, mira lo que yo hago:

    ReportViewer1.ProcessingMode = ProcessingMode.Local ReportViewer1.LocalReport.ReportPath = "\turuta_donde_este el reporte" ReportViewer1.LocalReport.DataSources.Clear() 'borro los ds Dim ds As New DataSet()
    Dim da As SqlDataAdapter

    sSel = "select * from pepito" sCnn = "Data Source = .; Initial Catalog = tubd; Integrated Security = True" da = (New SqlDataAdapter(sSel, sCnn)) da.Fill(ds) Dim data1 As New ReportDataSource("DataSet1",ds.Tables(0)) ' creas el data source y le asignas al consulta ReportViewer1.LocalReport.DataSources.Add(data1)'luego lo agregas ReportViewer1.RefreshReport() 'refrescas

    De esta forma me funciona.

    Debes tener en cuenta que cuando creas el nuevo DataSource 

    Dim data1 As New ReportDataSource("DataSet1",ds.Tables(0))

    el primer parámetro se debe llamar igual a los datasource que hallas creado en el reporte.


    Cristian Carvajal Bahamon.


    miércoles, 24 de octubre de 2012 14:00
  • Debes crear en ReportBuilder tu reporte tal y como lo quieres ver en la aplicacion, en ese reporte agregas tus Dataset's.

    Luego con el cogido que te mostré arriba asigna el select que pusiste en el dataset y el resultado de esa consulta se los pasas al DS. Asi con cada Dataset que hallas creado en el reporte, si creaste dos por codigo tambien debes crear dos.

    No se si me explique bien pero aqui te dejo un enlace con este tema.

    Code Project

    MSDN


    Cristian Carvajal Bahamon.

    jueves, 25 de octubre de 2012 15:11

Todas las respuestas

  • Hola, mira lo que yo hago:

    ReportViewer1.ProcessingMode = ProcessingMode.Local ReportViewer1.LocalReport.ReportPath = "\turuta_donde_este el reporte" ReportViewer1.LocalReport.DataSources.Clear() 'borro los ds Dim ds As New DataSet()
    Dim da As SqlDataAdapter

    sSel = "select * from pepito" sCnn = "Data Source = .; Initial Catalog = tubd; Integrated Security = True" da = (New SqlDataAdapter(sSel, sCnn)) da.Fill(ds) Dim data1 As New ReportDataSource("DataSet1",ds.Tables(0)) ' creas el data source y le asignas al consulta ReportViewer1.LocalReport.DataSources.Add(data1)'luego lo agregas ReportViewer1.RefreshReport() 'refrescas

    De esta forma me funciona.

    Debes tener en cuenta que cuando creas el nuevo DataSource 

    Dim data1 As New ReportDataSource("DataSet1",ds.Tables(0))

    el primer parámetro se debe llamar igual a los datasource que hallas creado en el reporte.


    Cristian Carvajal Bahamon.


    miércoles, 24 de octubre de 2012 14:00
  • Hola, mira lo que yo hago:

    ReportViewer1.ProcessingMode = ProcessingMode.Local ReportViewer1.LocalReport.ReportPath = "\turuta_donde_este el reporte" ReportViewer1.LocalReport.DataSources.Clear() 'borro los ds Dim ds As New DataSet()
    Dim da As SqlDataAdapter

    sSel = "select * from pepito" sCnn = "Data Source = .; Initial Catalog = tubd; Integrated Security = True" da = (New SqlDataAdapter(sSel, sCnn)) da.Fill(ds) Dim data1 As New ReportDataSource("DataSet1",ds.Tables(0)) ' creas el data source y le asignas al consulta ReportViewer1.LocalReport.DataSources.Add(data1)'luego lo agregas ReportViewer1.RefreshReport() 'refrescas

    De esta forma me funciona.

    Debes tener en cuenta que cuando creas el nuevo DataSource 

    Dim data1 As New ReportDataSource("DataSet1",ds.Tables(0))

    el primer parámetro se debe llamar igual a los datasource que hallas creado en el reporte.


    Cristian Carvajal Bahamon.


    hola cristian gracias por responder, pero me indicas que coloque d.tables(0) alli me estaria trayendo una sola fila y el dataset esta cargando varias filas. ¿ como puedo cargar todo el contenido?

    Tambien me indicas, que el primer dato es igual a los datasource que tenga creados, pero donde creo datasource en el reporte?

    Yo lo que hice fue crear mi .rdlc y alli agregue que el origen de datos era Datos (.xds) y que el conjunto de datos, es la tabla tblaumentodep (donde cargo mis datos desde el arreglo).

    Me podrias orientar mejor? de verdad no se que hacer y no entiendo lo que me estas indicando.

    Gracias

    miércoles, 24 de octubre de 2012 19:46
  • Debes crear en ReportBuilder tu reporte tal y como lo quieres ver en la aplicacion, en ese reporte agregas tus Dataset's.

    Luego con el cogido que te mostré arriba asigna el select que pusiste en el dataset y el resultado de esa consulta se los pasas al DS. Asi con cada Dataset que hallas creado en el reporte, si creaste dos por codigo tambien debes crear dos.

    No se si me explique bien pero aqui te dejo un enlace con este tema.

    Code Project

    MSDN


    Cristian Carvajal Bahamon.

    jueves, 25 de octubre de 2012 15:11