none
Vincular ReportViewer con datos desde código.

    Pertanyaan

  • Saludos.  Ya que tuve infinidad de problemas con CrystalReport, necesito implementar un reporte en dónde los datos provengan desde código, cero wizard (lo ideal).

    Tengo el siguiente método, ¿Cómo pidría pasarle los datos generados a mi Reportviewer en el html de mi página aspx?

    public void generaInformeRV() { //[Nueva instancia Reporte] ReportDocument reportDoc = new ReportDocument(); //[Definiendo localización] //string reportName = string.Format("/PG_Departamentos/dpto_bodega/reporte/bodegaIngreso.rpt"); string reportName = string.Format("bodegaIngreso.rpt"); string pathReport = Server.MapPath(reportName); //[Instancia y objetos capa Negocio] cls_Bodega_Negocio_Lister objNeg = new cls_Bodega_Negocio_Lister() { fDesde = Convert.ToString(Session["fechaDesde"]), fHasta = Convert.ToString(Session["fechaHasta"]), idBodega = 1, idInsum = Convert.ToInt32(Session["idInsumo"]), idProv = Convert.ToInt32(Session["idProveedor"]), preDesde = Convert.ToDouble(Session["precioDesde"]), preHasta = Convert.ToDouble(Session["precioHasta"]) }; //[Nueva instancia DataTable Object] DataTable dt = new DataTable(); dt = objNeg.pk_generaInforme(); //[Nueva instancia DataSet - Añadiendo Datatable a DataSet] DataSet ds = new DataSet(); ds.Tables.Add(dt); ds.Tables[0].TableName = "pk_SicOrdenCompra_Informa3"; //[Nueva instancia DataSet Tipado] dsIngresoBodega dsTipado = new dsIngresoBodega(); dsTipado.Merge(ds, false, System.Data.MissingSchemaAction.Ignore); if (dt.Rows.Count == 0) { //Validar que traiga datos. } //[Anexando Dataset generado a REPORTVIEWER]

    //¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿ }

    - Tengo un dataset tipado (dsIngresoBodega.xds) enlazado a un procedimiento almacenado.

    - Instancia un objeto de ese dataset, extraigo los datos (sí, los datos retoirnan correctamente) pero no logro poder enlazarlo al reportviewer.

    PD: Soy novato en el tema de los reportes, agradecería algo de paciencia jeje.

    Gracias de antemano.

    29 Maret 2012 17:57

Semua Balasan

  • habias revisdado estos articulos

    Informes Crystal Reports

    Creación de Reportes con Crystal Reports en Visual Studio 2005/2008

    porque alli se plantea muy bien el tema de asignar el dataset al reporte

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    29 Maret 2012 18:25
  • Prefiero hacer ésta vez un reporte con la herramienta que ofrece VS.  Leandro, seguí éste ejemplo para implementar el método que -dicho sea de paso- se ajusta en parte a lo que necesito. 

    Tengo definido mi REPORTVIEWER (rpv_reporteIngreso) en el html de mi página, y desde el codebehind de la misma tengo éste método.

    Este método lo cargo en el pageload de la página.

    public void generaInformeRV()
    		{
    			ReportDocument reportDoc					= new ReportDocument();
    			rpv_reporteIngreso.LocalReport.ReportPath	= string.Format("/PG_Departamentos/dpto_bodega/reporte/rp_IngresoBodega.rdlc");
    
    			var objNeg					= new cls_Bodega_Negocio_Lister()
    			{
    				fDesde					= Convert.ToString(Session["fechaDesde"]),
    				fHasta					= Convert.ToString(Session["fechaHasta"]),
    				idBodega				= 1,
    				idInsum					= Convert.ToInt32(Session["idInsumo"]),
    				idProv					= Convert.ToInt32(Session["idProveedor"]),
    				preDesde				= Convert.ToDouble(Session["precioDesde"]),
    				preHasta				= Convert.ToDouble(Session["precioHasta"])
    			};
    
    			//[At this point, i populate the datatable DT with datas from my BD.]
    			var dt						= new DataTable();
    			dt							= objNeg.pk_generaInforme();
    
    			//[New Dataset instantiated / I add my datatable generated previously in this DataSet]
    			DataSet ds					= new DataSet();
    			ds.Tables.Add(dt);
    			ds.Tables[0].TableName		= "pk_SicOrdenCompra_Informa3";
    
    			ReportDataSource rds		= new ReportDataSource {Name = "dsIngresoBodega", Value = ds.Tables[0]};
    			rpv_reporteIngreso.LocalReport.DataSources.Add(rds);
    			rpv_reporteIngreso.LocalReport.Refresh();
    
    		}


    protected void Page_Load(object sender, EventArgs e)
    		{
    			if(!IsPostBack)
    			{
    				generaInformeRV();
    			}
    		}

    Me aparece REFERENCIA A OBJETO NO ESTABLECIDA COMO INSTANCIA DE UN OBJETO en éste línea:

    rpv_reporteIngreso.LocalReport.ReportPath    = string.Format("/PG_Departamentos/dpto_bodega/reporte/rp_IngresoBodega.rdlc");

    Siendo que la ruta del reporte está correcta.

    Agradecería cualquier ayuda por favor! éste problema lo arrastro hace días!!!!

    Saludos.

    29 Maret 2012 19:50