You are on page 1of 11

Comenzando con Crystal Reports y Visual Basic .

NET: "Instalacin y configuraciones iniciales"


Como me han preguntado bastante sobre cmo comenzar a trabajar con Crystal Reports desde el Microsoft Visual Studio 2010 he decidido publicar este post en el que se mencionan algunos aspectos importantes sobre el entorno que debemos configurar antes de comenzar a trabajar, esto funciona si se quiere integrar la herramienta de Crystal Reports al IDE. Posteriormente, ya para comenzar a disear los informes y adaptarlos al lenguaje de programacin no encontr mejor tutorial que la misma documentacin en lnea de Microsoft (msdn Crystal Reports). Sigo con lo referente a instalacin y primeros pasos. Instrucciones para trabajar con Crystal Reports: 1) Descargar Crystal Reports para Visual Studio 2010 de la pgina oficial: http://www.sap.com/solutions/sap-crystal-solutions/query-reporting-analysis/sapcrystalreportsvisualstudio/downloads/index.epx (De la lista que aparece descargar el primero: versin standard) 2) Instalarlo siguiendo las instrucciones del asistente. 3) Crear un nuevo proyecto de tipo 'Aplicacin de Windows Forms' (OJO que no tiene que ser necesariamente un proyecto de tipo 'Aplicacin de Crystal Reports') y guardarlo adecuadamente utilizando la opcin 'Guardar todo' <Ctrl-Shift-S> 4) Cambiar el marco .NET Framework del proyecto. Se me hizo necesario porque yo lo tena en el ".NET Framework 4 Client Profile" y debe estar simplemente en ".NET Framework 4" (a secas) Para hacer esto... 4.1) Irse a las propiedades del proyecto o teclear <Ctrl-Enter> 4.2) Seleccionar la pestaa "Compilar" 4.3) Oprimir el botn "Opciones de compilacin avanzadas" 4.4) En el ltimo combobox escoger .NET Framework 4 (a secas) 4.5) Responder al dialog box "S, si quiero hacer esto" 5) Ya se podrn usar los objetos de Crystal Reports como "Crystal Reports Document" "Crystal Reports Viewer" que son bsicamente las herramientas principales para la creacin de informes con Crystal.

Informe Maestro detalle utilizando DataSet y Crystal Report


[Crear un Informe Maestro Detalle utilizando Dataset tipado y Crystal Report]
Fecha: 05 de Noviembre de 2004 (05/11/2004) Autor: Eric Enrique Escobar ericeec@hotmail.com

Introduccin
Este artculo mostrare la forma de crear un reporte maestro detalle utilizando la plantilla CrystalReport que provee Visual Studio .NET y utilizando un DataSetTipado como Origen de datos para poblar el reporte. Nos introduciremos un poco en la funcionalidad ofrecida por el asistente para crear reportes, Usaremo el ReportViewer para mostrar los datos del reporte y finalmente explicare un poco del NameSpace System.Data.Sql, especificamente los objetos SQLConnection, SqlDataAdapter.

Cdigo de Ejemplo: Reporte Producto por Categoria (Nothwind)


Los pasos siguientes los podriamos realizar en difentes orden o hacerlos otra forma, aqui solo les muestro una manera de hacerlo.

Crear el DataSet Tipado


Este dataset almacenara la informacin de las tablas Products y Categories de la base de datos Northwind. Para crearlo: 1. Agregemos un nuevo elemento al proyecto utilizando la plantilla DataSet, usare el nombre dsProductByCategories.xsd. Por el Momento el dataset esta vacio, no contiene elementos (Tablas, Ni Relaciones). Una buena via para adicionar tablas a un DataSet es

utilizar es Explorador de servidores, primero debes crear una conexin a la base de datos utilzando la opcion Agregar Conexin, en las conexiones de datos. 2. Desde la conexin a la base de datos Northwind seleccione la tabla Products y arrastrala hasta el diseador del Dataset(dsProductByCategories.xsd.), repite lo mismo con la tabla categories. Visual Studio .NET crea las tablas como elementos del dataset con todos los registros contendo en estas y los tipos de datos adecuados. 3. Para crear la relacion (DataRelaction) entre las tablas products y Categories, se toma el campo CategoryID de Categories y Se arrastra hasta el Campo CategoryID de Productos, de esta forma definimos que el Elemento Primario es Categories, que el Elemento Secundario es Productos, que el Campo Clave es CategoryID(Categories) y que el Campo de Clave externa es CategoryID (Productos).

Crear la pantallia del Reporte


