Está en la página 1de 25

Crystal Reports

y VB.NET
Lo que debo saber sobre Crystal
y VB.NET 
Fecha: 21/Sep/2004
Autor: Enriquillo Mañón Ramírez
(enriquillo_manon@hotmail.com)

Introducción

Creando un Reporte desde Cero

Crystal y Windows Applications

Crystal y Web Applications

Crystal y Web Services

Funcionalidades del CrystalReportView en tiempo de ejecución

Conclusión

Introducción

Crystal Reports es el generador de reporte por excelencia de Visual Basic


desde versiones anteriores a .NET. Esta no es la primera vez que se distribuye una
versión de este generador de reporte junto a una versión de Visual Studio, en la
versión 4 de visual Basic incluía una versión de Crystal Reports aunque no tan
integrada como la versión .NET, Cristal es un producto creado en su esencia
orientado al usuario final, es decir, que un ejecutivo pueda crear sus propios
informes sin necesidad de asistencia de un desarrollador.

En este articulo pretendo cubrir los aspectos básicos de crystal report y


explicar los puntos que necesite cualquier desarrollador (este articulo estará
orientado a desarrolladores o aspirantes a desarrollador) para iniciarse en el
desarrollo de reportes con crystal y vb.net.
Crystal Report no es la única herramienta para generar reportes que se
puede utilizar con Visual Studio .NET existen otras entre las que podemos
mencionar:

Active Reports de Data Dynamics

SQL Reporting Services.

Microsoft Offices Automation, entre otros.

Al igual que desde el ambiente de desarrollo de Visual Studio, también


podemos crear nuestros reportes desde el ambiente de desarrollo de Crystal
Reports y luego ejecutarlo desde nuestro proyecto VB.NET, Los Reportes
desarrollados bajo el ambiente de Crystal Reports pueden ser compilados a .EXE
para poder ser ejecutados Stand-Alone.

Entre las características principales que debemos conocer en Crystal Reports


para poder crear una buena solución de reportes están los fields que son los
componentes que nos permiten mostrar información sobre el ambiente de
desarrollo y se clasifican en:

Formula Fields: Son campos que su valor pueden ser obtenidos de formulas
de cálculo y/o operaciones sobre otros campos.

Summary Fields: Son campos que se utilizan para acumular y/o promediar
valores según las operaciones que se deseen, entre las operaciones que soporta el
summary fields estan Count, Sum, Avg, discount, etc..

Parameters Fields: Son campos que se utilizan para enviarles valores al


reporte desde una aplicación o entrada del usuario.

SQL Expresión Fields: Son campos que se utilizan para ejecutar funciones
propias del motor de base de datos que se este utilizando.

Group Name Fields: Son campos que se utilizan para agrupar la salida del
reporte.
Running Total Fields: Son similares a los Summary Fields pero estos pueden
ser condicionados.

Especial Fields: Son un conjunto de campos preestablecidos que se utilizan


en los reporte como son, No. De Página, Total de página, Fecha de Impresión, Etc.

Crystal también posee su propio conjunto de sentencias y funciones para


producir información (o sea su propio lenguaje de funciones) y también comparte
las sentencias de VB 6 (los cambios en algunas sentencias en el lenguaje .NET
como son While no son soportados por crystal, estas deben utilizarse con la
sintaxis que se utiliza en VB 6),

Creando un Reporte desde Cero

Creamos un nuevo Proyecto en Visual Studio .NET, Seleccionamos


“File\New\Proyect”, Seleccionamos “Windows Application” y lo Nombraremos
“CrystalWinApp”

 
Los componentes necesarios para manejar los reportes de crystal son los
siguientes:

CrystalReportViewer: Este componente es la interfaz que utiliza la aplicación


para desplegar los reportes, este componente se coloca sobre un Windows o Web
forms. Este esta localizado en el Toolbox en el tab de Windows Forms (o Web
Forms si es un proyecto web).

ReportDocument: Este componente es utilizado para comunicarnos con el Archivo


