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 ([email protected])

 


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.



 


ir al ndice