jul 3 2009

Trabajar Crystal Report con Archivo DataSet.xsd

Category: Artículosdwaks @ 15:33

Crystal Report
Definición 
http://es.wikipedia.org/wiki/Crystal_Reports

DataSet.xsd
Definición
http://es.wikipedia.org/wiki/ADO.NET#DataSets

Como siempre digo mejor define wikipedia antes que yo. En este artículo explicaré para mí la mejor forma de trabajar con Crystal Report desde Visual Studio, tomando en cuenta que desde Visual Studio se puede trabajar los reportes a nivel visual. En Visual Studio tenemos un control importante que es el  CrystalReportViewer, con solo colocar en un Windows Form ya se podrá ver el area donde los reportes serán desplegados.

Bueno el concepto aquí es simple, todos nosotros cuando trabajamos con datos el 75% de las veces volcamos todos los resultados dentro de un DataSet porque es la vía más comentada por todos los tutoriales a nivel de google. Bueno estamos acostumbrados a trabajar el DataSet como una clase por medio de código sin saber que existe otro modo de trabajar con DataSet y que será el que veremos y usaremos en este artículo para usarlo como DataSource de el Crystal Report.

Lo primero es agregar un nuevo Item, cuando lo vayan a agregar se van a la sección Data y allí verán el Item DataSet, dejen el mismo nombre por defecto y denle Click en Agregar, esto creará un archivo físico llamado DataSet1.xsd y abrirá en la ventana una sección de trabajo. Allí verán que por medio de 2 link te preguntan si quieres atarlo a alguna fuente de datos ó si quieres usar el DataSet Tool. Elegimos DataSet Tool, esto nos brindará las herramientas necesarias para ir creando la Tabla que tendrá este DataSet.

Luego en la lista de DataSet Tools arrojan el DataTable, verán que saldra visualmente el DataTable1 en el a´rea de trabajo, le dan click derecho sobre el y le dan a Agregar Columna. Pueden agregar cuantas columnas quieran para poder ser la fuenta de datos que el Crystal Report usará. Luego que ya tengan definida las Columnas con sus nombres, en mi caso puse 3 Columnas que son: Nombre, Apellido y País para hacer un reporte que me muestre los registrados de mi sistema, ya con esto terminamos el trabajo con el DataSet.

Ahora vamos a crear el reporte y decirle que use a el DataSet1 como DataSource ó fuente de datos. Para hcer esto nos vamos a el Form donde tenemos el CrystalReportViewer y le damos click derecho sobre el y elegimos Create a new Crystal Report. Esta acción nos creará un reporte y lo abrirá para comenzar a trabajarlo.

Ya teniendo el reporte creado lo que debemos hacer es decirle que su fuente de dato es el DataSet1 que se encuentra en el proyecto, para hacer esto  vamos a la ventana Field Explorer y damos click derecho sobre DataBase Fields y elegímos DataBase Expert, esta acción nos abrirá una ventana donde buscaremos el DataSet1 que esta en nuestro proyecto. En la primera carpeta llamada Project Data buscan el Folder llamado ADO.NET DataSets y lo abrén y verán que sale el DataSet1 con la Tabla creara, solo queda darle click a el DataTable1 y luego darle click a el botón que tiene la señal hacia la derecha para decirle que agregue ese DataSet1 y su DataTable1 a el Crystal como fuente de Datos.

Luego que ya se definio la fuente de Datos vas denuevo a la ventana Field Explorer y abriendo el TreeView DataBase Fields podrás hacer uso de los campos que tiene el DataTable1 creado dentro de el DataSet1, facil no?? Aquí ya queda que le den forma a el reporte y eso se lo dejo a su creatividad.

Despues que ya sabes como el Nombre, Apellido y País aparecerá en el reporte quedará mostrarlo cargandole información a el DataSet1 que el utiliza para que la informacióin cargada allí se muestre desde el Crystal. Esto se hace de forma simple debido a que tienes 2 opciones:

1- Cargar el DataSet1 manualmente por medio de una nueva instancia

2- LLenar el DataSet1 con lo que retorne una consulta a una base de datos.

Para que se haga una prueba rápido en el Load de el Form agrega unas líneas como estas:

001DataSet1 ds = new DataSet1();
002ds.Tables[0].Rows.Add(new object[] { "Marco", "Castillo", "Panamá" });
003ds.Tables[0].Rows.Add(new object[] { "José", "García", "Salvador" });
004ds.Tables[0].Rows.Add(new object[] { "jayson", "Quintero", "India" });
005ds.Tables[0].Rows.Add(new object[] { "Porfirio", "Castillo", "Panamá" });
006ds.Tables[0].Rows.Add(new object[] { "Diego", "Waiselfis", "Argentina" });
007
008this.CrystalReport11.SetDataSource(ds);

Allí cargue el DataSet manuelmente llenandolo de 5 registros, luego solo le pase esa nueva instancia de DataSet1 con el formato conocido por Crystal como un nuevo DataSource usando el método SetDataSource de el mismo objeto CrystalReport11.

Si se fijan el DataSet1 solo es una estructura que el Crystal tomará como fuente de datos y cada ves que ejecutes para mostrar información en el Crystal haces una Instancia nueva de el objeto DataSet1 y la llenas de datos y se la pasas como nueva fuente de Dato.

Creo que fue claro con el concepto solo queda que lo apliquen, hagan pruebas simple siguiendo paso a paso lo que digo así verán esto trabajando, luego ya viendo todo y como es el concepto general podrán hacer uso de esta técnica como mejor les paresca.

Quiero aclarar que gracias a esto tendrán ventajas claras como por ejemplo el CrystalReport no depende de una base de datos y el migrar el programa a diversas bases de datos es independiente para el Crystal porque el conoce solo el DataSet1.

Saludos, 

Tags:

Actualmente calificado con 3.0 por 2 personas

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Comentarios