.Rpt generado por Crystal Reports, mediante este componente podemos modificar
algunas características del reporte en tiempo de ejecución.

Una vez creado el proyecto agregamos un nuevo ítem, en el menú Project,


seleccionamos Add New Item …

Seleccionamos el témplate de Crystal Reports, luego se abrirá la ventana “Crystal


Reports Gallery”
En la parte superior tenemos 3 opciones:

Using The Report Expert: Esta opción es una especie de Wizard que nos
guiará paso por paso durante la creación del reporte.

As a Blank Report: Esta opción desplegará la interfaz de desarrollo de


reportes en blanco para que creemos nuestro reporte sin asistencia
(esta es la parte para expertos).

From as Existing Report: Esta opción nos permitirá crear un reporte a partir
de otro ya existente, al seleccionar esta opción nos pedirá la localización del
archivo .rpt que queremos utilizar y creará una copia de este reporte.

En la parte media tenemos 2 cuadros, el de la izquierda nos presenta los diferentes


tipos de reportes que podemos crear (esta opción solo estará disponible si
seleccionamos la primera opción de la parte superior (Using The Report Expert)), a
continuación le describo cada uno de ellos:
Standard: Este se utilizar para crear reportes tipos listas, Master/Detalle y/o
cualquier otro reporte común, esta es la opción mas utilizada.

From Letter: Este templete se utiliza para crear reportes tipo cartas donde
tienes un documento con un texto estático y en algunas partes del documento que
deben ser extraídas de la base de datos, un estilo de Mail Merge (para los que han
manejado Microsoft Word,Word Star o algún procesador de palabra).

Form: Este témplate se utiliza para informes tipo Formulario.

Cross-Tab: Este es un estilo de reporte con valores cruzados.

Subreport: Son similares a un reporte normal con la excepción de que estos


se incrustan dentro de los reportes con la finalidad de complementar o agregar
información, estos son muy utilizados.

Mail Label: Este se utiliza para generar etiquetas para cartas.

Drill Down: Este es un estilo de reporte también muy utilizado es similar a


un master/detalle solo que el detalle se presenta oculto y el usuario puede hacer
doble clic sobre el master y se despliega el detalle, este también se le llama reporte
interactivo.

Seleccionamos “Standard” damos clic en OK.

Luego se desplegará la ventana de Acceso a datos presentando diferentes


fólder con diferentes tipos de fuentes de datos entre las que podemos citar:
Project Data: en este fólder se desplegaran las diferentes conexiones que se
encuentren activas en el proyecto actual, desplegará 2 subfolder, el primero es
“ADO.NET DataSets” donde se despliegan las diferentes estructuras de los DataSets
que se encuentren en el proyecto y el segundo desplegará los diferentes objetos
connection que se encuentren activos.

OLE DB (ADO): Este fólder se utiliza para crear una conexión a una fuente
de datos a través OLE DB, Al hacer clic en esta ventana se despliega una ventana
con una lista de todos los proveedores de acceso a datos instalados en su maquina
para que se seleccione el adecuado y sea configurado (de este hablaremos mas
adelante ya que es el que estaremos utilizando).

ODBC: Este fólder se utiliza para crear una conexión a una fuente de datos a
través de ODBC, este se utiliza cuando no contamos con un proveedor de acceso a
datos de tipo OLEDB.
Database file: Este fólder se utiliza para especificar proveedores de acceso a
datos que son almacenados como archivos (*.mdb, *.dbf, *.xls, etc), al seleccionar
esta opción se abrirá la ventana para que seleccionemos el archivo y según el tipo
se desplegar el cuadro de dialogo correspondiente para su configuración.

Favorito, History: Estos fólder se utilizan el primero para almacenar las


conexiones mas utilizas por nosotros y el segundo guarda automáticamente un
histórico de las fuentes de datos que hemos utilizados.

More Data Source: Este fólder se utiliza para acceder datos en formato XML,
EXCEL.

Damos clic sobre el fólder OLE DB (ADO)se desplegará la ventana de Proveedores


