Está en la página 1de 14

Crear informe

sencillo con
VS .NET 2003
[Ejemplo de creación de un
informe sencillo con Crystal
Reports .NET 2003]
Fecha: 27/Sep/2004 (23/Sep/2004)
Autor: Miguel García Rodríguez (kagueto.net@terra.es)

Este ejemplo muestra como crear un sencillo informe de una aplicación Windows con el
Crystal Reports integrado en el Visual Studio .NET 2003 partiendo de una base de
datos de Access.

Este ejemplo no es muy técnico ni requiere conocimientos de bases de datos de ningún


tipo simplemente siguiendo los pasos se puede crear un informe muy sencillo para
nuestra aplicación Windows, para cosas mas complicadas esta igual no sería la mejor
solución.

Para crear informes con la versión integrada en el Visual Studio .NET


2003 hay que distinguir dos partes fundamentales por un lado el propio
informe o archivo .rpt y por otro lado el visor o componente para
visualizar informes incluido en .NET.
Comenzaremos por crear el informe, para ello en el explorador de
soluciones sobre el proyecto botón secundario  -->Agregar --> Agregar
nuevo elemento …

Dentro del cuadro de diálogo que se nos abre escogemos


Elementos de proyecto local --> Utilidad --> Crystal Report y en el
nombre le pondremos el nombre que le queramos dar al informe, en
este caso simplemente le llamaremos “Informe.rpt”.

 
 

A continuación se nos abrirá el asistente para la creación de


informes, en el cual dejaremos la opción por defecto que es Mediante el
asistente de informes y dentro de estos el Estándar y le daremos a
Aceptar.
 

A continuación se nos abrirá el asistente para la creación de


informes estándar donde iremos seleccionando las distintas opciones de
nuestro informe. La primera opción que hemos de indicarle al asistente
es el origen de datos que pueden ser distintas opciones desde una base
de datos de sql Server, un archivo XML, un DataSet del proyecto, etc.
en nuestro caso utilizaremos una base de datos de ACCESS para
simplificar el ejemplo, escogemos entonces Archivos de base de datos
pulsando sobre el símbolo + a la izquierda de la carpeta se nos abrirá el
cuadro de diálogo para establecer manualmente el archivo “.mdb”. Una
vez seleccionado se nos mostraran las tablas de nuestra base de datos,
haciendo doble clic en cada una de las tablas las agregamos al informe,
no tienen por que ser todas sino simplemente las que nos interesen.
Una vez seleccionadas las tablas pulsamos sobre Siguiente para
continuar con el asistente.
 

En la siguiente ventana nos muestra los vínculos o relaciones que


establece automáticamente entre las tablas, estos vínculos los establece
por el nombre, normalmente por lo cual si dos campos de tablas
distintas se llaman igual establecerá una relación entre ellas, con lo cual
aquí deberemos comprobar que las relaciones son las de nuestra base
de datos y si no es así modificarlas a mano o simplemente borrar los
vínculos que será lo que hagamos en este caso para simplificar el
ejemplo. Cuando le demos a borrar vínculos nos saldrá una ventana de
advertencia le daremos que si y a continuación le damos a Siguiente y
nos saldrá una nueva advertencia a la cual le daremos Aceptar.

 
 

En la nueva ventana del asistente que se nos abre escogeremos


los campos de cada una de las tablas que queremos que sean mostrados
en nuestro informe.

 
 

Una vez llegados a este punto le daremos a Finalizar para terminar


nuestro informe. Podemos seguir con el asistente para agrupar los datos
por alguno de los campos, cambiar el estilo del informe y otras opciones
que para este ejemplo no nos interesan.

Una vez terminado el asistente nos aparecerá el informe en vista


de diseño, el cual podremos retocar, cambiando el tipo de letra,
tamaños, colocación de los campos etc. a nuestro gusto teniendo en
cuenta varias cosas: el encabezado del informe sale solamente al
principio del mismo, el encabezado de página sale al principio de cada
página al igual que el pie de página y finalmente el pie de informe sale
al final. Podemos añadir campos especiales como por ejemplo fecha de
impresión, hora de impresión etc. escogiéndolos dentro del Explorador
de Campos, si no tiene esta ventana la puede mostrar escogiendo Ver --
> Otras ventanas --> Esquema del documento.

Una vez arreglado a gusto tendremos listo el informe, que


presentará una apariencia similar al realizado para este ejemplo.
 

Tenemos así lista la primera de las dos partes necesarias para


generar informes en .NET. Ahora crearemos un formulario para mostrar
el informe realizado con lo cual al igual que anteriormente en el
explorador de soluciones sobre el proyecto botón secundario -->
Agregar --> Agregar Windows Form … le ponemos de nombre
“VisorDeInformes.cs” en este caso por que lo realizaremos sobre C#
pero podremos hacerlo sobre cualquiera de los lenguajes soportados por
la plataforma.

 
 

