none
Problema con Crystal Reports RRS feed

  • Pregunta

  • Espero y me ayuden ya que es urgente.

    Necesito crear CR del siguiente sistema web, que funciona de tal manera en que yo busco datos en una BD SQL y después los imprimo en CR, el sistema funciona casi a la perfección, ya que busca la información que le coloco, por ejemplo nombre, edad, id, etc., y al darle imprimir me lo pasa a un CR pero cuando los datos son en mas de 1 hoja, solo se ven en el CR Viewer el contenido de la primera hoja y en las otras me muestra toda la BD desde el primer registro que tiene.

    Lo e intentado de  una manera en donde guardo los datos que le di a buscar en unos Label, para que cuando en el CR Viewer le de en la siguiente hoja me busque con los datos guardados en los label,  esto si me funciona, pero no creo que sea una buena idea, si alguien sabe como  poder hacerlo o que errores tengo se los agradecería mucho. (Espero y se entienda lo que necesito) Gracias.

    Este es el código en donde hago la conexión y busco los datos en la BD:

    //Esta Guardado en un archivo de clase (ClaseBuscar.cs)
    
    using System;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    using System.Web.UI.WebControls;
    using CrystalDecisions.CrystalReports.Engine;
    
    namespace AlumnosDatos
    {
        public class Buscar 
        {
            public void Fun_buscar(string Nombre, string Edad, string ID, string Fecha, string Cal, DataSet data_set, string Vtablename = "")   
            {         
                using( SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["estudiantes"].ConnectionString))
                {
                    string sql = "";
                    string sqlWhere = "";
    
                    if (Nombre != "")
                    {
                        sqlWhere = " NOMBRE = '" + Nombre + "'";
                    }
                    if (Edad != "")
                    {
                        if (sqlWhere != "") sqlWhere += " AND";
                        sqlWhere += " EDAD like '%" + Edad + "%'";
                    }
    
                    if (ID != "")
                    {
                        if (sqlWhere != "") sqlWhere += " AND";
                        sqlWhere += " EDAD like '%" + Edad + "%'";
                    }
    
                    if (Fecha != "")
                    {
                        if (sqlWhere != "") sqlWhere += " AND";
                        sqlWhere += " fecha >= CONVERT(SMALLDATETIME,'" + ID + " 00:00',103)";
                        sqlWhere += " AND fecha <= CONVERT(SMALLDATETIME,'" + Fecha + " 23:59',103)";
                    }
    
                    if (Cal != "")
                    {
                        if (sqlWhere != "") sqlWhere += " AND";
                        sqlWhere += " CALIFICACION = '" + Cal + "'";
                    }
    
                    if (sqlWhere != "")
                    {
                        sql = "SELECT  NOMBRE,EDAD, CALIFICACION, FECHA, ID,ORIGEN";
                        sql += " FROM dbo.AlumnosDataSet";
                        sql += " WHERE" + sqlWhere;
    
    
                        SqlCommand command = new SqlCommand(sql, conn);
                        conn.Open();
                        command.ExecuteNonQuery();
                        SqlDataAdapter Adapter = new SqlDataAdapter(command);
                        Adapter.Fill(data_set, Vtablename);
                        conn.Close();
                    }
                }         
            }
        }
    }

    Este es el archivo donde se crean los Crystal Reports (Reporte.aspx.cs):

    using System; using System.Data; using System.Data.SqlClient; using CrystalDecisions.CrystalReports.Engine; using System.Configuration; namespace BaseAlumnos { partial class ReporteAlumnos : System.Web.UI.Page { AlumnosDatos.Buscar buscar = new AlumnosDatos.Buscar(); ReportDocument Rep = new ReportDocument(); DataSet dataSet = new DataSet(); protected void Page_Load(object sender, EventArgs e) { string ID = ""; string fecha = ""; string calif = ""; string nombre = ""; string edad = ""; if (IsPostBack == false && Request.Form.Count > 0) {

    /*Aquí llamo los TxtBox del Default.aspx

    para buscar los datos ingresados*/ ID = Request.Form["Txt_ID"].ToString() + ""; fecha = Request.Form["Txt_fecha"].ToString() + ""; calif = Request.Form["Txt_cal"].ToString() + ""; nombre = Request.Form["Txt_nombre"].ToString() + ""; edad = Request.Form["Txt_edad"].ToString() + ""; Label1.Text = ID; Label2.Text = fecha; Label3.Text = nombre; Label4.Text = calif; Label5.Text = edad; if (ID != "" || fecha != "" || calif != "" || nombre != "" || edad != "") { buscar.Fun_buscar(nombre, edad, ID, fecha, calif, dataSet, "estudiantes"); dataSet.EnforceConstraints = false; Rep.Load(Server.MapPath("RepAlumnos.rpt")); Rep.SetDataSource(dataSet.Tables["estudiantes"]); CrystalReportViewer1.ReportSource = Rep; CrystalReportViewer1.DataBind(); } else { Response.Clear(); Response.Write("No selecciono ningún dato"); Response.End(); } } else { /*Aqui intente hacer lo mismo con

    Request pero no me los acepta porque IsPostBack== True,

    Por eso uso los label que estan en este archivo directamente*/

    ID = Label1.Text; fecha = Label2.Text; nombre = Label3.Text; calif = Label4.Text; edad = Label5.Text; buscar.Fun_buscar(nombre, edad, ID, fecha, calif, dataSet, "estudiantes"); Rep.Load(Server.MapPath("RepAlumnos.rpt")); Rep.SetDataSource(dataSet.Tables["estudiantes"]); CrystalReportViewer1.ReportSource = Rep; CrystalReportViewer1.DataBind(); } } } }



    martes, 21 de agosto de 2012 1:01

Todas las respuestas

  • no entendi esta parte

    solo se ven en el CR Viewer el contenido de la primera hoja y en las otras me muestra toda la BD desde el primer registro que tiene.

    igualmente algo que veo bastante mal es que armes la query uniendo partes en un string, cuando podrias armarla fija y pasar filtros condicionales

    Filtros Condicionales (1/2)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 21 de agosto de 2012 1:25
  • bueno a lo que me refiero en eso es que por ejemplo si busco todos los alumnos con calificacion de 8, y son mas de 100 y en cada hoja caben 20, al visualizarlo en el Crystal ReportViewer solo me aparecen los primeros 20(que es una sola hoja) y al cambiar a la siguiente hoja me aparecen todos los alumnos que estan registrados en la base de datos, sin importar el orden en el que esten. 
    martes, 21 de agosto de 2012 4:52
  • Hola Delfino!

    Tu post se moverá en el foro adecuado para tu pregunta.

    Saludos

     

    Eder Costa
    LATAM Forum Support Engineer
    Microsoft Corporation 

    • Editado Eder Costa miércoles, 29 de agosto de 2012 17:28
    miércoles, 29 de agosto de 2012 17:28