de acceso a datos por OLEDB que tengamos instalados en nuestra maquina (estos
proveedores instalan automáticamente cuando instalamos las base de datos, MDAC
x.x y algunos ya los trae Windows agregados).

 
Seleccionamos Microsoft Jet 4.0 OLE DB Provider y damos clic sobre el botón Next,
luego se abrirá la ventana de configuración del Proveedor que selecciónanos, esta
ventana puede variar según el OLEDB Driver que hayamos seleccionado.

Damos clic sobre el pequeño botón que está a la derecha del primer TextBox, se
abrirá la ventana de Dialogo Abrir buscamos la base de datos NorthWind.mdb
(esta base de datos viene con Microsoft Offices y el código de este articulo incluye
una copia).

Damos clic en el botón Finish y desplegará bajo el fólder OLE DB (ADO) de la


ventana de Acceso a datos una conexión indicando la ruta de la base de datos y 2
grupos “Tables” y “Views”, en el grupo Tables están todas la tablas que contiene
esta base de datos y en el grupo Views las vistas que están contenidas en la base
de datos, de aquí seleccionaremos las tablas que utilizaremos para extraer la
información que se presentará en el reporte, damos clic en el signo de mas(+) que
tiene el grupo a la izquierda y buscamos la tabla “Categories”, damos clic sobre
esta tabla y luego clic sobre el botón “Insert Table” y la tabla se desplegará en el
cuadro de la derecha, esto nos indica que esta tabla estará incluida en nuestro
reporte, luego buscamos la tabla “Products” y damos clic en el botón Insert Table
otra vez, luego damos clic en Next.

Ahora se desplegara la ventana de relación entre tablas, aquí las tablas que
seleccionamos en el punto anterior son representadas por pequeños cuadros con
los nombres de los campos dentro, también se desplegara una línea delgada entre
las tablas indicando la relación que existe entre ellas, esta relación las establece
Cristal Reports automáticamente tomando como parámetro el Nombre de los
campos.

Aquí podemos cambiar las relaciones si quisiéramos, agregar nuevas relaciones


(tan solo debemos arrastrar el campo que queramos relacionar desde una tabla
hasta la otra y soltarla sobre el campo de la segunda tabla que será relacionado),
cambiar el tipo de relación (Inner, Outer, Left Outer, Right Outer), no haremos
cambios.

Damos Clic en el botón Next.

Luego se desplegará la ventana de selección de campos, aquí seleccionaremos los


campos que queramos que se desplieguen en nuestro reporte, en el cuadro
izquierdo están las tablas desde donde podemos seleccionar los campos y en el
cuadro derecho los campos que ya seleccionamos.
Ahora, damos doble clic sobre el campo CategoryName de la tabla Cateogries, este
se desplegará en el recuadro de la derecha, hacemos lo mismo para los campos
“ProductName, UnitPrice, UnitsInStock” de la tabla Products.

Ahora vamos a necesitar un campo que nos presente el precio del total en almacén
de cada producto, para eso agregaremos un Campo Formula (Formula Fields),
damos clic sobre el botón Formula, nos desplegará un pequeño cuadro pidiéndonos
el nombre del campo formula, Digite TotalPrice, damos clic en el botón OK, y se
desplegara la ventana de edición de formulas:

 
Esta presenta 3 cuadros de izquierda a derecha el primero nos muestra los campos
de nuestro reporte que ya seleccionamos anteriormente, también nos muestra la
conexión que creamos y las tablas que seleccionamos, en el segundo cuadro nos
muestra una lista de todas funciones que Cristal Reports soporta agrupadas por el
tipo de datos sobre el que actúan, y el tercero nos muestra una lista de los
operadores Aritméticos, Lógicos, de Conversión, etc. Agrupados también por el tipo
de datos sobre el que actúan, nuestro campo formula solo consistirá de multiplicar
el campo UnitPrice por el campo UnitsInStock, damos doble clic sobre el campo
UnitPrice en el primer cuadro, este se agregara al cuadro inferior, luego colocamos
el cursor al final del campo y digitamos un asterisco (o sea, el signo de multiplicar
para las computadoras),luego damos doble clic sobre el campo UnitsInStock en el
primer cuadro y listo, damos clic en el botón salvar y luego clic en el botón cerrar
de la ventana (a la derecha en la parte superior), retornaremos a la ventana
anterior, nuestro campo formula se desplegará en el cuadro de la izquierda junto
con los demás campos del reporte, damos clic sobre el cuadro de la derecha sobre
el campo “Products.UnitsInStock” y luego damos doble clic sobre nuestro campo
formula “@TotalPrice” y este se desplegará en la ventana de la derecha debajo del
campo UnitsInStock.