Una vez le demos a Abrir se nos abrirá el formulario en vista de


diseño, ajustamos el tamaño a gusto y a continuación en el cuadro de
herramientas, normalmente esta situado el último de los elementos,
pulsamos sobre CrystalReportsViewer y sin soltar arrastramos al
formulario.

Lo ajustamos al tamaño del formulario y lo tenemos listo para


trabajar con el.
 

Una vez llegados a este punto solamente nos falta la parte de


programación para que nuestro informe pueda ser visualizado. Existen
muchas maneras de hacer lo que vamos a hacer ahora, asignar al visor
el informe echo anteriormente y dentro de este escoger los datos que
queremos que salgan en el informe, en este ejemplo lo haremos todo
por código, pero ya digo que se podría hacer de muchas otras maneras.

Para ello comenzaremos por el constructor del visor para ello con
el formulario VisorDeInformes abierto vamos a Ver --> Código o bien en
el Explorador de soluciones sobre el formulario botón secundario Ver
Código.
Una vez se nos habrá el código vamos al constructor que
presentará esta apariencia:

public VisorDeInformes()
{
//
// Necesario para admitir el Diseñador de Windows Forms
//
InitializeComponent();
//
            // TODO: agregar código de constructor después de llamar a
InitializeComponent
//
      }

En este punto aclararemos que aunque el informe este realizado


en vista de diseño, por detrás .NET crea una clase con el mismo nombre
dado al informe, la cual no podemos ver ni tocar, por lo menos yo no sé,
pero que si podemos utilizar. Con lo cual lo que haremos ahora dentro
del constructor declararemos e instanciaremos un objeto de la
mencionada clase y le asignaremos ese informe al CrytalReportViewer
como informe, quedando de la siguiente manera:

 public VisorDeInformes()
{
//
// Necesario para admitir el Diseñador de Windows Forms
//
InitializeComponent();
Informe informe = new Informe();
crystalReportViewer1.ReportSource = informe;
}

Por último solamente nos falta seleccionar los datos que queremos
mostrar en el informe es decir asignarle una especie de consulta select
sql para filtrar los datos. Se hace mediante la propiedad
“SelectionFormula” del CrytalReportViewer donde establecemos las
condiciones que debe seguir el informe al ser mostrado, por ejemplo en
este caso queremos que nos enseñe los datos especificados en el
informe que tengan como paciente el indicado y como número de
consulta también el indicado. Aquí es donde podemos pasarle
parámetros a ese informe por ejemplo si queremos pasarle el código del
paciente o de la consulta se la pasaremos como argumentos en el
constructor, lo que se puede hacer es pasarle como parámetro una
cadena la cual realizamos donde llamemos al VisorDeInformes para no
depender del número de parámetros que le queremos pasar. Lo que se
debe de cumplir es que el nombre del campo de la base de datos este
entre corchetes. Quedando finalmente el constructor como sigue:

           public VisorDeInformes()


{
//
// Necesario para admitir el Diseñador de Windows Forms
//
InitializeComponent();
Informe informe = new Informe();
crystalReportViewer1.ReportSource = informe;
            crystalReportViewer1.SelectionFormula = "{paciente.p_codigo}
=" + codigoPaciente +
            " AND {consulta.c_codigo} =" + codigoConsulta;
          }

Si lo hacemos con parámetros pasados como una cadena quedaría


de la siguiente forma:

          public VisorDeInformes(string cadenaSelect)


{
//
// Necesario para admitir el Diseñador de Windows Forms
//
InitializeComponent();
Informe informe = new Informe();
crystalReportViewer1.ReportSource = informe;
crystalReportViewer1.SelectionFormula = cadenaSelect;
          }

El valor de cadena podría ser por ejemplo:

cadenaSelect = "{paciente.p_codigo}=11 AND {consulta.c_codigo}=21";

Y ya tenemos listos tanto el informe como el visor lo único que nos


falta es mostrarlo para ello en donde queramos lo que debemos hacer
es declarar e instanciar un VisorDeInformes por ejemplo en nuestra
clase Principal en el evento Clic de un botón pondríamos:

 
private void BInforme_Click(object sender, System.EventArgs e)
{
      try
{
            VisorDeInformes visor = new VisorDeInformes);
visor.ShowDialog(this);
}

catch(Exception ex)
{
MessageBox.Show(ex.Message, “Excepcion”);
}
}

Probamos y si todo ha salido bien nos debería de aparecer el visor


con el informe y los datos seleccionados.

Problemas conocidos:

Si el path de la base de datos es muy grande, más de 255


caracteres se produce una excepción por buffer insuficiente.

En el momento en que se cambie de sitio la base de datos, en este


ejemplo el archivo de ACCESS, el informe no encontrara la misma y
lanzará una excepción.
Si se esta probando el proyecto en modo debug y pasamos a
modo release para terminar la aplicación habrá que tener en cuenta este
cambio en el path de la base de datos.