Está en la página 1de 3

Reportes en .

NET con Crystal Reports


Por Mauro Sant'Anna
Visual Studio .NET incluye Crystal Reports como un mecanismo "oficial" de creacin de reportes.
Crystal Reports es un producto muy desarrollado y complejo para la creacin de reportes, y
cuenta con una infinidad de opciones. En este artculo, nos vamos a concentrar en crear reportes
relativamente sencillos, pero mostrando los detalles especficos de la versin .NET, tanto en
aplicaciones WinForms como en aplicaciones WebForms (ASP.NET). Este artculo considera
que usted ya posee alguna familiaridad con Visual Studio .NET y tambin con ADO.NET.
Crear un reporte
Independientemente de cmo se har la presentacin, el reporte se define en un archivo ".RPT",
que forma parte de su proyecto. Ese archivo especifica el modo en que se har la presentacin
del reporte, pero no incluye los datos propiamente dichos. Los datos se definirn en el tiempo de
ejecucin.
Crystal Reports se basa en un concepto muy comn de la definicin de reportes: los reportes se
componen de "secciones", y cada seccin es un espacio horizontal en la pgina. Existen
diversos tipos de secciones, por ejemplo:
Encabezado del reporte, aparece en la primera pgina.
Encabezado de pgina, aparece en la parte superior de todas las pginas.
Detalle: lo ms importante. En el tiempo de ejecucin, se genera una de estas secciones
para cada lnea (registro) en la base de datos.
Pie de pgina, aparece en la parte inferior de todas las pginas.
Pie de reporte, aparece al final del reporte.
En un principio, todos los reportes presentan estas cinco secciones. Otras secciones son
opcionales, como por ejemplo:
Encabezado de grupo, aparece antes de un grupo.
Pie de grupo, aparece al final del grupo.
Se podr omitir una o ms secciones, en caso de que no sean necesarias.
Acceder a la base de datos
Antes de crear el reporte, hay que decidir cul ser el mecanismo utilizado para acceder a la
base de datos. Crystal Reports puede obtener datos de una infinidad de fuentes, pero una buena
cantidad de ellas, como DAO, ADO y OLE/DB, no est "administrada", o sea, es cdigo .NET
"puro". En una aplicacin .NET, probablemente sea deseable realizar el acceso a travs de
ADO.NET. Para ello, lo ms fcil es definir un Conjunto de datos tipificado, aun antes de crear el
reporte.
Crear un proyecto
Veamos cmo crear un reporte en un programa WinForms. Inicialmente, genere un proyecto en
C# de tipo "Windows Application".
Vamos a definir ahora el acceso a la base de datos. Como ejemplo, vamos a acceder a la base
de datos "Northwind", que se encuentra como ejemplo en SQL Server. Siga la siguiente ruta:
Agregue un componente de tipo SqlDataAdapter.
Seleccione la conexin con la base Northwind.
Introduzca el comando SQL "select * from Products order by CategoryID, ProductName"
Haga clic con el botn alterno del mouse sobre el componente DataAdapter, seleccione
"Create DataSet" y acepte el nombre sugerido ("DataSet1").
Ahora, agregaremos un reporte al proyecto. Haga clic en "Proyecto | Agregar elemento nuevo" y
seleccione "Crystal Report":
Acepte el nombre "CrystalReport1.rtp", al presionar Intro. Crystal Reports mostrar un asistente.
Marque "Usar el Experto en reportes" y "Estndar":
En este momento, cabe hacer algunos comentarios:
El asistente puede ayudarle a crear diversos tipos de reportes, pero vamos a explorar
solamente algunas posibilidades ms sencillas. Puede probar despus con otros tipos de
reportes;
Crystal Reports pedir que realice el registro de su copia; mostramos el uso con una
copia ya registrada.
Presione "Aceptar" para pasar a la pantalla siguiente para la eleccin de la fuente de los datos.

Seleccione la tabla "Productos" a partir del Conjunto de datos creado y haga clic en "Insertar
tabla":
Haga clic en "Siguiente" y seleccione las columnas que aparecern en el reporte:
Haga clic en "Siguiente" y defina un grupo haciendo clic en la columna "CategoryID" al lado
izquierdo, y despus en "Agregar":
Las dems opciones no nos interesan en este reporte sencillo. Haga clic en "Finalizar", para
crear el reporte:
Observe lo siguiente:
El reporte tiene siete secciones; las cinco obligatorias y dos ms relativas al grupo.
La seccin "Encabezado del reporte" tiene la propiedad Suprimir con el valor verdadero,
indicando que no aparecer en el tiempo de ejecucin.
Puede editar cuantas veces quiera el reporte creado, al agregar componentes o
modificar los que hayan sido colocados.
Las secciones contienen componentes que se pueden obtener en dos lugares:
Pgina "Crystal Reports" de la Caja de herramientas, si se trata de textos fijos, lneas y
cajas.
"Explorador de campos", en el caso de campos de la base de datos, frmulas, totales,
grupos y otros datos especficos del reporte, como fecha, hora y numeracin de pginas.
Presentar el reporte
Una vez definido el reporte, hay que presentarlo al tiempo de ejecucin. Para ello, coloque un
componente "CrystalReportViewer" en el formato y seleccione la propiedad "Acoplar" para
"Llenar". Slo se necesita un componente "Visualizador", aun cuando se hayan creado diversos
reportes en archivos RPT separados.
Para producir el reporte, agregue un componente "Men principal" y aada un elemento de men
para producir el reporte. Aada el siguiente cdigo al evento Clic del botn:
private void menuItem2_Click(object sender, System.EventArgs e)
{
// Ejecuta la consulta a la base dados
sqlDataAdapter1.Fill(dataSet11);
// Crea el reporte
CrystalReport1 Rel = new CrystalReport1();
// Asocia el conjunto de datos con el reporte
Rel.SetDataSource(dataSet11);
// Asocia el reporte con el Visualizador
crystalReportViewer1.ReportSource = Rel;
}
Una vez presentado, puede cambiar el tamao en el botn "aumentar", ir a otra pgina o hacer
clic del lado izquierdo para solicitar la presentacin de algn grupo en particular:
El usuario puede hacer clic en el botn con el icono de la impresora para imprimir el reporte.
Presentar en el Web
Para utilizar el reporte en un proyecto Web, cree un nuevo proyecto de tipo "Aplicacin Web
ASP.NET" y agregue un reporte exactamente como se mostr anteriormente. Aada al formato
un componente CrystalReportsViewer de la pgina "WebForms" de la Caja de herramientas.
Aada el siguiente cdigo al evento Page_Load:
private void Page_Load(object sender, System.EventArgs e)
{
// Ejecuta la consulta a la base de datos
sqlDataAdapter1.Fill(dataSet11);
// Crea el reporte
CrystalReport1 Rel = new CrystalReport1();
// Asocia el conjunto de datos con el reporte
Rel.SetDataSource(dataSet11);
// Asocia el reporte con el Visualizador
CrystalReportViewer1.ReportSource = Rel;
}
La pgina Web mostrada es la siguiente:

Cabe sealar que la interfaz es similar a la del programa WinForms que se mostr
anteriormente, lo que permite cambiar de pgina, de valor de grupo y de valor de aumento.
Conclusin
Crystal Reports permite crear y presentar fcilmente reportes tradicionales a partir de bases de
datos relacionales.

También podría gustarte