Damos clic en el botón Next.

Ahora se despliega la ventana de grupos, aquí podemos especificar por cuales


campos queremos que se agrupe nuestra información, por cada campo que
seleccionemos aquí se creara un grupo en nuestro reporte, damos doble clic sobre
el campo “Categories.CategoryName”.
Damos Clic en el botón Next.

Ahora se despliega la ventana de Totales, aquí indicamos los campos que deseemos
Totalizar, Podremos especificar totales por cada uno de los grupos que hayamos
especificados en la ventana anterior (como nuestro ejemplo solo seleccionamos un
campo “Categories.CategoryName” podremos especificar totales para este grupo).
Automáticamente Cristal Reports te agrega los campos Numéricos en el cuadro de
la derecha para totalizar, en nuestro ejemplo no tiene caso totalizar el precio y la
las Unidades en Almacén, pero si el Total (nuestro campo formula TotalPrice), asi
que damos clic sobre los campos del cuadro de la derecha que no deseamos
totalizar y damos clic sobre el botón “Remove”. Debajo del cuadro de la derecha
hay un Combobox que dice “Summary Type”,el Summary Type es la operación
matemática que queremos aplicar sobre este campo (en este caso sum para sumar
todos sus valores).

El check box que dice “Percentage of” se utilize para especificar que el total se
presentará como un porcentaje de algun otro total y el Check box al final “Add
Grand Totals” se utiliza para indicarle que además de los totales por grupo
queremos un Gran Total que sume todos los totales de los grupos.

Damos clic en el botón Next.

Aquí se despliega la ventana orden, aquí podemos especificar el orden en que se


presentaran los grupos, dejaremos todo como esta en esta pantalla.
Damos Clic en el botón Next.

Aquí se despliega la ventana de Gráficos estadísticos, aquí podemos seleccionar el


tipo de gráficos estadístico que queramos presentar en nuestro reporte, en la parte
izquierda están los diferentes tipos de gráficos y en la derecha los estilos de
gráficos por cada tipo, estos gráficos se configuran automáticamente tomando los
valores de los reportes, pero si se desea se pueden configurar manual mente solo
hay que desmarcar el check box que dice “Automatically set chart options”

Aquí seleccionamos el tipo Pastel (Pie) y a la derecha seleccionamos el estilo 3D.

Damos clic en botón Next.


Ahora se despliega la ventana de Selección de data, aquí podemos especificar un
criterio de selección de datos fijos para que nuestro reporte solo presente la
información resultante de este filtro.

Damos clic en el botón Next.

Y por Último para terminar con el diseño de nuestro reporte la ventana de selección
estilo, aquí se desplegará una lista con los diferentes estilos de reportes que Cristal
Provee.

En la parte izquierda se despliega la lista de los estilos de reportes disponibles y en


la parte de la derecha se presenta un preview de estilo que se seleccione, también
podemos especificar el Titulo de Reporte en la parte superior, Como titulo
digitaremos “Listado de Productos por categorías” y luego seleccionamos el estilo
Executive, Leading Break y damos clic en el botón Finish.

Listo nuestro reporte ya está diseñado, Visual Studio no cuenta con una
herramienta para poder visualizar los reportes en Preview Mode, por eso para ver
nuestro reporte corriendo necesitamos crear una aplicación que lo ejecute (esta es
la parte fácil).

