none
varios reportes rdlc dentro de un solo reportviewer. RRS feed

  • Pregunta

  • Buenas, tengo la necesidad de mostrar varios reportes e imprimirlos todos de una vez.

    El problema es que lo debo hacer uno por uno y se habren varios reportviewer, pero quisiera saber si en el boton donde se generan los reportes puedo agregar codigo para que al generar un segundo reporte este me lo agregue al reportviewer del reporte que antes habia generado. Mostrando un solo reportviewer para todos los reportes generados.

    Ojala entiendan lo que quiero explicar

    Gracias de antemano

    • Cambiado Karen Malagón lunes, 20 de abril de 2015 17:37 ReportViewer issue
    viernes, 17 de abril de 2015 15:11

Todas las respuestas

  • Hola querido amigo creo que esto te podría ayudar:

    protected void Page_Load(object sender, EventArgs e) { conn = new OdbcConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]); conn.Open(); if (!Page.IsPostBack) { runRptViewer(); } } private void rptGetDataset() { DataSet ds = new DataSet(); ds.DataSetName = "dsNewDataSet"; string sql = ""; sql = "SELECT ID, CLIENT_ID, AGENT_ID FROM TBLMAILDELETED"; OdbcDataAdapter da = new OdbcDataAdapter(sql, conn); ds.GetXmlSchema(); da.Fill(ds); ds.WriteXmlSchema(_path + "/App_Code/Ds.xsd"); ds.WriteXml(_path + "/App_Code/Ds.xml"); } private DataTable getData() { DataSet dss = new DataSet(); string sql = ""; sql = "SELECT ID, CLIENT_ID, AGENT_ID FROM TBLMAILDELETED"; OdbcDataAdapter da = new OdbcDataAdapter(sql, conn); da.Fill(dss); DataTable dt = dss.Tables[0]; return dt; } private void runRptViewer() { this.ReportViewer1.Reset();

    //En la linea debajo en el campo Report.rdlc deberas poner el nombre de tu Rdlc que piensas usar this.ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc"); ReportDataSource rds = new ReportDataSource("dsNewDataSet_Table", getData()); this.ReportViewer1.LocalReport.DataSources.Clear(); this.ReportViewer1.LocalReport.DataSources.Add(rds); this.ReportViewer1.DataBind(); this.ReportViewer1.LocalReport.Refresh(); }


    Espero haberte ayudado gracias.


    viernes, 17 de abril de 2015 15:49
  • Hola querido amigo creo que esto te podría ayudar:

    protected void Page_Load(object sender, EventArgs e) { conn = new OdbcConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]); conn.Open(); if (!Page.IsPostBack) { runRptViewer(); } } private void rptGetDataset() { DataSet ds = new DataSet(); ds.DataSetName = "dsNewDataSet"; string sql = ""; sql = "SELECT ID, CLIENT_ID, AGENT_ID FROM TBLMAILDELETED"; OdbcDataAdapter da = new OdbcDataAdapter(sql, conn); ds.GetXmlSchema(); da.Fill(ds); ds.WriteXmlSchema(_path + "/App_Code/Ds.xsd"); ds.WriteXml(_path + "/App_Code/Ds.xml"); } private DataTable getData() { DataSet dss = new DataSet(); string sql = ""; sql = "SELECT ID, CLIENT_ID, AGENT_ID FROM TBLMAILDELETED"; OdbcDataAdapter da = new OdbcDataAdapter(sql, conn); da.Fill(dss); DataTable dt = dss.Tables[0]; return dt; } private void runRptViewer() { this.ReportViewer1.Reset();

    //En la linea debajo en el campo Report.rdlc deberas poner el nombre de tu Rdlc que piensas usar this.ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc"); ReportDataSource rds = new ReportDataSource("dsNewDataSet_Table", getData()); this.ReportViewer1.LocalReport.DataSources.Clear(); this.ReportViewer1.LocalReport.DataSources.Add(rds); this.ReportViewer1.DataBind(); this.ReportViewer1.LocalReport.Refresh(); }


    Espero haberte ayudado gracias.


    Hola Aldair Gracias por tu ayuda, pero me da error en la penultima linea

    this.ReportViewer1.DataBind();

    y no se a que se debe

    estoy intentando adaptar el codigo a mi proyecto c# usando SqlServer 2008.

    si me puedes seguir ayudando te lo agradecere..

    este es el codigo que tengo 

       


           

    private void button1_Click(object sender, EventArgs e)

    { runRptViewer(); } private DataTable getData() { DataSet dss = new DataSet(); string sql = "SELECT * FROM TABLAREPORTECALIFICACIONES"; SqlDataAdapter da = new SqlDataAdapter(sql, Variables.MiConexion); da.Fill(dss); DataTable dt = dss.Tables[0]; return dt; } private void runRptViewer() { this.reportViewer1.Reset(); //En la linea debajo en el campo Report.rdlc deberas poner el nombre de tu Rdlc que piensas usar this.reportViewer1.LocalReport.ReportPath = ("reporte_calificaciones_parcial.rdlc"); ReportDataSource rds = new ReportDataSource("dscalificaciones", getData()); this.reportViewer1.LocalReport.DataSources.Clear(); this.reportViewer1.LocalReport.DataSources.Add(rds); this.reportViewer1.DataBind(); this.reportViewer1.LocalReport.Refresh(); }


    exactamente en el .DataBind(); que esta marcado es donde me da error.



    viernes, 17 de abril de 2015 20:06
  • Bueno he logrado adaptar el codigo y funciona pero el problema es que al generar un nuevo reporte, se me borra el anterior y solo me deja el nuevo.

    Lo que yo quiero es que me agregue el nuevo a una nueva pagina del reportviewer sin que se me elimine el anterior..

    Muchas gracias.

    lunes, 20 de abril de 2015 16:38
  • Hola Selvin Erazo una pregunta estas mostrando el nuevo reporte sobre el que ya tenia o estas mostrándolo en una nueva ventana, siempre que trabajo muestro un reporte en cada ventana pero usando un único form nada mas.

    Mi recomendación seria que muestres un reporte en distintas ventanas usando solamente un formulario, para hacer dicho proceso deberías invocar el método que permite abrir el formulario.

    lunes, 20 de abril de 2015 17:26
  • Hola Selvin Erazo una pregunta estas mostrando el nuevo reporte sobre el que ya tenia o estas mostrándolo en una nueva ventana, siempre que trabajo muestro un reporte en cada ventana pero usando un único form nada mas.

    Mi recomendación seria que muestres un reporte en distintas ventanas usando solamente un formulario, para hacer dicho proceso deberías invocar el método que permite abrir el formulario.

    Bueno  estoy mostrando los reportes en ventanas diferentes (para cada reporte un formulario) pero quisiera me dieras mas informacion sobre como hacerlo en distintas ventanas pero usando solamente un formulario.

    Estoy utilizando Reportes rdlc 

    gracias

    lunes, 20 de abril de 2015 18:34
  • Hola veo que en la siguiente linea de codigo tu le das el reporte predeterminado:

    this.reportViewer1.LocalReport.ReportPath = ("reporte_calificaciones_parcial.rdlc");

    Ahí tu deberías poner una variable string y deberías asignarle como parámetro de entrada al método que lo esta usando para así poder hacer de que sea dinámico osea mostrar cualquier reporte.

    String MiReporte = "Esta variable contendra el reporte que deseas mostrar";

    this.reportViewer1.LocalReport.ReportPath = (MiReporte);

    Saludos Selvin Erazo

    lunes, 20 de abril de 2015 18:50
  • Hola veo que en la siguiente linea de codigo tu le das el reporte predeterminado:

    this.reportViewer1.LocalReport.ReportPath = ("reporte_calificaciones_parcial.rdlc");

    Ahí tu deberías poner una variable string y deberías asignarle como parámetro de entrada al método que lo esta usando para así poder hacer de que sea dinámico osea mostrar cualquier reporte.

    String MiReporte = "Esta variable contendra el reporte que deseas mostrar";

    this.reportViewer1.LocalReport.ReportPath = (MiReporte);

    Saludos 

    Ya entendi lo que me quieres explicar, bueno primero me disculpo por mal exponer mi caso.

    con el codigo anterior lo que hago es que al momento de generar el reporte este me lo muestra en el reportviewer que ya estaba abierto. y si bien pues solo me muestra un reportviewer para todos mis reportes lo que yo necesito no es eso. 

    Sino que por ejemplo genero un reporte para el alumno Selvin este me muestre la ventana normal con el reportviewer, pero si despues genero un reporte para Aldair entonces en el mismo reportviewer de Selvin me lo agregue en una nueva pagina (sin que se me quite el reporte de Selvin, sino que solo inserte una nueva pagina en el reportviewer) para que al final de generar los que sean necesarios entonces pueda imprimirlos todos de una vez.

    Y la verdad necesito que funcione de esa forma.

    Muchas gracias por su invaluable ayuda..



    lunes, 20 de abril de 2015 19:56