Utilizaremos la plantilla CrytalReport, esta pantilla nos permite creer una gran variedad de estilos de reportes basados en el crystal report gallery. Para utilizar esta plantilla: 1. Agregar un nuevo elemento al proyecto, en la seccin categorias seleccione utilidad y luego la plantilla CrystalReport, asigne un nombre al reporte utilizare crProductByCategory.rpt. Despues de aceptar Visual Studio presenta la Galeria de Crystal Report 2. Cree un nuevo documento de crystal report utilizando el asistente de informes Estandar y acepte. 3. Ahora vamos a definir el origen de datos. Selecciones Proyect Data en la Ficha Datos, Seleccione ADO .NET DataSets, esta lista presenta el dataset dsProductByCategories.xsd

(creado anteriormente) y las tablas de este dataset Seleccionemos las dos tablas e Insertemosla en las tablas del reporte (como muestra la figura).

4. En al ficha campos (Fields) adiciones los campos de las dos tablas que incluiresmos en el informe (Como muesta la figura siguiente)

5. En la Ficha Group (Grupo), seleccionemos que vamos agrapar por CategoryName (Como muestra la figura Siguiente).

6. En al ficha Total adicionos los campos a sumarizar, para este ejemplo adicionaremos UnitPrice y UnitsInStock de la Products. Para UnitPrices seleccionaremos en el Summary Type(tipo de sumarizacion) Avg y para UnitsInStock Sum.

5. Finalmente Seleccionemos Finalizar. El asistente construira el informe y lo mostrara en vista de diseo. En este paso podemos hacer modificaciones al diseo del informe (en este articulo no detallaremos en este aspecto).

Crear La Forma Contenedora


Adicionamos una forma al proyecto y la modificamos para que contenga el informe. Para poder visualizar el informe debemos adiconar el control ReportViewer a la forma y lo preparamos para que cubra todo el tamao de la forma utilizando la propiedad Dock del Control en Fill.

Crear el Procedimiento para poblar el Reporte.


El procemiento siguiente (PoblarReporte) realizar la conexin a la base de datos Utizando el Objeto sqlConnection llamado sqlConn, la cadena de conexin, la creamos en la variable strConn, esta cadena de conexion se conecta al servidor local a la base de datos Northwind usuando seguridad integrada. Como vamos a utilizar el dataset tipado creado anteriormente entoces creamos dos sqlDataAdapter y en cada uno de ellos cargados todos los datos de las tablas por medio de las instrucciones definidas en las cadenas strCommCate y strCommProc. Luego Poblamos el dataset por medio de la instruccion Fill del dataAdapter. (Los Nombres de las tablas tiene que ser iguales a los nombres definidos en el dataset tipado y primero debemos poblar categores y luego products para no infringir las reglas de integridad). Luego creamos un objeto info del tipo del informe creado anteriormente (crProductByCategory), definimos el origen de datos, que es el objeto dsPc que poblamos usando los dataAdapters. Luego definimos la propiedad ReporSource del objeto crvwProductsbyCategory como el objeto info definido anterirmente El procedimiento lo podemos llamar desde el constructor de la forma (Sub New) despues del procedimiento inicializador de componentes y listo. Private Sub PoblarReporte() Dim sqlConn As SqlConnection Dim sqlDaProd As SqlDataAdapter

Dim sqlDaCate As SqlDataAdapter Dim dsPc As New dsProductByCategories Dim strConn As String = "Server=localhost;Initial Catalog=Northwind;" _ "Integrated Security = SSPI" Dim StrCommCate As String = "Select * From Categories" Dim strCommProd As String = "Select * From Products" Try 'Crear los DataAdapters sqlConn = New SqlConnection(strConn) sqlDaCate = New SqlDataAdapter(StrCommCate, sqlConn) sqlDaProd = New SqlDataAdapter(strCommProd, sqlConn) 'Poblar las tablas del dataset desde los dataAdaperts sqlDaCate.Fill(dsPc, "Categories") sqlDaProd.Fill(dsPc, "Products") 'Poblar el informe con el dataSet y mostrarlo Dim info As New crProductByCategory info.SetDataSource(dsPc) crvwProductsbyCategory.ReportSource = info Catch ex As Exception MessageBox.Show(ex.ToString) End Try End Sub Asi se veria el reporte.

Conclusin
Combinando las diferentes herramientas que nos provee Visual Studio .NET podemos facil y rapidamente soluciones de datos, El objeto dataAdapter nos permite facilmente trabajar desconectado de la base de datos, Los dataset nos proveen un metodo facil para manipular los datos e integrarlos diversos controles y que decir de la plantilla de crystal reporta, facil de usuar y muy util.