Luego de diseñar el reporte este se presentara en el ambiente de diseño de reporte


donde podemos mover los campos y relocalizarlos a nuestro antojo.
Crystal y Windows Applications

Ahora les mostraré como abrir el reporte ya diseñado en una aplicación


windows.

Abrimos la Forma “Form1” que se creó al momento de crear nuestro


proyecto para el reporte, luego arrastramos del ToolBox el componente
“CrystalReportViewer” y lo dejamos caer sobre la forma.

Luego asignamos la propiedad “Dock” del control CrystalReportViewera “Fill”

y el control se ajustará al size de la forma, luego seleccionaremos la propiedad


“ReportSource” del control y damos clic en la opción “Browse…”, esto nos permitirá
seleccionar el archivo .rpt que se desplegará en la pantalla
Seleccionamos el archivo CrystalReport1.vb que esta en el fólder donde estamos
creando nuestro proyecto.

Y listo, ya podemos ejecutar nuestro reporte.

Crystal y Web Application.

Primero creamos un proyecto nuevo esta vez “ASP.NET Web Application” y lo


nombramos CrystalRWebApp, esta vez nuestro formulario o Página Web es
“WebForm1.aspx”, damos clic derecho sobre el proyecto CrystalRWebApp y
seleccionamos “Set as Startup Project”, luego damos clic derecho sobre la página
WebForm1.aspx y seleccionamos “Set as Start page”.

En el Toolbox en la pestaña “Web Forms” arrastramos el control


CrystalReportViewer y lo soltamos en la página, esta vez se verá diferente ya que
en proyectos Web este control no tiene Interface de diseño.
Una vez creado el proyecto agregamos un nuevo item, en el menu Project,
seleccionamos Add New Item …

 
Seleccionamos el témplate de Crystal Report, luego se abrirá la ventana “Crystal
Report Gallery”

  

Ahora seleccionamos la opción “From an Existing Report”, esto creará una


copia del reporte que ya creamos en la sección anterior para este proyecto.

Se desplegara la ventana de dialogo Abrir y seleccionamos el reporte que


creamos “CrystalReport1.rpt”

Luego damos clic derecho sobre la página y seleccionamos “View Code”,


expandimos la región "Web Form Designer Generated Code" y en el metodo
Page_Init después de la llamada a InitializeComponent agregamos el siguiente
Código

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form
Designer
'Do not modify it using the code editor.
InitializeComponent()

Dim CrRep As New CrystalReport1


CrystalReportViewer1.ReportSource = CrRep
CrystalReportViewer1.DataBind()
End Sub

Aquí estamos instanciando el Reporte que creamos CrystalReport1 ya que


crystal también crea una clase con el mismo nombre del reporte para que podamos
instanciar y manipular y le estamos diciendo al control CrystalReportView1 que
tome como fuente la instancia de nuestro reporte, luego le decimos al control
CrystalReportView1 que ejecute el reporte.

Listo, ya podemos ejecutar nuestro reporte.

Crystal y Web Services


Unos de los conceptos introducidos con el nacimiento de la tecnología .NET
es el de Web Services (Servicios en la Web), los reporte creados en crystal también
pueden ser publicados y consumidos como Web services.

Para los que no conocen el concepto Web Services esto se refiere proveer
alguna funcionalidad a través de la Web para que esta pueda ser utilizada por otra
aplicación, El clásico ejemplo de la tarjeta de crédito, cuando hacemos compras por
Internet y pagamos con tarjeta de créditos el site desde donde estamos realizando
la transacción necesita validar nuestra tarjeta de crédito para determinar si es
valida y claro si tiene fondo disponible para la transacción, las instituciones
bancarias propietarias de la tarjeta podrían publicar Web Services, el site solo debe
acceder al Web services enviarle los datos de nuestra tarjeta y el banco a través del
Web services nos devolverá la información que necesitamos, todo esto se hace a
través del Web services compartiendo la información en forma XML (Extensible
Market Language), esto nos facilita que no importa en que lenguaje y/o plataforma
estén diseñadas nuestras aplicaciones si accede la Web y maneja XML (que casi
todos los lenguajes ya manejan este lenguaje) puede hacer uso de este servicio.

