Crystal Reports con Store Procedure

 

Hola en esta ocasión mostrare como implementar un reporte con store procedure, pero con un reporte creado con crystal reports 8 y teniendo una ruta de ubicación, que permite tener el reporte fuera del IDE de visual studio, esto nos da la facilidad de darle mantenimiento al reporte sin necesidad de crear un nuevo ejecutable.

En esta ocasión solo pondré código, ya que en anteriores entradas se ha hablado de como implementarlo.

Para persistir contra la base de datos se tiene un método en el cual se llama a un store procedure que se le pasa un parámetro para obtener un registro especifico.

[C#]

public static List<PersonalEntity> ReporteBuscarPersonal(string codigo)
        {
            using (SqlConnection cn = Conexion.Conectar(“default”))
            {
                cn.Open();
                using (SqlCommand cmd = cn.CreateCommand())
                {
                    cmd.CommandText = “SP_Personal”;
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue(“@PersonalId”, codigo);
                    List<PersonalEntity> personal = new List<PersonalEntity>();
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        PersonalEntity p = new PersonalEntity();
                        if (reader.Read())
                        {
                            p.Nombre = Convert.ToString(reader[“Nombre”]);
                            p.Direccion = Convert.ToString(reader[“Direccion”]);
                        };
                        personal.Add(p);
                    }
                    return personal;
                }
            }
        }

[C#] 

Se llama al método desde la capa de dominio.

[C#]

public static DataTable crBuscarPersonal(string id)
        {
            return PersonalRepository.crBuscarPersonal(id);
        }

[C#]

Por ultimo la implementación desde la presentación, el método SetDBLogonForReport el cual se encarga de pasarle los datos de conexión a la base de datos.

[C#]

private void button1_Click(object sender, EventArgs e)
        {
            string FilePath = @”G:\Reportes\PersonalParametro.rpt”;
            ReportDocument rptListaPersonal = new ReportDocument();
           
            rptListaPersonal.Load(FilePath);
            DataTable tablaDatos = Personal.crBuscarPersonal(txtId.Text);

            rptListaPersonal.SetDataSource(tablaDatos);

            frmParametro frm = new frmParametro();
           
            frm.CrystalReportViewer.ReportSource = rptListaPersonal;
            frm.CrystalReportViewer.Dock = DockStyle.Fill;
           
            ConnectionInfo cn = new ConnectionInfo();
            cn.ServerName = “.”;
            cn.DatabaseName = “Prisma”;
            cn.UserID = “sa”;
            cn.Password = “lim@01”;
            cn.Type = ConnectionInfoType.SQL;
            SetDBLogonForReport(cn, rptListaPersonal);
          
            frm.CrystalReportViewer.Refresh();
            frm.Text = “Probando”;
            frm.Show();
        }

[C#]

Anuncios

Un pensamiento en “Crystal Reports con Store Procedure

  1. lorenzo Arce

    Esta muy bueno el articulo, me sirvio bastante ya que tenia un problema para realizar la conexion desde .Net con Crystal..y pude soluccionarlo..

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s