Para esta prueba tomaremos el proyecto que creamos anteriormente el Web


Application.

Abrimos el proyecto CrystalRWebApp, damos clic derecho sobre el archivo


del reporte en el Solution Explorer “CrystalReport1.rpt” y seleccionamos “Publish as
Web Service”

Luego damos clic derecho sobre el archivo “WebForm1.aspx” en el solution


Explorer y seleccionamos “View Code”.

Modificamos el método “Page_Init”

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form
Designer
'Do not modify it using the code editor.
InitializeComponent()

Dim CrRep As New CrystalReport1


CrystalReportViewer1.ReportSource =
"http://localhost/CrystalRWebApp/CrystalReport1Service.asmx"
CrystalReportViewer1.DataBind()
End Sub
Y listo, podemos ejecutar nuevamente nuestro proyecto y el reporte se
ejecutara igual.

Funcionalidades del CrystalReportView en tiempo de ejecución

La interface de ejecución que nos brinda crystal y visual studio es bastante


amigable en cuanto a funciones para el usuario final, entre las funcionalidades las
mas destacadas podemos mencionar.

-         Interfaz Windows

Esta es la barra de funcionamiento de la interfaz de ejecución


de los reporte en ambiente Windows, aquí se pueden visualizar 12
botones que de izquierda a derecha su utilización son las siguientes:

Los 4 primeros son para moverse entre página del reporte, el 5to
botón se utiliza para ir a una página por el No. Cuando se hace clic
en este botónse despliega el dialogo “Goto Page” para especificar el
no. De la página que se desea desplegar.

El 6to. Botón se utiliza para cerrar la interfaz de ejecución del


programa, también se puede cerrar el la ventana por el botón
estándar de las ventanas de Windows.

El 7mo. Botón se utiliza para enviar el reporte a la impresora, cuando


se presiona este botón se despliega el cuadro de dialogo “Imprimir”
estándar de las aplicaciones Windows.
El 8vo botón se utiliza para refrescar la información que se esta
desplegando.

El 9no botón se utiliza para exportar el reporte a cualquier otro


formato, entre los formatos que se puede exportar un reporte se
encuentra Forma Excel, Word, pdf, html, etc. Al hacer clic en este
botón se desplegara una ventana similar a la ventana de dialogo
Abrir estándar de Windows donde especificaremos el nombre del
archivo a crear y el formato al cual deseamos exportar.

El 10mo botón se utiliza para ocultar o mostrar le ventana de grupos


que se encuentra a la izquierda donde se despliegan los nombres de
los grupos por los cuales esta agrupado el reporte, haciendo clic
sobre cualquier de estos nombres el focus se colocara sobre el en el
reporte.

El 11vo botón se utiliza para ampliar o reducir la vista del reporte.

El 12vo botón se utiliza para localizar cualquier texto en el reporte, al


hacer clic sobre este se desplegara el cuadro de dialogo donde
digitaremos la palabra a localizar si es localizada el focus se colocara
sobre la primera que aparezca.

La Interfaz Web también cuenta con todas estas funcionalidades.


Conclusión

Crystal Reports es una herramienta para diseño de reporte creada mucho


antes del nacimiento de la tecnología .NET, gracias a esta uno de las partes mas
tediosas e importante del diseño de aplicaciones se nos hace mas sencillo que es el
diseño de reportes, Crystal Reports puede ser utilizado con diferentes base datos
en las que podemos mencionar, MS Access, SQL Server, Oracle, Informix, etc.,
podemos diseñar reportes tanto desde el mismo ambiente de desarrollo de Visual
Studio .NET como desde el ambiente de diseño de Crystal Reports, los reportes
creados desde el ambiente de diseño de crystal pueden ser compilados a .EXE para
poder ser ejecutados sin necesidad de crear un programa o interfaz para esto.

También podría gustarte