Sie sind auf Seite 1von 80

Tutoriales y cdigo de ejemplo Cristal Reports

Esta seccin presenta una gran seleccin de tutoriales que permite trabajar con Crystal Reports para Visual Studio 2005. Cada tutorial le gua paso a paso en todo el proceso de creacin de proyectos que proporciona soluciones para una serie de casos de elaboracin de informes. Se recomienda realizar varios de los tutoriales para familiarizarse con los mtodos prcticos de trabajo en de trabajo en Crystal Reports para Visual Studio 2005. Cada tutorial va acompaado de proyectos de cdigo de ejemplo que muestran la versin finalizada del proyecto, escrita en C# y Visual Basic. La mayora de estos proyectos se facilitan como sitios Web y proyectos para Windows, excepto los diseados especficamente para utilizarse slo en la Web o slo en Windows. Haga clic en el vnculo adecuado para pasar a esa seccin:

Cdigo de ejemplo Tutoriales del modelo de objeto CrystalReportViewer Tutoriales del modelo de objetos ReportDocument Tutoriales de cdigo reducido en Visual Studio 2005 Tutoriales de conectividad de datos Otros tutoriales

Cdigo de ejemplo
Los cdigos de ejemplo son proyectos finalizados basados en las instrucciones facilitadas en los tutoriales. Para reproducir el cdigo de ejemplo, deber seguir los procedimientos de los tutoriales. Cada tutorial va acompaado de proyectos de cdigo de ejemplo de C# y Visual Basic que muestran la versin finalizada del proyecto. La mayora de estos proyectos se facilitan como sitios Web y proyectos para Windows, excepto los diseados especficamente para utilizarse slo en la Web o slo en Windows. En Crystal Reports para Visual Studio 2005, el cdigo de ejemplo se instala cuando se ejecuta el archivo de instalacin TutorialsSampleCodeProjects.msi. Para ubicar el archivo de instalacin, vea Directorio de cdigo de ejemplo de los tutoriales. Modelo de objetos CrystalReportViewer

Nombre del tutorial


Conectar con una base de datos segura de SQL Server

Nombre de la carpeta del cdigo de ejemplo


Sitio Web en C#: CS_Web_CRVObjMod_DBLogon Proyecto para Windows en C#: CS_Win_CRVObjMod_DBLogon Sitio Web en Visual Basic: VB_Web_CRVObjMod_DBLogon Proyecto para Windows en Visual Basic: VB_Win_CRVObjMod_DBLogon

Leer y configurar parmetros discretos

Sitio Web en C#: CS_Web_CRVObjMod_Parameters Proyecto para Windows en C#:

CS_Win_CRVObjMod_Parameters Sitio Web en Visual Basic: VB_Web_CRVObjMod_Parameters Proyecto para Windows en Visual Basic: VB_Win_CRVObjMod_Parameters Leer y configurar parmetros de rango para un subinforme Sitio Web en C#: CS_Web_CRVObjMod_ParametersSubrpt Proyecto para Windows en C#: CS_Win_CRVObjMod_ParametersSubrpt Sitio Web en Visual Basic: VB_Web_CRVObjMod_ParametersSubrpt Proyecto para Windows en Visual Basic: VB_Win_CRVObjMod_ParametersSubrpt Filtrar datos con frmulas de seleccin Sitio Web en C#: CS_Web_CRVObjMod_FilteringData Proyecto para Windows en C#: CS_Win_CRVObjMod_FilteringData Sitio Web en Visual Basic: VB_Web_CRVObjMod_FilteringData Proyecto para Windows en Visual Basic: VB_Win_CRVObjMod_FilteringData Personalizar el control CrystalReportViewer Sitio Web en C#: CS_Web_CRVObjMod_CustomizeViewer Proyecto para Windows en C#: CS_Win_CRVObjMod_CustomizeViewer Sitio Web en Visual Basic: VB_Web_CRVObjMod_CustomizeViewer Proyecto para Windows en Visual Basic: VB_Win_CRVObjMod_CustomizeViewer Modelo de objetos ReportDocument

Nombre del tutorial


Almacenar el modelo de objetos ReportDocument

Archivo de cdigo de ejemplo


Sitio Web en C#: CS_Web_RDObjMod_Session

utilizando Session Sitio Web en Visual Basic: VB_Web_RDObjMod_Session Conectar con una base de datos segura de SQL Server utilizando Autenticacin de SQL Proyecto para Windows en C#: CS_Win_RDObjMod_DBLogon Sitio Web en Visual Basic: VB_Web_RDObjMod_DBLogon Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_DBLogon Conectar con una base de datos segura de SQL Server utilizando Seguridad integrada Sitio Web en C#: CS_Web_RDObjMod_DBLogonIntegratedSecurity Proyecto para Windows en C#: CS_Win_RDObjMod_DBLogonIntegratedSecurity Sitio Web en Visual Basic: VB_Web_RDObjMod_DBLogonIntegratedSecurity Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_DBLogonIntegratedSecurity Conectar con una base de datos segura de SQL Server con un subinforme Sitio Web en C#: CS_Web_RDObjMod_DBLogonSubrpt Proyecto para Windows en C#: CS_Win_RDObjMod_DBLogonSubrpt Sitio Web en Visual Basic: VB_Web_RDObjMod_DBLogonSubrpt Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_DBLogonSubrpt Leer y configurar parmetros discretos Sitio Web en C#: CS_Web_RDObjMod_Parameters Proyecto para Windows en C#: CS_Win_RDObjMod_Parameters Sitio Web en Visual Basic: VB_Web_RDObjMod_Parameters Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_Parameters Sitio Web en C#: CS_Web_RDObjMod_DBLogon

Leer y configurar parmetros con un subinforme

Sitio Web en C#: CS_Web_RDObjMod_ParametersSubrpt Proyecto para Windows en C#: CS_Win_RDObjMod_ParametersSubrpt Sitio Web en Visual Basic: VB_Web_RDObjMod_ParametersSubrpt Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_ParametersSubrpt

Exportar a varios formatos

Sitio Web en C#: CS_Web_RDObjMod_Export Proyecto para Windows en C#: CS_Win_RDObjMod_Export Sitio Web en Visual Basic: VB_Web_RDObjMod_Export Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_Export

Imprimir y configurar opciones de impresin

Sitio Web en C#: CS_Web_RDObjMod_SetPrintOptions Proyecto para Windows en C#: CS_Win_RDObjMod_SetPrintOptions Sitio Web en Visual Basic: VB_Web_RDObjMod_SetPrintOptions Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_SetPrintOptions

Filtrar datos con frmulas de seleccin

Sitio Web en C#: CS_Web_RDObjMod_FilteringData Proyecto para Windows en C#: CS_Win_RDObjMod_FilteringData Sitio Web en Visual Basic: VB_Web_RDObjMod_FilteringData Proyecto para Windows en Visual Basic: VB_Win_RDObjMod_FilteringData

Presentacin de elementos de informes con el control CrystalReportViewer

Sitio Web en C#: CS_Web_RDObjMod_ReportParts Sitio Web en Visual Basic:

VB_Web_RDObjMod_ReportParts Tutoriales de cdigo reducido en Visual Studio 2005

Nombre del tutorial


Crystal Reports mediante tareas inteligentes

Archivo de cdigo de ejemplo


CS_Web_ReducedCode_WebSiteSetup Sitio Web en Visual Basic: VB_Web_ReducedCode_WebSiteSetup

Configuracin de sitios Web de cdigo reducido con Sitio Web en C#:

Configuracin de proyectos de Windows de cdigo reducido con Crystal Reports mediante tareas inteligentes

Proyecto para Windows en C#: CS_Win_ReducedCode_ProjectSetup Proyecto para Windows en Visual Basic: VB_Win_ReducedCode_ProjectSetup

Conexin de base de datos segura de cdigo reducido en un sitio Web

Sitio Web en C#: CS_Web_ReducedCode_DBLogon Sitio Web en Visual Basic: VB_Web_ReducedCode_DBLogon

Configurar los parmetros de cdigo reducido en un sitio Web

Sitio Web en C#: CS_Web_ReducedCode_Parameters Sitio Web en Visual Basic: VB_Web_ReducedCode_Parameters

Datos de informes de cdigo reducido a otros controles en un sitio Web

Sitio Web en C#: CS_Web_ReducedCode_ReportData Sitio Web en Visual Basic: VB_Web_ReducedCode_ReportData

Datos de informes de cdigo reducido a otros controles en una aplicacin Windows

Aplicacin Windows en C#: CS_Win_ReducedCode_ReportData Aplicacin para Windows en Visual Basic: VB_Win_ReducedCode_ReportData

Conectividad de datos

Nombre del tutorial


Crear DataSets ADO.NET conectarse a ellos

Nombre de la carpeta del cdigo de ejemplo


Sitio Web en C#: CS_Web_Data_DataSets Proyecto para Windows en C#: CS_Win_Data_DataSets Sitio Web en Visual Basic: VB_Web_Data_DataSets

Proyecto para Windows en Visual Basic: VB_Win_Data_DataSets Conectar a mtodos IDataReader Sitio Web en C#: CS_Web_Data_IDataReader Proyecto para Windows en C#: CS_Win_Data_IDataReader Sitio Web en Visual Basic: VB_Web_Data_IDataReader Proyecto para Windows en Visual Basic: VB_Win_Data_IDataReader Conectar a colecciones de objetos Sitio Web en C#: CS_Web_Data_ObjectCollection Sitio Web en Visual Basic: VB_Web_Data_ObjectCollection Otros tutoriales

Nombre del tutorial


Configurar la compatibilidad con clientes multilinges

Nombre de la carpeta del cdigo de ejemplo


Sitio Web en C#: CS_Web_Multilingual Proyecto para Windows en C#: CS_Win_Multilingual Sitio Web en Visual Basic: VB_Web_Multilingual Proyecto para Windows en Visual Basic: VB_Win_Multilingual

Crear una biblioteca de funciones del usuario

Biblioteca de clases de C#: CRUFL_CS_ExchangeRate Biblioteca de clases de VB: CRUFL_VB_ExchangeRate

Tutorial: Rellenar una lista desplegable de informes Sitio Web en C#: CS_Web_DrpFileDir desde el directorio de archivos Sitio Web en VB: VB_Web_DrpFileDir Tutorial: Rellenar una lista desplegable de informes Sitio Web en C#: CS_Web_WebService desde un servicio Web Sitio Web en VB: VB_Web_WebService

Tutoriales del modelo de objeto CrystalReportViewer

Los tutoriales de esta seccin utilizan los mtodos y las propiedades de la clase CrystalReportViewer y las clases del espacio de nombres CrystalDecisions.Shared. Nota Si desea hacer referencia al diagrama del modelo de objetos CrystalReportViewer al realizar estos tutoriales, vea Diagrama del modelo de objetos. Haga clic en el vnculo adecuado para pasar a esa seccin:

Conectar con una base de datos segura de SQL Server Leer y configurar parmetros discretos Leer y configurar parmetros de rango para un subinforme Filtrar datos con frmulas de seleccin Personalizar el control CrystalReportViewer

Tutorial: Conectar con una base de datos segura de SQL Server


En este tutorial, aprender a agregar cdigo de conexin para mostrar un informe que contiene informacin de una base de datos segura de SQL Server. Haga clic en el vnculo adecuado para pasar a esa seccin:

Introduccin Crear un informe conectado a una base de datos segura de SQL Server Enlazar el informe sin cdigo de conexin Agregar el cdigo de conexin del informe Agregar la posibilidad de cambiar la ubicacin de la base de datos en tiempo de ejecucin Conclusin

Introduccin
Cuando utilice el modelo de objetos CrystalReportViewer para conectar con una base de datos segura de SQL Server, debe usar clases del espacio de nombres CrystalDecisions.Shared. Las propiedades de la clase ConnectionInfo se utilizan para conectar con el servidor de base de datos u otros orgenes de datos ODBC. En este tutorial, establecer las propiedades ServerName, DatabaseName, UserID y Password. Si decide establecer nicamente las propiedades DatabaseName, UserID y Password, se conectar con el servidor predeterminado de la base de datos especificada en el informe. Sin embargo, si elige asignar una propiedad ServerName alternativa, podr redirigir el informe a un servidor diferente en tiempo de ejecucin. Obtendr la instancia de TableLogOnInfos de la propiedad LogOnInfo del control CrystalReportViewer. A continuacin, asignar la instancia de ConnectionInfo a cada objeto TableLogOnInfo de la instancia de TableLogOnInfos. El cdigo de conexin de este tutorial tambin funciona para los subinformes insertados en el informe principal. Para el modelo de objetos ReportDocument, debe modificar el cdigo con el fin de que funcione para los subinformes (vea Conectar con una base de datos segura de SQL Server con un subinforme). Para realizar este tutorial mediante el modelo de objetos ReportDocument, vea Conectar con una base de datos segura de SQL Server mediante el modelo de objetos ReportDocument. El modelo de objetos ReportDocument se recomienda con respecto al modelo de objetos CrystalReportViewer. Para obtener ms informacin sobre el modelo de objetos que se debe utilizar, vea Cul es el modelo de objetos que se debe utilizar?. Contine con Crear un informe conectado a una base de datos segura de SQL Server.

Crear un informe conectado a una base de datos segura de SQL Server


Para comenzar, cree un informe que obtenga su informacin de la base de datos Northwind. Nota Northwind es una base de datos de muestra que se proporciona con SQL Server.

Este tutorial requiere que se configuren algunos parmetros como requisito previo. Requisitos previos de configuracin de la base de datos 1. Configuracin de SQL Server: Si tiene instalado SQL Server (o la versin OEM, MSDE), debe configurarse de modo que requiera la Autenticacin de SQL Server. Si no tiene instalado SQL Server (ni la versin OEM, MSDE), debe instalar MSDE con la autenticacin de SQL Server establecida en "True". 2. La base de datos Northwind incluida con SQL Server se debe instalar y verificar que requiere la Autenticacin de SQL Server. 3. Se debe crear una cuenta de acceso limitado para utilizase dentro del sitio Web. Para instalar MSDE con la autenticacin de SQL Server, o la base de datos Northwind, vaya a las siguientes secciones de Configuracin del sistema de esta documentacin:

Instalacin de MSDE con autenticacin de Windows o SQL Server Instalacin de la base de datos Northwind Seguridad: Crear una cuenta de acceso limitado a la base de datos

Una vez configurados SQL Server y la base de datos Northwind de acuerdo a las secciones anteriores, ya podr crear un informe que obtenga su informacin de la base de datos Northwind de forma segura. Para crear un informe con datos seguros de la base de datos Northwind Nota Este procedimiento slo funciona con un proyecto creado a partir de la Configuracin de proyectos. La Configuracin de proyectos contiene referencias especficas a espacios de nombres y configuracin de cdigos necesarios para este procedimiento, y ste no se podr completar sin dicha configuracin. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasos de Configuracin de proyectos.

1. 2. 3.

En Explorador de soluciones, haga clic con el botn derecho en el nombre de proyecto en negrita, elija Agregar y, a continuacin, haga clic en Agregar nuevo elemento. En el cuadro de dilogo Agregar nuevo elemento, en la vista Plantillas, seleccione la plantilla Crystal Report. En el campo Nombre, escriba "NorthwindCustomers.rpt" y, a continuacin, haga clic en Abrir. Nota Si an no se ha registrado, se le puede pedir que se registre. Para saber cmo registrarse, vea Registro y cdigo de clave de Crystal Reports.

4. 5.

En el panel Crear un nuevo documento de Crystal Report del cuadro de dilogo Galera de Crystal Report, seleccione Usar asistente de informes. En el panel Elegir un Asistente, seleccione Estndar. Haga clic en Aceptar. Aparecer la ventana Asistente para la creacin de informes estndar.

6. 7.

En el panel Orgenes de datos disponibles, expanda la carpeta Crear nueva conexin. En la subcarpeta que se abre, expanda la carpeta OLE DB (ADO).

Aparecer la ventana OLE DB (ADO).

8. 9. 10.

Seleccione Proveedor de OLE DB Microsoft para SQL Server y, a continuacin, haga clic en Siguiente. Especifique los valores del servidor de base de datos, el id. de usuario y la contrasea en los campos Servidor, Id. de usuario y Contrasea. En la lista desplegable Base de datos, seleccione "Northwind". Deje desactivada la casilla de verificacin Seguridad integrada porque est usando la autenticacin de SQL Server en lugar de la autenticacin de NT.

11. Haga clic en Finalizar.


Ahora se expandir la carpeta OLE DB, mostrando el servidor de base de datos y, dentro de l, la base de datos Northwind.

12. Expanda los nodos Northwind, dbo y Tablas, y seleccione la tabla Clientes. 13. Haga clic en el smbolo > para mover la tabla al panel Tablas seleccionadas y, a continuacin,
haga clic en Siguiente.

14. Expanda la tabla Clientes y, a continuacin, mantenga presionada la tecla Ctrl mientras hace 15. 16.

clic en CompanyName, ContactName y City. Haga clic en el smbolo > para mover estos campos al panel Campos para mostrar y, a continuacin, haga clic en Siguiente. En el panel Campos disponibles, en Campos del informe, seleccione Clientes.Ciudad, haga clic en el smbolo > para mover el campo al panel Agrupar por y, a continuacin, haga clic en Finalizar. Se crear el informe NorthwindCustomers y se cargar en la ventana principal de Visual Studio.

Ahora ya podr enlazar el informe con el control CrystalReportViewer. Contine con Enlazar el informe sin cdigo de conexin.

Enlazar el informe sin cdigo de conexin


En Configuracin de proyectos, ha colocado un control CrystalReportViewer en el formulario Web Forms o Windows Forms. En el paso anterior, ha agregado un informe NorthwindCustomers al proyecto. En esta seccin enlazar la ruta de directorio de archivos del informe NorthwindCustomers al control CrystalReportViewer. A continuacin, probar si el informe se muestra correctamente cuando no se ha establecido el cdigo de conexin. Para enlazar la ruta de directorio de archivos del informe NorthwindCustomers al control CrystalReportViewer 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo. 3. Busque el mtodo ConfigureCrystalReports(), que ha creado en Configuracin de proyectos. 4. Declare una variable de cadena, llmela reportPath y asgnele una ruta en tiempo de ejecucin al informe local. Esta ruta se determina de forma diferente para los sitios Web y los proyectos para Windows:

Para un sitio Web, pase el nombre del archivo de informe local como un parmetro de cadena en el mtodo Server.MapPath(). Esto asigna el informe local a la ruta del directorio de archivos de la unidad de disco duro en tiempo de ejecucin. [Visual Basic]

Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt")


[C#]

string reportPath = Server.MapPath("NorthwindCustomers.rpt");


Para un proyecto para Windows, concatene la propiedad Application.StartupPath con una barra invertida y el nombre del archivo de informe local. Esto asigna el informe al mismo directorio del archivo ejecutable de Windows. Nota En la fase de compilacin se copiar el informe al directorio que contiene el archivo ejecutable. [Visual Basic]

Dim reportPath As String = Application.StartupPath & "\" & "NorthwindCustomers.rpt"


[C#]

string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";


5. Asigne la ruta del directorio de archivos del informe NorthwindCustomers a la propiedad ReportSource del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.ReportSource = reportPath
[C#]

crystalReportViewer.ReportSource = reportPath;
Ahora estar listo para crear y ejecutar el proyecto. Est previsto que falle la carga del informe, porque an no se ha escrito el cdigo para conectarse con la base de datos. Para probar la carga del informe NorthwindCustomers

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. Si usa un informe no incrustado en un proyecto para Windows, localice el archivo ejecutable de Windows compilado en el subdirectorio \bin\debug\y, a continuacin, copie el informe en dicho subdirectorio. Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecucin, el informe deber estar almacenado en el mismo directorio que el archivo ejecutable de Windows.

4.

En el men Depurar, haga clic en Iniciar.

Nota Si est desarrollando un sitio Web en Visual Studio 2005 y es la primera vez que ha iniciado la depuracin, aparecer un cuadro de dilogo en el que se indica que el archivo Web.config se debe modificar. Haga clic en el botn Aceptar para habilitar la depuracin. No se mostrar el informe NorthwindCustomers. Se mostrar despus de agregar el cdigo de conexin con la base de datos. Nota Los resultados pueden variar, segn la versin de Crystal Reports que utilice. Por ejemplo, si tiene instalado Crystal Reports 10 o una versin superior, se le pedir informacin de conexin a la base de datos para ese informe. Esta es una nueva funcin de Crystal Reports Developer y Crystal Reports para Visual Studio 2005. Si ejecuta una versin anterior de Crystal Reports, se produce una excepcin. En cualquier caso, debe seguir el siguiente procedimiento de pasos para crear una aplicacin totalmente funcional.

5.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Agregar el cdigo de conexin del informe.

Agregar el cdigo de conexin del informe


Ahora estar preparado para agregar el cdigo de conexin del informe a la clase de cdigo subyacente. Va a empezar por crear un mtodo de ayuda privado, SetDBLogonForReport(). Para crear y codificar el mtodo SetDBLogonForReport() 1. Regrese a la clase de cdigo subyacente de este Web Forms o Windows Forms. 2. En la parte inferior de la clase, cree un nuevo mtodo privado denominado SetDBLogonForReport() con ConnectionInfo pasado en la firma de mtodo. [Visual Basic]

Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo) End Sub


[C#]

private void SetDBLogonForReport(ConnectionInfo connectionInfo) { }


3. Con este mtodo, se obtiene la instancia de TableLogOnInfos de la propiedad LogOnInfo de la clase CrystalReportViewer. Nota Para que la clase TableLogOnInfos sea accesible, incluya una instruccin "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de cdigo lateral del espacio de nombres CrystalDecisions.Shared. (Esta declaracin se ha agregado en Configuracin de proyectos.) TableLogOnInfos es una clase indizada que contiene instancias de la clase TableLogOnInfo. [Visual Basic]

Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer.LogOnInfo

[C#]

TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;


4. Cree un bucle foreach que recorra cada instancia de TableLogOnInfo de la instancia de clase de ndice de TableLogOnInfos. [Visual Basic]

For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos Next


[C#]

foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos) { }


5. En el bucle foreach, establezca la propiedad ConnectionInfo de TableLogOnInfo en el parmetro ConnectionInfo. [Visual Basic]

myTableLogOnInfo.ConnectionInfo = myConnectionInfo
[C#]

tableLogOnInfo.ConnectionInfo = connectionInfo;
El procedimiento de este paso ha creado un mtodo para establecer la conexin de la base de datos. Sin embargo, debe modificar el mtodo ConfigureCrystalReports() para direccionar este mtodo, con el fin de que el informe sepa que tiene informacin sobre conexin de base de datos. La modificacin del mtodo ConfigureCrystalReports() requiere dos acciones:

Configurar la instancia de ConnectionInfo. Llamar al mtodo SetDBLogonForReport().

Para modificar el mtodo ConfigureCrystalReports() para direccionar el cdigo de conexin con la base de datos

1.

En el mtodo ConfigureCrystalReports(), agregue un par de saltos de lnea en el cdigo sobre la lnea que enlaza el informe al control CrystalReportViewer. 2. En los saltos de lnea, declare y cree una instancia de la clase ConnectionInfo. [Visual Basic]

Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()


[C#]

ConnectionInfo connectionInfo = new ConnectionInfo();


3. Establezca las propiedades DatabaseName, UserID y Password de la instancia de ConnectionInfo.

Nota Por razones de seguridad, es importante utilizar una cuenta de base de datos con permisos de acceso limitado. Para obtener ms informacin, vase Seguridad: Crear una cuenta de acceso limitado a la base de datos. En el cdigo que escriba, reemplace la contrasea de ejemplo 1234 (que se muestra ms abajo) por su propia contrasea. [Visual Basic]

myConnectionInfo.DatabaseName = "Northwind" myConnectionInfo.UserID = "limitedPermissionAccount" myConnectionInfo.Password = "1234"


[C#]

connectionInfo.DatabaseName = "Northwind"; connectionInfo.UserID = "limitedPermissionAccount"; connectionInfo.Password = "1234";

4.

Debajo del cdigo que enlaza el control CrystalReportViewer, llame al mtodo SetDBLogonForReport() y psele la instancia de ConnectionInfo. [Visual Basic]

SetDBLogonForReport(myConnectionInfo)
[C#]

SetDBLogonForReport(connectionInfo);
Ahora estar listo para crear y ejecutar el proyecto. El informe se debe cargar correctamente, ya que ha agregado cdigo para conectar con la base de datos. Para probar la carga del informe NorthwindCustomers

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. El informe NorthwindCustomers se mostrar correctamente.

4.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

En la siguiente seccin, aprender a cambiar la ubicacin de la base de datos en tiempo de ejecucin. Contine con Agregar la posibilidad de cambiar la ubicacin de la base de datos en tiempo de ejecucin.

Agregar la posibilidad de cambiar la ubicacin de la base de datos en tiempo de ejecucin


En esta seccin, aprender a cambiar la ubicacin de la base de datos en tiempo de ejecucin. Slo requiere una pequea modificacin de la instancia de ConnectionInfo. Para cambiar la ubicacin de la base de datos en tiempo de ejecucin

1.

En el mtodo ConfigureCrystalReports(), cree un par de saltos de lnea en el cdigo detrs de la lnea que declara y crea una instancia de la clase ConnectionInfo. 2. En los saltos de lnea, establezca la propiedad ServerName de la instancia de ConnectionInfo. Nota En el cdigo que escriba, reemplace el nombre del servidor de ejemplo DevDatabase (que aparece ms abajo) por el nombre de su servidor. [Visual Basic]

myConnectionInfo.ServerName = "DevDatabase"
[C#]

connectionInfo.ServerName = "DevDatabase";
Ahora estar listo para crear y ejecutar el proyecto. El informe se debe redirigir al servidor de base de datos alternativo en tiempo de ejecucin. Para probar si el informe se puede restablecer a un servidor de base de datos alternativo en tiempo de ejecucin

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. El informe NorthwindCustomers se mostrar correctamente.

4.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Conclusin.

Conclusin
Ha configurado correctamente el cdigo para conectar con la base de datos de SQL Server y cambiar la ubicacin de la base de datos en tiempo de ejecucin. Cuando pueda agregar subinformes al informe principal (NorthwindCustomers.rpt), no necesita cdigo adicional.

Tutorial: Leer y configurar parmetros discretos


En este tutorial aprender a crear un informe cuyos datos se puedan filtrar basndose en un parmetro discreto. Haga clic en el vnculo adecuado para pasar a esa seccin:

Introduccin Crear un informe con parmetros

Enlazar el informe Configurar parmetros manualmente en el cdigo Crear un control ListBox que muestre los parmetros predeterminados Configurar parmetros a partir de las selecciones de ListBox Configurar la persistencia de parmetros Conclusin Informacin de cdigo de ejemplo

Introduccin
Un parmetro discreto es un nico valor, a diferencia de un parmetro de rango, que hace referencia a un rango de valores. A los elementos de texto (como ciudades) se tiene acceso normalmente mediante parmetros discretos. A los elementos numricos(como sueldos de empleados) se suele acceder mediante parmetros de rango. En este tutorial establecer un valor de un parmetro discreto para ver un informe de clientes basado en un solo campo. El informe muestra nicamente los clientes que viven en las ciudades seleccionadas en una lista de ciudades. La lista de ciudades proviene de los valores predeterminados del parmetro de ciudad. Dichos valores predeterminados del parmetro de ciudad se encapsulan dentro del informe. Para empezar, va a crear un informe de clientes con un parmetro de ciudad. Los datos del informe proceden de la base de datos de muestra incluida en Crystal Reports para Visual Studio. Al crear una instancia del informe en el cdigo, generar un ArrayList que contiene nombres de ciudades (Pars, Tokio) y pasar dicha instancia de ArrayList a un mtodo de ayuda que establezca estos nombres como los valores actuales del parmetro de ciudad. A continuacin, enlazar el informe al control CrystalReportViewer y ver el informe que mostrar nicamente los clientes que vivan en Pars y Tokio. En la siguiente parte del tutorial, realizar las siguientes acciones:

Crear un mtodo que obtenga todos los valores predeterminados y los devuelva en un ArrayList. Agregar un control ListBox al formulario y rellenarlo a partir de ArrayList. Agregar un control Button para volver a mostrar el informe basado en las selecciones de ListBox.

En la parte final del tutorial, codificar el evento de clic de botn para obtener los elementos seleccionados en el control ListBox y establecerlos para que sean los valores actuales del parmetro de ciudad. El informe se volver a mostrar incluyendo nicamente los clientes que vivan en las ciudades seleccionadas en el control ListBox. Este tutorial tambin se puede realizar con clases del modelo de objetos ReportDocument; vea Leer y configurar parmetros discretos mediante el modelo de objetos ReportDocument. Para obtener ms informacin sobre el modelo de objetos que se debe utilizar, vea Cul es el modelo de objetos que se debe utilizar?. Contine con Crear un informe con parmetros.

Crear un informe con parmetros


Para empezar, cree un informe que obtenga su informacin de la base de datos de muestra de Microsoft Access que se incluye con Crystal Reports. Nota Xtreme.mdb es la base de datos de muestra incluida con Crystal Reports. Para localizar el archivo xtreme.mdb correspondiente a su versin de Crystal Reports en el disco duro, vea Ubicacin de la base de datos de ejemplo Xtreme. Tiene que conectarse a la base de datos a travs de su entrada ODBC DSN. Para saber el nombre de esta entrada segn su versin de Crystal Reports, vea Entrada ODBC DSN para la base de datos de ejemplo Xtreme.

Para crear un informe con parmetros Nota Este procedimiento slo funciona con un proyecto creado a partir de la Configuracin de proyectos. La Configuracin de proyectos contiene referencias especficas a espacios de nombres y configuracin de cdigos necesarios para este procedimiento, y ste no se podr completar sin dicha configuracin. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasos de Configuracin de proyectos.

1. 2. 3.

En Explorador de soluciones, haga clic con el botn derecho en el nombre de proyecto en negrita, elija Agregar y, a continuacin, haga clic en Agregar nuevo elemento. En el cuadro de dilogo Agregar nuevo elemento, en la vista Plantillas, seleccione la plantilla Crystal Report. En el campo Nombre, escriba el nombre "CustomersByCity.rpt" y haga clic en Agregar. Nota En Visual Studio .NET 2002 o 2003, el botn se denomina Abrir.

Si no se ha registrado anteriormente, se le pedir que se registre. Para saber cmo registrarse, vea Registro y cdigo de clave de Crystal Reports.

4. 5. 6.

En el panel Crear un nuevo documento de Crystal Report del cuadro de dilogo Galera de Crystal Report, seleccione Usar asistente de informes. En el panel Elegir un Asistente, seleccione Estndar y, a continuacin, haga clic en Aceptar. En el panel Orgenes de datos disponibles de la ventana Asistente para la creacin de informes estndar, expanda la carpeta Crear nueva conexin. Nota En Visual Studio .NET 2002 o 2003, donde Crystal Reports no se ha actualizado a Crystal Reports Developer, no existe la carpeta Crear nueva conexin; el contenido se mostrar en el nivel superior.

7. 8.

En la subcarpeta que se abre, expanda la carpeta ODBC (RDO). En la ventana ODBC (RDO), seleccione la entrada DSN de ODBC correcta para su versin de Crystal Reports, como se explica en Entrada DSN de ODBC para la base de datos de ejemplo Xtreme y, a continuacin, haga clic en Finalizar. Se expandir la carpeta ODBC (RDO) y mostrar la base de datos de ejemplo Xtreme.

9. 10. 11. 12.

Expanda el nodo Tablas, haga doble clic en la tabla Cliente para mover la tabla al panel Tablas seleccionadas y, a continuacin, haga clic en Siguiente. Expanda la tabla Cliente, mantenga presionada CTRL y haga clic en Nombre del cliente, Ttulo del contacto, Direccin1, Apellido del contacto y Ciudad. Haga clic en el smbolo > para mover estos campos en el panel Campos para mostrar y, a continuacin, haga clic en el botn Siguiente. En el panel Campos disponibles, en Campos del informe, haga doble clic en Cliente.Ciudad para mover el campo al panel Agrupar por y, a continuacin, haga clic en el botn Finalizar. Se crear el informe CustomersByCity y se cargar en la ventana principal de Visual Studio.

Ahora ya podr agregar un parmetro denominado Ciudad y ocuparlo con valores predeterminados. El Explorador de campos debe estar visible, porque proporciona acceso a las distintas funciones del informe, incluidos los parmetros. Para ver el Explorador de campos, en el men Crystal Reports, haga clic en Explorador de campos. Para agregar un parmetro Ciudad

1.

Si el Explorador de campos no est visible, en la barra de herramientas de Crystal Reports, haga clic en Cambiar la vista del campo. Nota Otro modo de ver el Explorador de campos es haciendo clic en Explorador de campos en el men Crystal Reports.

2. 3.

En el Explorador de campos, haga clic con el botn derecho en Campos de parmetro y seleccione Nuevo... En el cuadro de dilogo Crear campo de parmetro: Defina el Nombre como "Ciudad". Defina el Texto de solicitud como "Seleccione una o varias ciudades". Establezca Tipo de valor en Cadena. Seleccione Permitir valores mltiples. Seleccione Valores discretos. Haga clic en Valores predeterminados... Nota En Visual Studio .NET 2002 o 2003 donde Crystal Reports no se ha actualizado a Crystal Reports Developer, este botn se denomina Establecer valores predeterminados.

4.

5. 6.

En el cuadro de dilogo Establecer valores predeterminados: Defina Examinar tabla como "Cliente". Defina Examinar campo como "Ciudad". Haga clic en >> (la doble flecha hacia la derecha) para mover toda la lista de ciudades a la lista Valores predeterminados. Haga clic en Aceptar para cerrar el cuadro de dilogo Establecer valores predeterminados. Haga clic en Aceptar para cerrar el cuadro de dilogo Crear campo de parmetro.

Acaba de establecer los valores predeterminados para que contengan una amplia lista de ciudades. Posteriormente, en este tutorial, va a tener acceso a esta misma lista de valores predeterminados mediante programacin, a travs de la propiedad ParameterFieldInfo de la clase CrystalReportViewer. Ahora va a utilizar el Asistente de seleccin para establecer una frmula que conecte la columna de base de datos Ciudad con el campo de parmetro Ciudad creado recientemente. Para conectar el parmetro Ciudad a la columna de base de datos Ciudad

1. 2. 3. 4.

En la barra de herramientas de Crystal Reports, haga clic en Asistente de seleccin. En el cuadro de dilogo Elegir campo, en Campos del informe, seleccione Cliente.Ciudad y, a continuacin, haga clic en Aceptar. En el cuadro de dilogo Asistente de seleccin, en la ficha Cliente.Ciudad, establezca la lista desplegable como "es igual a". En la nueva lista desplegable que aparece a la derecha, seleccione la primera opcin de la lista, {?City} y, a continuacin, haga clic en Aceptar. Nota Esta seleccin, {?City}, es el parmetro Ciudad creado anteriormente.

5.

Desde el men Archivo, seleccione Guardar todo.

Ahora podr enlazar el informe al control CrystalReportViewer y establecer el parmetro de ciudad con dos valores iniciales, Pars y Tokio. Contine con Enlazar el informe.

Enlazar el informe

Al seguir las instrucciones de Configuracin de proyectos para preparar este tutorial, ha colocado un control CrystalReportViewer en el formulario Web Forms o Windows Forms. En los pasos anteriores, agreg un informe CustomersByCity al proyecto. En esta seccin enlazar la ruta de directorio de archivos del informe CustomersByCity al control CrystalReportViewer. A continuacin, probar si el informe se muestra correctamente cuando no se han establecido valores actuales para su campo de parmetro. Para enlazar la ruta de directorio de archivos del informe CustomersByCity al control CrystalReportViewer 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo para ver la clase de cdigo subyacente de este formulario Web Forms o Windows Forms. 3. Busque el mtodo ConfigureCrystalReports(), que ha creado en Configuracin de proyectos. 4. Declare una variable de cadena, llmela reportPath y asgnele una ruta en tiempo de ejecucin al informe local. Esta ruta se determina de forma diferente para los sitios Web y los proyectos para Windows: Para un sitio Web, pase el nombre del archivo de informe local como un parmetro de cadena en el mtodo Server.MapPath(). Esto asigna el informe local a la ruta del directorio de archivos de la unidad de disco duro en tiempo de ejecucin. [Visual Basic]

Dim reportPath As String = Server.MapPath("CustomersByCity.rpt")


[C#]

string reportPath = Server.MapPath("CustomersByCity.rpt");


Para un proyecto para Windows, concatene la propiedad Application.StartupPath con una barra invertida y el nombre del archivo de informe local. Esto asigna el informe al mismo directorio del archivo ejecutable de Windows. Nota En la fase de compilacin se copiar el informe al directorio que contiene el archivo ejecutable. [Visual Basic]

Dim reportPath As String = Application.StartupPath & "\" & "CustomersByCity.rpt"


[C#]

string reportPath = Application.StartupPath + "\\" + "CustomersByCity.rpt";


5. Asigne la ruta del directorio de archivos del informe CustomersByCity a la propiedad ReportSource del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.ReportSource = reportPath
[C#]

crystalReportViewer.ReportSource = reportPath;

Ahora estar listo para crear y ejecutar el proyecto. Est previsto que falle la carga del informe, porque an no se ha escrito el cdigo para establecer un valor para el campo de parmetro Ciudad. Para probar la carga del informe CustomersByCity

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. Si usa un informe no incrustado en un proyecto para Windows, localice el archivo ejecutable de Windows compilado en el subdirectorio \bin\ [Visual Basic] o \bin\debug\ [C#] y, a continuacin, copie el informe en dicho subdirectorio. Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecucin, el informe deber estar almacenado en el mismo directorio que el archivo ejecutable de Windows.

4.

En el men Depurar, haga clic en Iniciar. Nota Si est desarrollando un sitio Web en Visual Studio 2005 y es la primera vez que ha iniciado la depuracin, aparecer un cuadro de dilogo en el que se indica que el archivo Web.config se debe modificar. Haga clic en el botn Aceptar para habilitar la depuracin. No se muestra el informe CustomersByCity. Se muestra despus de agregar un valor para el parmetro Ciudad ms adelante en este tutorial. Nota Los resultados pueden variar, segn la versin de Crystal Reports que utilice. En versiones ms recientes, ver un formulario que le pedir que indique valores de parmetro para dicho informe. En versiones anteriores, se produce una excepcin "Falta el valor actual del campo de parmetro". En cualquiera caso, debe agregar cdigo adicional para que la aplicacin sea completamente funcional.

5.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Configurar parmetros manualmente en el cdigo.

Configurar parmetros manualmente en el cdigo


Ahora ya puede establecer dos valores ("Pars" y "Tokio") en el campo de parmetro Ciudad del informe CustomersByCity. Esto implica codificacin, que puede separar en los siguientes procesos:

Necesita una constante PARAMETER_FIELD_NAME para contener el nombre de campo de parmetro "Ciudad". El cdigo para agregar los valores actuales al parmetro Ciudad se utiliza en distintas partes de este tutorial; por lo tanto, este cdigo se crear como un mtodo de ayuda independiente. En el mtodo ConfigureCrystalReports(), va a agregar los parmetros "Pars" y "Tokio" a una instancia de ArrayList y a pasar el informe y la instancia de ArrayList al mtodo de ayuda para que se procesen.

Para crear una constante PARAMETER_FIELD_NAME 1. Regrese a la clase de cdigo subyacente de este Web Forms o Windows Forms. 2. En el nivel de clase, cree una nueva constante de cadena, PARAMETER_FIELD_NAME, y establezca su valor como "Ciudad". [Visual Basic]

Private Const PARAMETER_FIELD_NAME As String = "City"


[C#]

private const string PARAMETER_FIELD_NAME = "City";


Ahora ya puede crear el mtodo de ayuda que agregue los valores actuales al parmetro del informe. Para crear un mtodo de ayuda que agregue los valores actuales al parmetro del informe 1. Regrese a la clase de cdigo subyacente de este Web Forms o Windows Forms. 2. Sobre la firma de clase, agregue una declaracin "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase para el espacio de nombres System.Collections (si todava no se ha declarado este espacio de nombres). [Visual Basic]

Imports System.Collections
[C#]

using System.Collections;
Nota Esta declaracin se necesita para tener acceso a la clase ArrayList.

3.

En la parte inferior de la clase, cree un nuevo mtodo privado denominado SetCurrentValuesForParameterField() con dos variables en la firma del mtodo: ParameterFields y ArrayList. [Visual Basic]

Private Sub SetCurrentValuesForParameterField(ByVal myParameterFields As ParameterFields, ByVal myArrayList As ArrayList) End Sub
[C#]

private void SetCurrentValuesForParameterField(ParameterFields parameterFields, ArrayList arrayList) { }


4. En este mtodo, declare y cree una instancia de la clase indizada ParameterValues como la variable currentParameterValues. Nota Para que se pueda tener acceso a la clase ParameterValues, debe haber incluido una declaracin "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de cdigo subyacente del espacio de nombres CrystalDecisions.Shared. (Esta declaracin se ha agregado en Configuracin de proyectos.) [Visual Basic]

Dim currentParameterValues As ParameterValues = New ParameterValues()


[C#]

ParameterValues currentParameterValues = new ParameterValues();


5. Cree un bucle foreach para obtener todos los valores enviados (como el tipo Objeto) de la instancia de ArrayList. Nota En este mtodo, recupera valores de ArrayList. Posteriormente, va a escribir cdigo que agregue valores a ArrayList. [Visual Basic]

For Each submittedValue As Object In myArrayList Next


[C#]

foreach(object submittedValue in arrayList) { }


6. En el bucle foreach, declare y cree una instancia de la clase ParameterDiscreteValue. [Visual Basic]

Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue()


[C#]

ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();


7. En el bucle foreach, convierta submittedValue en una cadena y psela a la propiedad Value de la instancia de ParameterDiscreteValue. [Visual Basic]

myParameterDiscreteValue.Value = submittedValue.ToString()
[C#]

parameterDiscreteValue.Value = submittedValue.ToString();
8. En el bucle foreach, agregue la instancia de ParameterDiscreteValue a la clase indizada currentParameterValues. [Visual Basic]

currentParameterValues.Add(myParameterDiscreteValue)
[C#]

currentParameterValues.Add(parameterDiscreteValue);
Esto completar el cdigo en el bucle foreach. Coloque el cdigo restante (a partir de los pasos siguientes) despus del bucle foreach.

9. Fuera del bucle foreach, obtenga la instancia de ParameterField de la clase indizada ParameterFields que se basada en la entrada de ndice de la constante PARAMETER_FIELD_NAME. [Visual Basic]

Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME)


[C#]

ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];


10. Pase la instancia de currentParameterValues al mtodo CurrentValues de la instancia de ParameterField. [Visual Basic]

myParameterField.CurrentValues = currentParameterValues
[C#]

parameterField.CurrentValues = currentParameterValues;
Este procedimiento de varios pasos ha mostrado el modo de crear un mtodo que obtiene los valores enviados desde una instancia de ArrayList y los coloca como valores actuales en una instancia de ParameterField. Ahora, debe llamar a este mtodo antes de enlazar el informe al control CrystalReportViewer, para que el informe sepa que tiene configuracin de parmetros. Para llamar al mtodo SetCurrentValuesForParameterField () antes de enlazar el informe al control CrystalReportViewer

1.

En el mtodo ConfigureCrystalReports(), declare y cree una instancia de ArrayList encima de la lnea que enlaza el informe al control CrystalReportViewer. [Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()


[C#]

ArrayList arrayList = new ArrayList();


2. Agregue los nombres de ciudad "Pars" y "Tokio" como cadenas a la instancia de ArrayList. [Visual Basic]

myArrayList.Add("Paris") myArrayList.Add("Tokyo")
[C#]

arrayList.Add("Paris"); arrayList.Add("Tokyo");
3. Debajo del cdigo que enlaza el control CrystalReportViewer, obtenga la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer.

[Visual Basic]

Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfo


[C#]

ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;

4.

Llame al mtodo SetCurrentValuesForParameterField() y psele la instancia de ParameterFields y la instancia de ArrayList. [Visual Basic]

SetCurrentValuesForParameterField(myParameterFields, myArrayList)
[C#]

SetCurrentValuesForParameterField(parameterFields, arrayList);
Ahora estar listo para crear y ejecutar el proyecto. Se espera que el informe se muestre correctamente, porque ahora existe cdigo escrito para establecer los valores actuales en el campo de parmetro. Para probar la carga del informe CustomersByCity

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. El informe CustomersByCity aparecer correctamente, mostrando la lista de los clientes de Pars y Tokio.

4.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

En la siguiente seccin, aprender como obtener los valores predeterminados del campo de parmetro y establecer dichos valores en un control ListBox. stos se utilizan al final del tutorial para seleccionar nuevas ciudades dinmicamente y filtrar el informe basndose en las ciudades seleccionadas recientemente. Contine con Crear un control ListBox que muestre los parmetros predeterminados.

Crear un control ListBox que muestre los parmetros predeterminados


El resto del tutorial trata sobre la visualizacin de una lista completa de valores predeterminados del campo de parmetro en un control ListBox, y basado en las selecciones que realice en dicho control ListBox, volviendo a filtrar los contenidos del informe. En esta seccin aprender a rellenar el control ListBox con los valores predeterminados del campo de parmetro. Nota Recuerde que ya estableci los Valores predeterminados, una amplia lista de ciudades, al crear este informe al principio del tutorial.

Para hacerlo, deber agregar y configurar un control ListBox y, a continuacin, crear un mtodo de ayuda para rellenar el control ListBox. Para crear y configurar un control ListBox en el formulario 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Diseador. 3. Si est desarrollando un sitio Web, realice las siguientes acciones: a. Haga clic en el control CrystalReportViewer para seleccionarlo. b. Presione la FLECHA IZQUIERDA del teclado de modo que aparezca un cursor parpadeante y, a continuacin, presione INTRO. El control CrystalReportViewer bajar una lnea. 4. Si est desarrollando un proyecto de Windows, realice las siguientes acciones: a. Haga clic en el control CrystalReportViewer para seleccionarlo. b. En la ventana Propiedades, establezca Dock en "Bottom". c. Ajuste el tamao del control CrystalReportViewer, con el fin de que disponga del espacio necesario sobre l para un control ListBox. d. En la ventana Propiedades, establezca Anchor en "Top, Bottom, Left, Right". 5. En el Cuadro de herramientas, arrastre un control ListBox sobre el control CrystalReportViewer. Nota Si aparece una Tarea inteligente en ListBox (si se utiliza Visual Studio 2005), presione Esc para cerrarla.

6. 7.

Haga clic en el control ListBox para seleccionarlo. Desde la ventana Propiedades siga estos pasos: Establezca ID o Nombre en "defaultParameterValuesList". Establezca SelectionMode en "Multiple" (en un proyecto de Windows, "MultiExtended"). Desde el men Archivo, seleccione Guardar todo.

2.

Ahora ya podr crear un mtodo de ayuda que obtenga los valores predeterminados del campo de parmetro. Para crear un mtodo de ayuda que obtenga los valores predeterminados del campo de parmetro 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo. 3. En la parte inferior de la clase, cree un nuevo mtodo privado denominado GetDefaultValuesFromParameterField() que devuelva una instancia de ArrayList, habiendo pasado ParameterFields a la firma del mtodo. [Visual Basic]

Private Function GetDefaultValuesFromParameterField(ByVal myParameterFields As ParameterFields) As ArrayList End Function


[C#]

private ArrayList GetDefaultValuesFromParameterField(ParameterFields parameterFields)

{ }
4. Obtenga la instancia de ParameterField de la clase indizada ParameterFields basada en la entrada de ndice de la constante PARAMETER_FIELD_NAME. [Visual Basic]

Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME)


[C#]

ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];


5. Obtenga una clase indizada ParameterValues (como la variable defaultParameterValues) a partir de la propiedad DefaultValues de la instancia de ParameterField. [Visual Basic]

Dim defaultParameterValues As ParameterValues = myParameterField.DefaultValues


[C#]

ParameterValues defaultParameterValues = parameterField.DefaultValues;


6. Declare y cree una instancia de ArrayList. [Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()


[C#]

ArrayList arrayList = new ArrayList();


7. Cree un bucle foreach que obtenga cada instancia de ParameterValue a partir de defaultParameterValues. [Visual Basic]

For Each myParameterValue As ParameterValue In defaultParameterValues Next


[C#]

foreach(ParameterValue parameterValue in defaultParameterValues) { }


En el bucle foreach, cree ahora un bloque condicional anidado que busque valores de parmetros discretos (en oposicin a parmetros de rango). Existen dos versiones de este bloque condicional porque la API ha cambiado ligeramente en las distintas versiones de Crystal Reports para Visual Studio. Compruebe su API (mediante IntelliSense) para ver qu propiedad est disponible en ParameterValue:

8. Si la propiedad disponible es IsRange, en el bucle foreach, escriba este cdigo: [Visual Basic]

If (Not myParameterValue.IsRange) Then End If


[C#]

if(!parameterValue.IsRange) { }
9. O, si la propiedad disponible es Kind (DiscreteOrRangeKind, una enumeracin con tres valores: DiscreteValue, RangeValue, DiscreteAndRangeValue), escriba este cdigo, en el bucle foreach, en su lugar: [Visual Basic]

If (myParameterValue.Kind = DiscreteOrRangeKind.DiscreteValue) Then End If


[C#]

if(parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue) { }
10. En este bloque condicional anidado, proyecte la instancia de ParameterValue a su clase ampliada, DiscreteParameterValue. [Visual Basic]

Dim myParameterDiscreteValue As ParameterDiscreteValue = CType(myParameterValue, ParameterDiscreteValue)


[C#]

ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;


11. Adems, en el bloque condicional anidado, agregue la propiedad Value de la instancia de ParameterDiscreteValue (convertida en cadena) a la instancia de ArrayList. [Visual Basic]

myArrayList.Add(myParameterDiscreteValue.Value.ToString())
[C#]

arrayList.Add(parameterDiscreteValue.Value.ToString());
12. Fuera del bloque condicional y del bucle foreach, al final del mtodo, devuelva la instancia de ArrayList del mtodo.

[Visual Basic]

Return myArrayList
[C#]

return arrayList;
Ha obtenido los valores predeterminados del campo de parmetro y los ha devuelto del mtodo como un ArrayList. Ahora enlace este ArrayList al control ListBox defaultParameterValuesList. El cdigo vara ligeramente en funcin de si se utiliza un proyecto Web o un proyecto de Windows; por lo tanto, asegrese de que slo realiza el procedimiento para Web o para Windows. Para enlazar el ArrayList devuelto del mtodo al ListBox de un proyecto Web

1.

En el mtodo ConfigureCrystalReports(), agregue un par de saltos de lnea en el cdigo inmediatamente despus de la lnea de cdigo que obtiene la instancia de ParameterFields. En los saltos de lnea, ahora puede escribir cdigo adicional que establece el origen de datos para el control ListBox defaultParameterValuesList ListBox cuando la pgina se carga por primera vez.

2.

En los saltos de lnea, cree un bloque condicional Not IsPostBack. [Visual Basic]

If Not IsPostBack Then End If


[C#]

if(!IsPostBack) { }
Nota El bloque condicional Not IsPostBack se usa para encapsular cdigo que slo se debe ejecutar la primera vez que se carga la pgina. Los controles se suelen enlazar a los valores de datos en bloques condicionales Not IsPostBack para que sus valores de datos (y los eventos de control subsiguientes) no se restablezcan cuando se vuelva a cargar la pgina.

3.

En el bloque condicional Not IsPostBack, establezca la propiedad DataSource del ListBox defaultParameterValuesList al mtodo de ayuda GetDefaultValuesFromParameterField(), pasando la instancia de ParametersFields como un parmetro de mtodo. [Visual Basic]

defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(myParameterFields)
[C#]

defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields);

4.

An en el bloque condicional Not IsPostBack, llame al mtodo DataBind() del ListBox defaultParameterValuesList. [Visual Basic]

defaultParameterValuesList.DataBind()
[C#]

defaultParameterValuesList.DataBind();
Para enlazar el ArrayList devuelto del mtodo al ListBox de un proyecto de Windows

1.

En el mtodo ConfigureCrystalReports(), agregue un par de saltos de lnea en el cdigo inmediatamente despus de la lnea de cdigo que obtiene la instancia de ParameterFields. En los saltos de lnea, ahora puede escribir cdigo adicional que establece el origen de datos para el control ListBox defaultParameterValuesList ListBox cuando la pgina se carga por primera vez.

2.

En los saltos de lnea, establezca la propiedad DataSource del ListBox defaultParameterValuesList al mtodo de ayuda GetDefaultValuesFromParameterField(), pasando la instancia de ParametersFields como un parmetro de mtodo. [Visual Basic]

defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(myParameterFields)
[C#]

defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields);
Ahora estar listo para crear y ejecutar el proyecto para verificar si el ListBox defaultParameterValuesList est relleno. Para probar si est relleno el control ListBox defaultParameterValuesList

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. El control ListBox defaultParameterValuesList mostrar una lista completa de valores predeterminados (ciudades, en nuestro tutorial).

4.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

En la siguiente seccin, agregar un botn para volver a mostrar el informe basado en las selecciones del control ListBox defaultParameterValuesList. Contine con Configurar parmetros a partir de las selecciones de ListBox.

Configurar parmetros a partir de las selecciones de ListBox


En esta seccin, agregar un botn para volver a mostrar el informe basado en las selecciones del control ListBox defaultParameterValuesList. En el mtodo de evento de este botn, llamar al mismo mtodo que se llama al cargar la pgina por primera vez: SetCurrentValuesForParameterField(). Pero esta vez, en lugar de pasar valores arbitrarios (Pars y Tokio), pasar los valores seleccionados en el control ListBox defaultParameterValuesList. Para crear y configurar un botn que vuelva a mostrar el informe en el formulario 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Diseador. 3. En la Caja de herramientas, arrastre un control Button a la derecha del control ListBox. 4. Haga clic en el control Button para seleccionarlo. 5. Desde la ventana Propiedades siga estos pasos: Establezca el valor de ID o Nombre en "redisplay". Establezca Text como "Volver a mostrar el informe". Ahora podr crear un mtodo de evento de clic de botn que busque los elementos seleccionados en el control ListBox y los pase al mtodo SetCurrentValuesForParameterField(). El cdigo vara ligeramente para un proyecto Web o un proyecto de Windows; por lo tanto, realice slo el procedimiento para Web o para Windows. Para crear el mtodo de evento de clic del botn que vuelve a mostrar el informe en un proyecto Web

1.

Haga doble clic en el botn Volver a mostrar el informe. Pasa a la clase de cdigo subyacente en la que se ha generado automticamente un mtodo de evento redisplay_Click().

2.

Sobre la firma de clase, agregue una declaracin "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase para el espacio de nombres System.Web.UI.WebControls (si todava no se ha declarado este espacio de nombres). [Visual Basic]

Imports System.Web.UI.WebControls
[C#]

using System.Web.UI.WebControls;
Nota Esta declaracin se necesita para tener acceso a la clase ListItem.

3.

En el mtodo de evento redisplay_Click() que se acaba de generar automticamente, declare y cree una instancia de ArrayList. [Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()


[C#]

ArrayList arrayList = new ArrayList();

4.

Cree un bucle foreach para obtener cada instancia de ListItem a partir de la propiedad Items del ListBox defaultParameterValuesList. [Visual Basic]

For Each item As ListItem In defaultParameterValuesList.Items Next


[C#]

foreach(ListItem item in defaultParameterValuesList.Items) { }


5. En el bucle foreach, cree un bloque condicional anidado que compruebe si la propiedad Selected de la instancia de Item actual est establecida como True. [Visual Basic]

If item.Selected Then End If


[C#]

if(item.Selected) { }
6. En el bloque condicional, agregue la propiedad Value de la instancia de Item a la instancia de ArrayList. [Visual Basic]

myArrayList.Add(item.Value)
[C#]

arrayList.Add(item.Value);
7. Fuera del bloque condicional y del bucle foreach, vuelva a enlazar la ruta de directorio de archivos del informe CustomersByCity a la propiedad ReportSource de la clase CrystalReportViewer. Nota La ruta de directorio de archivos que se muestra ms abajo es la de un proyecto de Visual Studio 2005. "ProjectName" se reemplaza por el nombre del sitio Web. "UserName" se reemplaza por el nombre de conexin. La ruta predeterminada para un proyecto de sitio Web: [Visual Basic]

myCrystalReportViewer.ReportSource = "C:\WebSites\ProjectName\CustomersByCity.rpt"

[C#]

crystalReportViewer.ReportSource = "C:\\WebSites\\ProjectName\\CustomersByCity.rpt";
8. Asigne la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer. [Visual Basic]

Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfo


[C#]

ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;

9.

Pase la instancia de ParameterFields y de ArrayList al mtodo SetCurrentValuesForParameterField(). [Visual Basic]

SetCurrentValuesForParameterField(myParameterFields, myArrayList)
[C#]

SetCurrentValuesForParameterField(parameterFields, arrayList);
Para crear el mtodo de evento de clic del botn que vuelve a mostrar el informe en un proyecto de Windows 1. Haga doble clic en el control Button que vuelve a mostrar el informe. Pasa a la clase de cdigo subyacente en la que se ha generado automticamente un mtodo de evento redisplay_Click().

2.

En el mtodo de evento redisplay_Click() que se acaba de generar automticamente, declare y cree una instancia de ArrayList. [Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()


[C#]

ArrayList arrayList = new ArrayList();

3.

Cree un bucle foreach para obtener cada elemento (como una cadena) de la propiedad SelectedItems del ListBox defaultParameterValuesList. [Visual Basic]

For Each item As String In defaultParameterValuesList.SelectedItems Next

[C#]

foreach(string item in defaultParameterValuesList.SelectedItems) { }


4. En el bloque foreach, agregue la instancia de cadena Item a la instancia de ArrayList. [Visual Basic]

myArrayList.Add(item)
[C#]

arrayList.Add(item);
5. Fuera del bucle foreach, vuelva a enlazar la ruta de directorio de archivos del informe CustomersByCity a la propiedad ReportSource de la clase CrystalReportViewer. Nota La ruta de directorio de archivos que se muestra ms abajo es la de un proyecto de Visual Studio 2005. "ProjectName" se reemplaza por el nombre del proyecto de Windows. "UserName" se reemplaza por el nombre de conexin. La ruta predeterminada para un proyecto de Windows: [Visual Basic]

myCrystalReportViewer.ReportSource = "C:\Documents and Settings\UserName\My Documents\Visual Studio\Projects\ProjectName\CustomersByCity.rpt"


[C#]

crystalReportViewer.ReportSource = "C:\\Documents and Settings\\UserName\\My Documents\\Visual Studio\\Projects\\ ProjectName\\CustomersByCity.rpt";


6. Asigne la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer. [Visual Basic]

Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfo


[C#]

ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;

7.

Pase la instancia de ParameterFields y de ArrayList al mtodo SetCurrentValuesForParameterField(). [Visual Basic]

SetCurrentValuesForParameterField(myParameterFields, myArrayList)
[C#]

SetCurrentValuesForParameterField(parameterFields, arrayList);
Ahora que se ha aplicado los valores seleccionados del control ListBox como los valores actuales del campo de parmetro, estar listo para volver a mostrar el informe. Ahora estar preparado para generar y ejecutar el proyecto para verificar que el campo de parmetro se ha restablecido correctamente. Para probar si est relleno el control ListBox defaultParameterValuesList

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. 4. En el control ListBox, presione la tecla CTRL mientras hace clic para seleccionar ciudades diferentes en la lista. 5. Haga clic en el botn Volver a mostrar el informe. La pgina se volver a cargar y mostrar los registros de cliente para los clientes que vivan en la lista de ciudades que ha seleccionado.

6.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Configurar la persistencia de parmetros.

Configurar la persistencia de parmetros


En esta seccin configurar la persistencia (en un tutorial basado en Web) de las selecciones de campo de parmetro que se han realizado en el control ListBox. Para demostrar la falta de persistencia de las selecciones de parmetro

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. 4. En el control ListBox, presione la tecla Mays mientras hace clic para seleccionar todas las ciudades de la lista. 5. Haga clic en Volver a mostrar el informe. La pgina se vuelve a cargar y, a continuacin, muestra los registros de cliente de todos los clientes de todas las ciudades. Es un informe extenso que contiene muchas pginas.

6.

En la barra de herramientas CrystalReportViewer, haga clic en Pgina siguiente. No se conserva la lista de las ciudades seleccionadas. La pgina 2 del informe no se muestra. En su lugar, vuelve a aparecer la configuracin de parmetros de inicio (Pars y Tokio). Nota En Visual Studio .NET 2002, la lista de las ciudades seleccionar se puede conservar debido a diferencias de versin.

7.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Debe agregar cdigo de persistencia a la aplicacin para que se conserven los cambios efectuados cuando se vuelvan a cargar las pginas Web.

Para comenzar, va a agregar cdigo de conservacin al mtodo ConfigureCrystalReports() agregando un bloque Else al bloque condicional If Not IsPostBack. A continuacin, va a establecer valores nicos para la instancia de ArrayList por cada condicin del bloque condicional. Al iniciarse la pgina, va a establecer los valores predeterminados ("Pars" y "Tokio") en la instancia de ArrayList. Al volver a cargarse la pgina, va a recuperar la instancia de ArrayList que est almacenada en Session. Para agregar cdigo de persistencia al mtodo ConfigureCrystalReports()

1.

En el mtodo ConfigureCrystalReports(), corte y pegue las dos lneas de cdigo que agregan Pars y Tokio al ArrayList en la parte inferior del bloque condicional Not IsPostBack. Cuando haya terminado, el aspecto del bloque condicional debe ser parecido al siguiente: [Visual Basic]

If Not IsPostBack Then defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(myParameterFields) defaultParameterValuesList.DataBind() myArrayList.Add("Paris") myArrayList.Add("Tokyo") End If


[C#]

if (!IsPostBack) { defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields); defaultParameterValuesList.DataBind(); arrayList.Add("Paris"); arrayList.Add("Tokyo"); }


2. Agregue una lnea final de cdigo al bloque condicional que asigna la instancia ArrayList a Session. Nota Puede agregar el nombre de variable como el identificador de cadena para el Session que agregue. [Visual Basic]

Session("myArrayList") = myArrayList
[C#]

Session["arrayList"] = arrayList;

3.

Agregue una condicin Else al bloque condicional Not IsPostBack. 4. En el bloque Else, obtenga la instancia de ArrayList de Session y proyctela en ArrayList. [Visual Basic]

myArrayList = Ctype(Session("myArrayList"), ArrayList)


[C#]

arrayList = (ArrayList)Session["arrayList"];
Cuando haya terminado, el aspecto del bloque condicional debe ser parecido al siguiente: [Visual Basic]

If Not IsPostBack Then defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(myParameterFields) defaultParameterValuesList.DataBind() myArrayList.Add("Paris") myArrayList.Add("Tokyo") Session("myArrayList") = myArrayList Else myArrayList = Ctype(Session("myArrayList"), ArrayList) End If
[C#]

if (!IsPostBack) { defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(parameterFields); defaultParameterValuesList.DataBind(); arrayList.Add("Paris"); arrayList.Add("Tokyo"); Session["arrayList"] = arrayList; } else { arrayList = (ArrayList)Session["arrayList"]; }
Estas modificaciones en el mtodo ConfigureCrystalReports() garantizan que siempre se pase la instancia actual de ArrayList al mtodo SetCurrentValuesForParameterField(). En la siguiente seccin, realizar dos cambios en el cdigo del evento de clic de botn:

Tomar el ArrayList que ha creado y asignarlo a Session. Reemplace las dos ltimas lneas de cdigo (que configuran y muestran el informe) con una llamada al mtodo ConfigureCrystalReports() para realizar esta funcin en un conjunto comn de cdigo.

Para modificar el cdigo del mtodo de evento de clic de botn para que funcione con la persistencia de Session 1. Elimine las tres ltimas lneas de cdigo del mtodo de evento de clic de botn. La primera lnea de cdigo que se eliminar es el cdigo que enlaza la ruta de directorio de archivos del informe a la propiedad ReportSource del control CrystalReportViewer. La segunda lnea de cdigo que se eliminar es el cdigo que obtiene la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer. La tercera lnea de cdigo que se eliminar es la llamada al mtodo SetCurrentValuesForParameterField(). En el siguiente paso agregar dos nuevas lneas de cdigo para reemplazar el cdigo eliminado. 2. En el mtodo de evento de clic de botn, inmediatamente fura del bucle foreach, agregue una lnea de cdigo que asigne la instancia de ArrayList a Session. Nota Puede agregar el nombre de variable como el identificador de cadena para el Session que agregue.

[Visual Basic]

Session("myArrayList") = myArrayList
[C#]

Session["arrayList"] = arrayList;

3.

Llame al mtodo ConfigureCrystalReports(). De este modo se obtiene la instancia de ArrayList, la aplica al informe y enlaza el informe al control CrystalReportViewer. [Visual Basic]

ConfigureCrystalReports()
[C#]

ConfigureCrystalReports();
Ahora estar preparado para generar y ejecutar el proyecto para verificar que el campo de parmetro se ha restablecido correctamente. Para probar si est relleno el control ListBox defaultParameterValuesList

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. 4. En el control ListBox, presione la tecla Mays mientras hace clic para seleccionar todas las ciudades de la lista. 5. Haga clic en Volver a mostrar el informe. La pgina se vuelve a cargar y muestra los registros de cliente de todos los clientes de todas las ciudades. Es un informe extenso que contiene muchas pginas.

6.

En la barra de herramientas CrystalReportViewer, haga clic en Pgina siguiente. 7. Ahora se conserva la lista de las ciudades seleccionadas. Se muestra la pgina 2 del informe. 8. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin. Contine con Conclusin.

Conclusin
Ha creado correctamente un informe con un valor de parmetro discreto, ha creado mtodo de ayuda que acepta cualquier conjunto de valores en un formato comn (un ArrayList) y ha aplicado dichos valores a un informe basado en un nombre de campo de parmetro especfico (la constante PARAMETER_FIELD_NAME). Tambin ha aprendido a llenar el un control ListBox con los valores predeterminados de un campo de parmetro particular. Ha aprendido a obtener los valores seleccionados del ListBox y colocarlos en un ArrayList para volver a llamar al mtodo de ayuda original y cambiar la lista de valores de parmetro, as como la presentacin del informe.

Nota Ahora puede seguir trabajando con este tutorial y agregar un subinforme al informe y, a continuacin, configurar dicho subinforme con un parmetro de rango. Si lo desea, contine con el siguiente tutorial, que modifica el tutorial actual, Leer y configurar parmetros de rango con un subinforme.

Tutorial: Leer y configurar parmetros de rango para un subinforme


En este tutorial explorar una complicacin adicional: qu sucede si el informe contiene un subinforme que necesita parmetros distintos? Para llevar a cabo este tutorial, debe realizar el tutorial anterior, Leer y configurar parmetros discretos. Haga clic en el vnculo adecuado para pasar a esa seccin:

Introduccin

Agregar un subinforme al informe original Agregar el cdigo de parmetro de subinforme Agregar controles TextBox para contener valores de parmetro de rango Modificar mtodos para llamar al subinforme Probar el parmetro de subinforme Conclusin Informacin de cdigo de ejemplo

Introduccin
En el tutorial anterior, Leer y configurar parmetros discretos, obtuvo informacin sobre cmo crear un informe con un parmetro discreto y cmo escribir cdigo que estableciera dicho parmetro en tiempo de ejecucin, tanto con valores de parmetro codificados como con valores de parmetros pasados desde un control ListBox o TextBox. En este tutorial, aprender a agregar parmetros de rango a un subinforme. Necesita realizar cuatro modificaciones al proyecto que ha creado en Leer y configurar parmetros discretos:

Agregar un subinforme al informe original. Este subinforme direcciona la tabla Pedidos de la base de datos Xtreme. La tabla Pedidos est relacionada con la tabla Clientes que se ha utilizado en el tutorial anterior mediante una clave externa ID del cliente.

Agregar un parmetro de rango al subinforme que filtre por un rango de fechas de pedido. Agregar dos controles Text al formulario: orderStartDate y orderEndDate, para establecer el rango de fechas de pedido en tiempo de ejecucin. Modificar el mtodo SetCurrentValuesForParameter() que ha creado en el tutorial anterior. Este mtodo crea una instancia de ParameterRangeValue que contiene los valores startDate y endDate values, y, a continuacin, pasa dicha instancia de ParameterRangeValue al parmetro de rango en el subinforme.

Cuando termine este tutorial, podr filtrar los valores que se muestran en el informe en tiempo de ejecucin. El cdigo que agregue limita el nmero de ciudades que se muestran en el informe principal, as como el rango de las fechas de pedido que se muestran en el subinforme. Este tutorial tambin se puede realizar con clases del modelo de objetos ReportDocument; vea Leer y configurar parmetros con un subinforme mediante el modelo de objetos ReportDocument. Para obtener ms informacin sobre el uso del modelo de objetos, vea Cul es el modelo de objetos que se debe utilizar?. Contine con Agregar un subinforme al informe original.

Agregar un subinforme al informe original


Para empezar, agregar un subinforme al informe original. Para agregar un subinforme

1. 2.

Abra el proyecto que ha creado en el tutorial anterior, Leer y configurar parmetros discretos. En Explorador de soluciones, haga doble clic en el informe CustomersByCity para abrirlo.

3. 4.

Haga clic con el botn derecho en la barra gris Detalles y seleccione Insertar seccin abajo. Haga clic con el botn derecho en la nueva seccin Detalles b que ha creado, seleccione Insertar y, a continuacin, haga clic en Subinforme. Aparece un cuadrado gris alrededor del cursor del mouse.

5. 6.

Arrastre el rectngulo gris en la nueva seccin Detalles b y, a continuacin, haga clic para soltarlo. En el cuadro de dilogo Insertar un subinforme, en la ficha Subinforme, seleccione Crear un subinforme con el Asistente de informes. Nota El cuadro de dilogo Insertar un subinforme incluye otras opciones que permiten elegir un informe existente y subinformes a peticin. Para obtener ms informacin sobre estas funciones, vea Insertar un subinforme (cuadro de dilogo).

7. 8. 9.

En el campo Nombre del informe nuevo, escriba "PedidosClientes". Haga clic en Asistente de informes... En el panel Orgenes de datos disponibles de la ventana Asistente para la creacin de informes estndar, expanda la carpeta Crear nueva conexin. Nota En Visual Studio .NET 2002 o 2003, donde Crystal Reports no se ha actualizado a Crystal Reports Developer, no existe la carpeta Crear nueva conexin; el contenido se mostrar en el nivel superior.

10. En la subcarpeta que se abre, expanda la carpeta ODBC (RDO). 11. En la ventana ODBC (RDO), seleccione la entrada DSN de ODBC correcta para su versin de

Crystal Reports, como se explica en Entrada DSN de ODBC para la base de datos de ejemplo Xtreme y, a continuacin, haga clic en Finalizar. Se expandir la carpeta ODBC (RDO) y mostrar la base de datos de ejemplo Xtreme.

12. Seleccione la tabla Pedidos y haga clic en el smbolo > para mover la tabla Pedidos al panel
Seleccionar tablas y, a continuacin, haga clic en Siguiente. envo y Enviar va.

13. En el panel Campos disponibles, seleccione ID del pedido, Fecha del pedido, Fecha de 14. Haga clic en el smbolo > para mover estos campos al panel Campos para mostrar y, a
continuacin, haga clic en Finalizar.

15. En el cuadro de dilogo Insertar un subinforme, seleccione la ficha Vnculo. 16. En el panel Campo(s) del informe contenedor para vincular, en la lista Campos 17.

disponibles, expanda la tabla Clientes, seleccione ID del cliente y, a continuacin, haga clic en el smbolo >. En el panel Vnculo de campo Clientes.ID del cliente que aparece, deje las selecciones predeterminadas inalteradas. Estas selecciones de parmetros y de datos generan automticamente entre el informe principal y el subinforme.

18. Haga clic en Aceptar.


El nuevo subinforme, PedidosClientes, se muestra en la seccin Detalles b del informe principal. Nota Al agregar un subinforme a la seccin Detalles, el subinforme se muestra por cada fila, lo que agrega un costo de rendimiento al informe. Si no necesita informacin de subinforme a ese nivel de granularidad, coloque el subinforme en una seccin Grupo en vez de hacerlo en una seccin Detalles.

Ahora est listo para verificar la configuracin del subinforme. Para verificar la configuracin del subinforme

1.

En la seccin Detalles, haga doble clic en el subinforme PedidosClientes para verlo. En la parte inferior de la vista del diseador, aparecen botones de desplazamiento para el informe principal y el subinforme PedidosClientes.

2.

Si el Explorador de campos no est visible, en la barra de herramientas de Crystal Reports, haga clic en Cambiar la vista del campo. Nota Otro modo de ver el Explorador de campos es haciendo clic en Explorador de campos en el men Crystal Reports.

3. 4. 5. 6. 7.

En el Explorador de campos, expanda Campos de parmetro. Verifique que el campo de parmetro Pm-Clientes.ID del cliente se ha generado automticamente al vincular el subinforme. En la barra de herramientas de Crystal Reports, haga clic en Asistente de seleccin. En el cuadro de dilogo Asistente de seleccin, verifique que est establecido el criterio Pedidos.ID del cliente es igual a {Pm-Clientes.ID del cliente} y, a continuacin, haga clic en Aceptar. Desde el men Archivo, seleccione Guardar todo. Ha agregado correctamente un subinforme PedidosClientes al informe CustomersByCity. En la seccin siguiente agregar un parmetro OrderDateRange al subinforme.

Para agregar un parmetro OrderDateRange al subinforme

1.

En el Explorador de campos, haga clic con el botn derecho en Campos de parmetro y seleccione Nuevo... 2. En el cuadro de dilogo Crear campo de parmetro: Defina el Nombre como "OrderDateRange". Defina Texto de solicitud como "Especifique un rango de fechas de pedidos para mostrar". Defina Tipo de valor como "Fecha". Defina Opciones como una sola seleccin, "Rango de valores". 3. Haga clic en Aceptar. 4. En la barra de herramientas de Crystal Reports, haga clic en Asistente de seleccin. 5. Haga clic en la ficha Nuevo. 6. En el cuadro de dilogo Elegir campo, expanda la tabla Pedidos, seleccione Fecha del pedido y, a continuacin, haga clic en Aceptar. 7. En la nueva ficha Pedidos.Fecha del pedido, en la lista desplegable de criterios, seleccione frmula: 8. Escriba la siguiente frmula:

{Orders.Order Date} in {?OrderDateRange}

9. Haga clic en Aceptar. 10. Desde el men Archivo, seleccione Guardar todo.
Ha agregado correctamente un parmetro OrderDateRange al subinforme y lo ha vinculado a la columna Pedidos.Fecha del pedido. En la seccin siguiente agregar cdigo para direccionar el parmetro OrderDateRange en el subinforme.

Contine con Agregar el cdigo de parmetro de subinforme.

Agregar el cdigo de parmetro de subinforme


Ahora est listo para agregar el cdigo de parmetro para el subinforme a la clase de cdigo subyacente. Para empezar, cree un mtodo de ayuda privado, SetDateRangeForOrders(). Para crear y codificar el mtodo SetDateRangeForOrders() 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo. 3. En la parte superior de la clase, agregue dos nuevas constantes debajo de la constante PARAMETER_FIELD_NAME agregada en el tutorial anterior. [Visual Basic]

Private Const SUBREPORT_PARAMETER_FIELD_NAME As String = "OrderDateRange" Private Const SUBREPORT_NAME As String = "CustomerOrders"
[C#]

private const string SUBREPORT_PARAMETER_FIELD_NAME = "OrderDateRange"; private const string SUBREPORT_NAME = "CustomerOrders";

4.

En la parte inferior de la clase, cree un nuevo mtodo privado denominado SetDateRangeForOrders()con tres parmetros: ParameterFields, string startDate y string endDate. [Visual Basic]

Private Sub SetDateRangeForOrders(ByVal myParameterFields As ParameterFields, ByVal startDate As String, ByVal endDate As String) End Sub
[C#]

private void SetDateRangeForOrders(ParameterFields parameterFields, string startDate, string endDate) { }


5. En este mtodo, declare y cree una instancia de la clase ParameterRangeValue. [Visual Basic]

Dim myParameterRangeValue As ParameterRangeValue = New ParameterRangeValue()


[C#]

ParameterRangeValue parameterRangeValue = new ParameterRangeValue();


Nota Para que la clase ParameterRangeValue sea accesible, deber incluir un enunciado

"Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de cdigo

subyacente del espacio de nombres CrystalDecisions.Shared. (Esta declaracin se ha agregado en Configuracin de proyectos.)

6. Establezca la propiedad StartValue de la instancia de ParameterRangeValue en el parmetro de mtodo startDate. [Visual Basic]

myParameterRangeValue.StartValue = startDate
[C#]

parameterRangeValue.StartValue = startDate;
Nota Las propiedades StartValue y EndValue de la clase ParameterRangeValue aceptan valores de tipo Object. Este tipo genrico permite que el valor de rango que se pasa sea de muchos tipos, incluidos: texto, nmero, fecha, moneda u hora. 7. Establezca la propiedad EndValue de la instancia de ParameterRangeValue en el parmetro de mtodo endDate. [Visual Basic]

myParameterRangeValue.EndValue = endDate
[C#]

parameterRangeValue.EndValue = endDate;
8. Establezca los lmites inferior y superior para que sean bound-inclusive. [Visual Basic]

myParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive myParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive


[C#]

parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive; parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;


Nota Para BoundInclusive, los valores de rango superior e inferior no se incluyen en el rango.

Ahora est preparado para asignar la instancia de ParameterRangeValue al parmetro del subinforme. 9. Obtenga la instancia de ParameterField de la clase indizada ParameterFields basada dos valores indizados: el nombre de campo de parmetro de subinforme y el nombre de subinforme. Pase los dos valores de constante que ha declarado al principio de la clase. [Visual Basic]

Dim myParameterField As ParameterField = myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)


[C#]

ParameterField parameterField = parameterFields[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];

10. Llame al mtodo Clear() de la propiedad CurrentValues de la instancia de ParameterField para


eliminar cualquier valor existente de la propiedad CurrentValues. [Visual Basic]

myParameterField.CurrentValues.Clear()
[C#]

parameterField.CurrentValues.Clear();
11. Agregue la instancia de ParameterRangeValue, que ha creado anteriormente, a la propiedad CurrentValues de la instancia de ParameterField. [Visual Basic]

myParameterField.CurrentValues.Add(myParameterRangeValue)
[C#]

parameterField.CurrentValues.Add(parameterRangeValue);
Este procedimiento de varios pasos ha establecido los valores de fecha inicial y final en una instancia de ParameterRangeValue y los ha pasado al parmetro OrderDateRange del subinforme PedidosClientes. Contine con Agregar controles TextBox para contener valores de parmetro de rango.

Agregar controles TextBox para contener valores de parmetro de rango


En esta seccin, agregar dos controles TextBox que proporcionan los valores de fecha inicial y final en tiempo de ejecucin al parmetro de rango OrderDateRange del informe PedidosClientes. Nota Si implementa este tutorial en un sitio Web, la persistencia de los valores de fecha que el usuario escribe en los cuadros de texto se mantiene mediante ViewState. Para crear y configurar un botn que vuelva a mostrar el informe en el formulario 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Diseador. 3. Si est desarrollando un sitio Web, realice las siguientes acciones: a. Haga clic entre el control ListBox y el control Button. b. Presione INTRO tres veces para crear dos lneas entre el control ListBox y el control Button. c. En la primera lnea creada debajo del control ListBox, escriba "Fecha inicial de pedidos". d. En la segunda lnea creada debajo del control ListBox, escriba "Fecha final de pedidos". 4. Si est desarrollando un proyecto de Windows, realice las siguientes acciones: a. En la Caja de herramientas, arrastre dos controles Label a la derecha del control ListBox. Coloque una etiqueta encima de la otra y ambas encima del control Button. b. Seleccione el primer control Label y, a continuacin, en la ventana Propiedades, establezca la propiedad Text en "Fecha inicial de pedidos". c. Seleccione el segundo control Label y, a continuacin, en la ventana Propiedades, establezca la propiedad Text en "Fecha final de pedidos". Los pasos restantes se aplican tanto a los proyectos Web como a los de Windows.

1. 2. 3. 4. 5. 6. 7.

En Cuadro de herramientas, arrastre un control TextBox hasta la derecha de "Fecha inicial de pedidos". Haga clic en el control TextBox para seleccionarlo. En la ventana Propiedades, establezca ID (o Name) en "orderStartDate". En Cuadro de herramientas, arrastre un control TextBox hasta la derecha de "Fecha final de pedidos". Haga clic en el control TextBox para seleccionarlo. En la ventana Propiedades, establezca ID (o Name) en "orderEndDate". Desde el men Archivo, seleccione Guardar todo.

Contine con Modificar mtodos para llamar al subinforme.

Modificar mtodos para llamar al subinforme


Ahora debe modificar el mtodo ConfigureCrystalReports() y el mtodo de evento redisplay_Click() para recibir informacin de estos controles TextBox y aplicarlos al mtodo SetDateRangeForOrders(), para que se procese la informacin de parmetro para los subinformes. En el tutorial anterior, Leer y configurar parmetros discretos, ha diseado estos mtodos de dos formas distintas, en funcin de si inclua la persistencia de Session. Nota Los proyectos de Windows no requieren persistencia de Session. Los sitios Web normalmente requieren persistencia de Session. Elija uno (pero no ambos) de los procedimientos de varios pasos siguientes. Modifique los mtodos que excluyen la persistencia de Session o modifique los que incluyan persistencia de Session:

Modificar los mtodos que excluyen la persistencia de Session. Modificar los mtodos que incluyen la persistencia de Session.

Modificar los mtodos que excluyen la persistencia de Session


Si ha terminado el tutorial anterior, Leer y configurar parmetros discretos, y ha excluido la persistencia de Session, realice los siguientes procedimientos. De lo contrario, vaya a Modificar los mtodos que incluyen la persistencia de Session. Para modificar el mtodo ConfigureCrystalReports() que excluye la persistencia de Session

1.

En el mtodo ConfigureCrystalReports(), agregue un par de saltos de lnea en el cdigo despus de las lneas que asignan "Pars" y "Tokio" como variables ArrayList. 2. En los saltos de lnea, declare y establezca valores codificados para dos variables de cadena, startDate y endDate. [Visual Basic]

Dim startDate As String = "8/1/1997" Dim endDate As String = "8/31/1997"


[C#]

string startDate = "8/1/1997"; string endDate = "8/31/1997";

3.

Debajo del cdigo que llama a SetCurrentValuesForParameterField(), llame al mtodo SetDateRangeForOrders() y psele la instancia de ParameterFields y las variables startDate y endDate. [Visual Basic]

SetDateRangeForOrders(myParameterFields, startDate, endDate)


[C#]

SetDateRangeForOrders(parameterFields, startDate, endDate);

4.

Desde el men Archivo, seleccione Guardar todo.

A continuacin, modificar el mtodo de evento redisplay_Click. Para modificar el mtodo redisplay_Click() que excluye la persistencia de Session

1.

En el mtodo de evento redisplay_Click(), agregue un par de saltos de lnea en el cdigo encima de la lnea que enlaza el informe al control CrystalReportViewer. 2. En los saltos de lnea, declare y establezca valores para dos variables de cadena, startDate y endDate, de los controles TextBox que ha agregado al formulario Web Forms o Windows Forms. [Visual Basic]

Dim startDate As String = orderStartDate.Text Dim endDate As String = orderEndDate.Text


[C#]

string startDate = orderStartDate.Text; string endDate = orderEndDate.Text;

3.

Debajo del cdigo que llama a SetCurrentValuesForParameterField(), llame al mtodo SetDateRangeForOrders() y psele la instancia de ParameterFields y las variables startDate y endDate. [Visual Basic]

SetDateRangeForOrders(myParameterFields, startDate, endDate)


[C#]

SetDateRangeForOrders(parameterFields, startDate, endDate);

4.

Desde el men Archivo, seleccione Guardar todo.

Modificar los mtodos que incluyen la persistencia de Session


Si ha terminado el tutorial anterior, Leer y configurar parmetros discretos, y ha incluido la persistencia de Session, realice los siguientes procedimientos. De lo contrario, contine con Modificar los mtodos que excluyen la persistencia de Session.

Para modificar el mtodo ConfigureCrystalReports() que incluye la persistencia de Session

1.

En el mtodo ConfigureCrystalReports(), agregue un par de saltos de lnea en el cdigo despus de la lnea que declara y crea una instancia de ArrayList. 2. En los saltos de lnea, declare dos variables de cadena, startDate y endDate. [Visual Basic]

Dim startDate As String Dim endDate As String


[C#]

string startDate; string endDate;

3.

En el bloque condicional Not IsPostBack, escriba los valores predeterminados para las variables startDate y endDate. [Visual Basic]

startDate = "8/1/1997" endDate = "8/31/1997"


[C#]

startDate = "8/1/1997"; endDate = "8/31/1997";

4.

En el bloque condicional Not IsPostBack, asigne las variables startDate y endDate a Session. [Visual Basic]

Session("startDate") = startDate Session("endDate") = endDate


[C#]

Session["startDate"] = startDate; Session["endDate"] = endDate;


5. En el bloque Else, despus de obtener la instancia de ArrayList de Session, obtenga las variables startDate y endDate de Session. [Visual Basic]

startDate = Session("startDate").ToString() endDate = Session("endDate").ToString()


[C#]

startDate = Session["startDate"].ToString(); endDate = Session["endDate"].ToString();

Con este enfoque, se llega al final del bloque con las variables de fecha asignadas en cualquier caso. De este modo se sigue la lgica paralela a la asignacin de la variable ArrayList que ha configurado en el tutorial anterior.

6.

Debajo del cdigo que llama a SetCurrentValuesForParameterField(), llame al mtodo SetDateRangeForOrders() y psele la instancia de ParameterFields y las variables startDate y endDate. [Visual Basic]

SetDateRangeForOrders(myParameterFields, startDate, endDate)


[C#]

SetDateRangeForOrders(parameterFields, startDate, endDate);

7.

Desde el men Archivo, seleccione Guardar todo.

A continuacin, modificar el mtodo de evento redisplay_Click. Para modificar el mtodo redisplay_Click() que incluye la persistencia de Session

1.

En el mtodo de evento redisplay_Click(), agregue un par de saltos de lnea en el cdigo despus de la lnea que asigna la instancia de ArrayList a Session. 2. En los saltos de lnea, asigne la propiedad Text del TextBox orderStartDate y orderEndDate a variables de Session. [Visual Basic]

Session("startDate") = orderStartDate.Text Session("endDate") = orderEndDate.Text


[C#]

Session["startDate"] = orderStartDate.Text; Session["endDate"] = orderEndDate.Text;

3.

Desde el men Archivo, seleccione Guardar todo.

Se recuperan y aplican estos valores de startDate y endDate Session cuando se llama al mtodo ConfigureCrystalReports(). Ahora estar preparado para generar y ejecutar el proyecto para verificar que los valores TextBox restablecen el parmetro de rango del subinforme. Contine con Probar el parmetro de subinforme.

Probar el parmetro de subinforme


Ya est preparado para probar la configuracin del parmetro de subinforme desde los valores TextBox. Para probar la configuracin del parmetro de subinforme

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. 4. En el control ListBox, presione la tecla CTRL mientras hace clic para seleccionar al menos cuatro ciudades diferentes en la lista. 5. En el control TextBox startDate, escriba "1/1/1997". 6. En el control TextBox endDate, escriba "31/8/1997". 7. Haga clic en el botn Volver a mostrar el informe. La pgina se volver a cargar y mostrar los registros de cliente para los clientes que vivan en las ciudades de la lista que acaba de seleccionar, as como un subinforme que muestra los pedidos del rango de fechas especificado anteriormente.

8.

En el control CrystalReportViewer, aumente el nivel de Zoom al 125%. La pgina se recargar al 125% de zoom. Se conservan los valores que estn seleccionados para ambas ciudades y el rango de fechas de pedido.

9.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Conclusin.

Conclusin
Ha modificado correctamente el proyecto del tutorial para utilizar un informe que contiene un subinforme y ha establecido un rango de fechas de pedidos en el parmetro de rango que se crea en el subinforme.

Tutorial: Filtrar datos con frmulas de seleccin


En este tutorial, aprender a usar las frmulas de seleccin para filtrar los registros que desee mostrar en un informe de Crystal. Haga clic en el vnculo adecuado para pasar a esa seccin:

Introduccin

Crear un informe con una frmula de seleccin Enlazar el informe Agregar controles para usarlos en la frmula de seleccin Establecer la frmula de seleccin manualmente en cdigo Utilizar un control DropDownList para modificar la frmula de seleccin Conclusin Informacin de cdigo de ejemplo

Introduccin
Las frmulas de seleccin se utilizan para filtrar los registros que desee mostrar en un informe de Crystal. Para escribir frmulas de seleccin, puede usar las sintaxis Basic y Crystal. Para obtener ms informacin sobre cmo se escriben las frmulas de seleccin, vea Referencia de frmulas. En este tutorial, va a crear una frmula de seleccin para filtrar los registros de los clientes cuyo campo Ventas del ao pasado es mayor que un valor especificado y el campo Nombre del cliente se compara con otra cadena. Se utiliza un control ListBox con el fin de seleccionar un operador de comparacin para el campo Nombre del cliente. Puede elegir que se muestren los nombres de los clientes que son iguales a, menores que, mayores que, menores o iguales que, iguales o mayores que o que no son iguales que el valor de cadena especificado. La frmula se pasa como variable de cadena a la propiedad SelectionFormula de la clase CrystalReportViewer. Una vez establecida la propiedad, el informe de Crystal que enlaza con el control CrystalReportViewer se filtra antes de mostrarse. Contine con Crear un informe con una frmula de seleccin.

Crear un informe con una frmula de seleccin


En esta seccin, va a crear un informe que obtenga su informacin de la base de datos de ejemplo de Microsoft Access que se incluye con Crystal Reports. Para crear un informe con datos seguros de la base de datos Northwind Nota Este procedimiento slo funciona con un proyecto creado a partir de la Configuracin de proyectos. La Configuracin de proyectos contiene referencias especficas a espacios de nombres y configuracin de cdigos necesarios para este procedimiento, y ste no se podr completar sin dicha configuracin. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasos de Configuracin de proyectos.

1. 2. 3.

En Explorador de soluciones, haga clic con el botn derecho en el nombre de proyecto en negrita, elija Agregar y, a continuacin, haga clic en Agregar nuevo elemento. En el cuadro de dilogo Agregar nuevo elemento, en la vista Plantillas, seleccione la plantilla Crystal Report. En el campo Nombre, especifique el nombre "CustomersBySalesName.rpt" y haga clic en Agregar. Nota En Visual Studio .NET 2002 o 2003, el botn se denomina Abrir.

Si no se ha registrado anteriormente, se le pedir que se registre. Para saber cmo registrarse, vea Registro y cdigo de clave de Crystal Reports.

4. 5.

En el panel Crear un nuevo documento de Crystal Report del cuadro de dilogo Galera de Crystal Report, seleccione Usar asistente de informes. En el panel Elegir un Asistente, seleccione Estndar y, a continuacin, haga clic en Aceptar.

6.

En el panel Orgenes de datos disponibles de la ventana Asistente para la creacin de informes estndar, expanda la carpeta Crear nueva conexin. Nota En Visual Studio .NET 2002 o 2003, donde Crystal Reports no se ha actualizado a la versin completa, no existe la carpeta Crear nueva conexin; el contenido se mostrar en el nivel superior.

7. 8.

En la subcarpeta que se abre, expanda la carpeta ODBC (RDO). En la ventana ODBC (RDO), seleccione la entrada DSN de ODBC correcta para su versin de Crystal Reports, como se explica en Entrada DSN de ODBC para la base de datos de ejemplo Xtreme y, a continuacin, haga clic en Finalizar. Se expandir la carpeta ODBC (RDO) y mostrar la base de datos de ejemplo Xtreme.

9. 10. 11. 12.

Expanda el nodo Tablas y, a continuacin, haga doble clic en la tabla Cliente para mover la tabla al panel Tablas seleccionadas y, a continuacin, haga clic en Siguiente. Expanda la tabla Cliente y, a continuacin, haga clic y presione CTRL en Nombre del cliente y Ventas del ao pasado. Haga clic en el smbolo > para mover estos campos al panel Campos para mostrar y, a continuacin, haga clic en Siguiente. En el panel Campos disponibles, en Campos del informe, haga doble clic en Customer.Customer Name, haga doble clic en el smbolo > para mover el campo al panel Agrupar por y, a continuacin, haga clic en Finalizar. Se crea el informe CustomersBySalesName y se carga en la ventana principal de Visual Studio.

Despus, cree una frmula de seleccin para filtrar los datos basndose en el valor del campo Ventas del ao pasado. Para crear una frmula de seleccin basada en las ventas del ao pasado 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo para ver la clase de cdigo subyacente de este formulario Web Forms o Windows Forms. 3. En los sitios Web, en el mtodo ConfigureCrystalReports() (el que ha creado en Configuracin de proyectos), cree un bloque condicional Not IsPostBack. [Visual Basic]

If Not IsPostBack Then End If


[C#]

if(!IsPostBack) { }
Nota El bloque condicional Not IsPostBack encapsula el cdigo que se debera ejecutar slo la primera vez que se carga la pgina.

4.

En los sitios Web, agregue las siguientes lneas de cdigo en el bloque condicional Not IsPostBack.

En los proyectos de Windows, agregue el cdigo al mtodo ConfigureCrystalReports(), sin el bloque condicional Not IsPostBack. a. Especifique la frmula para seleccionar slo los registros cuyo valor del campo Ventas del ao pasado sea mayor que $11000,00 y cuyos nombres de clientes empiecen por la letra "A". [Visual Basic]

Dim mySelectFormula As String = "{Customer.Last Year's Sales} > 11000.00 " _ & "AND Mid({Customer.Customer Name}, 1, 1) = ""A"" "
[C#]

string selectFormula = "{Customer.Last Year's Sales} > 11000.00 " + "AND Mid({Customer.Customer Name}, 1, 1) = \"A\"";
b. Asigne la cadena de la frmula de seleccin a la propiedad SelectionFormula del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.SelectionFormula = mySelectFormula
[C#]

crystalReportViewer.SelectionFormula = selectFormula;
Contine con Enlazar el informe.

Enlazar el informe
Cuando sigui las instrucciones de la seccin Configuracin de proyectos para preparase para este tutorial, coloc un control CrystalReportViewer en el formulario Web Forms o Windows Forms. En los pasos anteriores, agreg un informe CustomersBySalesName y una frmula de seleccin al proyecto. En esta seccin, va a enlazar la ruta de directorio de archivos del informe CustomersBySalesName al control CrystalReportViewer. Despus, va a comprobar si el informe se muestra correctamente con los registros filtrados por la frmula de seleccin. Para enlazar la ruta de directorio de archivos del informe CustomersBySalesName al control CrystalReportViewer 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo para ver la clase de cdigo subyacente de este formulario Web Forms o Windows Forms. 3. Busque el mtodo ConfigureCrystalReports(), que ha creado en Configuracin de proyectos. 4. Declare una variable de cadena, llmela reportPath y asgnele una ruta en tiempo de ejecucin al informe local. Esta ruta se determina de forma diferente para los sitios Web y los proyectos para Windows: Para un sitio Web, pase el nombre del archivo de informe local como un parmetro de cadena en el mtodo Server.MapPath(). Esto asigna el informe local a la ruta del directorio de archivos de la unidad de disco duro en tiempo de ejecucin. [Visual Basic]

Dim reportPath As String = Server.MapPath("CustomersBySalesName.rpt")


[C#]

string reportPath = Server.MapPath("CustomersBySalesName.rpt");


Para un proyecto para Windows, concatene la propiedad Application.StartupPath con una barra invertida y el nombre del archivo de informe local. Esto asigna el informe al mismo directorio del archivo ejecutable de Windows. Nota En la fase de compilacin se copiar el informe al directorio que contiene el archivo ejecutable. [Visual Basic]

Dim reportPath As String = Application.StartupPath & "\" & "CustomersBySalesName.rpt"


[C#]

string reportPath = Application.StartupPath + "\\" + "CustomersBySalesName.rpt";


5. Asigne la ruta del directorio de archivos del informe NorthwindCustomers a la propiedad ReportSource del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.ReportSource = reportPath
[C#]

crystalReportViewer.ReportSource = reportPath;
Para probar la frmula de seleccin del informe CustomersBySalesName

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. Si usa un informe no incrustado en un proyecto para Windows, localice el archivo ejecutable de Windows compilado en el subdirectorio \bin\ [Visual Basic] o \bin\debug\ [C#] y, a continuacin, copie el informe en dicho subdirectorio. Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecucin, el informe deber estar almacenado en el mismo directorio que el archivo ejecutable de Windows.

4.

En el men Depurar, haga clic en Iniciar. Nota Si est desarrollando un sitio Web en Visual Studio 2005 y es la primera vez que ha iniciado la depuracin, aparecer un cuadro de dilogo en el que se indica que el archivo Web.config se debe modificar. Haga clic en el botn Aceptar para habilitar la depuracin. El informe de Crystal muestra cuatro registros de clientes: Alley Cat Cycles, Ankara Bicycle Company, Arsenault et Maurier y Athens Bicycle Co.

5.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Agregar controles para usarlos en la frmula de seleccin.

Agregar controles para usarlos en la frmula de seleccin


En esta seccin, va a agregar controles para cambiar dinmicamente los valores utilizados en la frmula de seleccin. Para el campo Ventas del ao pasado, va a agregar un cuadro de texto para especificar el valor mnimo de ventas que se va a mostrar en el informe de Crystal. Para el campo Nombre del cliente, va a agregar un control DropDownList y TextBox para especificar los nombres de los clientes que se van a mostrar. Para agregar controles con el fin de utilizarlos en la frmula de seleccin 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Diseador. 3. Si est desarrollando un sitio Web, realice las siguientes acciones: a. Haga clic en el control CrystalReportViewer para seleccionarlo. b. Presione la FLECHA IZQUIERDA del teclado de modo que aparezca un cursor parpadeante y, a continuacin, presione INTRO tres veces. El control CrystalReportViewer bajar tres lneas. 1. Si est desarrollando un proyecto de Windows, realice las siguientes acciones: a. Haga clic en el control CrystalReportViewer para seleccionarlo. b. En la ventana Propiedades, establezca el valor de Acoplar en "Inferior". c. Ajuste el tamao del control CrystalReportViewer, para que aparezcan tres lneas aproximadamente sobre l. d. En la ventana Propiedades, establezca el valor de Delimitador en "Superior, inferior, izquierdo, derecho". 2. Si est desarrollando un sitio Web, en la primera lnea escriba, "Especifique el valor mnimo de las ventas del ao pasado: $". 3. Si est desarrollando un proyecto de Windows, realice las siguientes acciones: a. En Cuadro de herramientas, arrastre un control Label hasta la parte superior del formulario. b. En la ventana Propiedades, establezca el valor de la propiedad Text en "Especifique el valor mnimo de las ventas del ao pasado: $". 4. En Cuadro de herramientas, arrastre un control TextBox hasta la derecha del texto. 5. Seleccione el control TextBox y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "lastYearsSales". Establezca el valor de Text en "11000,00". Si est desarrollando un sitio Web, en la segunda lnea, escriba "Mostrar el nombre de los clientes". Si est desarrollando un proyecto de Windows, realice las siguientes acciones:

2. 3.

a. b. 6. 7.

En Cuadro de herramientas, arrastre un control Label hasta la segunda lnea del formulario. En la ventana Propiedades, establezca el valor de la propiedad Text en "Mostrar el nombre de los clientes".

En Cuadro de herramientas, arrastre un control DropDownList (ComboBox para un proyecto de Windows) hasta la derecha del texto. Seleccione el control DropDownList (ComboBox) y, a continuacin, en la ventana Propiedades, establezca el valor de ID (o Nombre) en "selectOperatorList".

8. 9.

En Cuadro de herramientas, arrastre un control TextBox hasta la derecha del control DropDownList. Seleccione el control TextBox y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "customerName". Establezca el valor de Text en "A". En el Cuadro de texto, arrastre un control Button hasta la tercera lnea del formulario y sobre el control CrystalReportViewer. Seleccione el control Button y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "redisplay". Establezca el valor de Text en "Volver a mostrar el informe".

2. 3.

Contine con Establecer la frmula de seleccin manualmente en cdigo.

Establecer la frmula de seleccin manualmente en cdigo


Ya est preparado para agregar cdigo para modificar la frmula de seleccin en la clase de cdigo subyacente. Para codificar la frmula de seleccin 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, seleccione Diseador. 3. Haga doble clic en Volver a mostrar el informe. Aparece la clase de cdigo subyacente del informe y muestra que se ha generado automticamente un mtodo de evento redisplay_Click().

4.

En la frmula de seleccin, cree una variable de cadena que incluya los valores desde los controles TextBox. La frmula de seleccin es parecida al texto escrito en el mtodo ConfigureCrystalReports(). En vez del valor de mnimo de ventas de $11000,00, utilice el valor del control TextBox de lastYearsSales. Para el campo Nombre del cliente, utilice el valor del control TextBox de customerName. [Visual Basic]

Dim mySelectFormula As String = "{Customer.Last Year's Sales} > " & lastYearsSales.Text _ & " AND Mid({Customer.Customer Name}, 1) > """ & customerName.Text & """"
[C#]

string selectFormula = "{Customer.Last Year's Sales} > " + lastYearsSales.Text + " AND Mid({Customer.Customer Name}, 1) > \"" + customerName.Text + "\"";

5.

Asigne la variable de cadena a la propiedad SelectionFormula del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.SelectionFormula = mySelectFormula

[C#]

crystalReportViewer.SelectionFormula = selectFormula;

6.

Vuelva a enlazar el informe CustomerBySalesName a la propiedad ReportSource del control CrystalReportViewer. Nota La ruta de directorio de archivos que se muestra aqu es la de un proyecto de Visual Studio 2005. [Nombre_de_proyecto] se reemplaza por el nombre del proyecto Web o de Windows. [Nombre_de_usuario] se reemplaza por el nombre de conexin del equipo. La ruta predeterminada del proyecto de un sitio Web es la siguiente: [Visual Basic]

myCrystalReportViewer.ReportSource = "C:\WebSites\ProjectName\CustomersBySalesName.rpt"
[C#]

crystalReportViewer.ReportSource = "C:\\WebSites\\ProjectName\\CustomersBySalesName.rpt";
La ruta predeterminada de un proyecto de Windows es la siguiente: [Visual Basic]

myCrystalReportViewer.ReportSource = "C:\Documents and Settings\UserName\My Documents\Visual Studio\Projects\ProjectName\CustomersBySalesName.rpt"


[C#]

crystalReportViewer.ReportSource = "C:\\Documents and Settings\\UserName\\My Documents\\Visual Studio\\Projects\\ ProjectName\\CustomersBySalesName.rpt";


Ya ha creado una frmula de seleccin que puede modificar en tiempo de ejecucin. Para probar la frmula de seleccin

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. 4. En el control TextBox de lastYearsSales, escriba "200000". 5. En el control TextBox de customerName, escriba "SAB". 6. Haga clic en Volver a mostrar el informe. El informe de Crystal muestra tres registros de clientes: SAB Mountain, Tek Bikes y Tienda de Bicicletas El Pardo. Se muestran slo los registros de clientes con nombres mayores que "SAB" y ventas del ao pasado mayor que "200000".

7.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Utilizar un control DropDownList para modificar la frmula de seleccin.

Utilizar un control DropDownList para modificar la frmula de seleccin


En esta seccin, va a llenar el control DropDownList con operadores de comparacin. Va a crear una enumeracin que contiene los operadores de comparacin. El control DropDownList selecciona si desea mostrar los nombres de los clientes que sean iguales a, menor que, mayor que, menor o igual que, mayor o igual o no es igual que el texto especificado en el control TextBox. En el mtodo de evento redisplay_Click(), va a modificar la cadena actualmente asignada a la propiedad SelectionFormula del control CrystalReportViewer. Para crear la enumeracin CeComparisonOperator

1. 2. 3.

En Explorador de soluciones, haga clic con el botn derecho en el nombre de proyecto en negrita, elija Agregar y, a continuacin, haga clic en Agregar nuevo elemento. En el cuadro de dilogo Agregar nuevo elemento, seleccione Clase desde la vista Plantillas. En el campo Nombre, escriba "CeComparisonOperator" y, a continuacin, haga clic en Agregar. Nota En Visual Studio 2005, puede que se le pida que coloque esta clase en un directorio de cdigo. Haga clic en el botn S.

4. En la firma de clase, cambie la palabra clase por enum para convertir la clase en una enumeracin. En un proyecto de Windows de C# para Visual Studio 2005, tambin debe cambiar el espacio de nombres al nombre del proyecto. Nota En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeracin. 5. Puesto que las enumeraciones no tienen constructores, elimine el mtodo constructor predeterminado que se proporciona en la versin de C# del cdigo. 6. En la enumeracin, especifique los valores: [Visual Basic]

EqualTo LessThan GreaterThan LessThan_or_EqualTo GreaterThan_or_EqualTo Not_EqualTo


[C#]

EqualTo, LessThan, GreaterThan, LessThan_or_EqualTo, GreaterThan_or_EqualTo, Not_EqualTo

Los siguientes procedimientos explican cmo enlazar la enumeracin CeComparisonOperator al control DropDownList de un sitio Web o un proyecto para Windows. Siga las instrucciones de uno de los siguientes procedimientos de varios pasos. Para llenar el control DropDownList desde la enumeracin CeComparisonOperator para un sitio Web 1. Abra el formulario Web Forms. 2. En el men Ver, haga clic en Cdigo. 3. En el bloque condicional Not IsPostBack del mtodo ConfigureCrystalReports(), delante de la declaracin de cadena de la frmula de seleccin, establezca el valor de la propiedad DataSource del control DropDownList en los valores de la enumeracin CeComparisonOperator. [Visual Basic]

selectOperatorList.DataSource = System.Enum.GetValues(GetType(CeComparisonOperator))
[C#]

selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));

4.

Ahora, llame al mtodo DataBind() del control DropDownList de selectOperatorList para enlazar los valores al control. [Visual Basic]

selectOperatorList.DataBind()
[C#]

selectOperatorList.DataBind();
Para llenar el control DropDownList desde la enumeracin CeComparisonOperator para un proyecto de Windows 1. Abra el formulario Windows Forms. 2. En el men Ver, haga clic en Cdigo. 3. En el mtodo ConfigureCrystalReports(), delante de la declaracin de cadena de la frmula de seleccin, establezca el valor de la propiedad DataSource del control ComboBox de selectOperatorList en los valores de la enumeracin CeComparisonOperator. [Visual Basic]

selectOperatorList.DataSource = System.Enum.GetValues(GetType(CeComparisonOperator))
[C#]

selectOperatorList.DataSource = System.Enum.GetValues(typeof(CeComparisonOperator));
Despus, va a crear el mtodo de ayuda GetSelectedCompareOperator() para que devuelva el ndice seleccionado como cadena que representa un signo de operador de comparacin.

Para crear el mtodo de ayuda GetSelectedCompareOperator()

1.

En la parte inferior de la clase, cree un mtodo de ayuda privado denominado GetSelectedCompareOperator() que devuelva una variable de cadena. [Visual Basic]

Private Function GetSelectedCompareOperator() As String End Function


[C#]

private string GetSelectedCompareOperator() { }

2.

En el mtodo, cree una instruccin "Select Case" [Visual Basic] o "switch" [C#] que haga referencia a los miembros de la enumeracin CeComparisonOperator y devuelva el signo del operador de comparacin como variable de cadena. [Visual Basic]

Select Case selectOperatorList.SelectedIndex Case CeComparisonOperator.EqualTo return "=" Case CeComparisonOperator.LessThan return "<" Case CeComparisonOperator.GreaterThan return ">" Case CeComparisonOperator.LessThan_or_EqualTo return "<=" Case CeComparisonOperator.GreaterThan_or_EqualTo return ">=" Case CeComparisonOperator.Not_EqualTo return "<>" Case Else return "=" End Select
[C#]

switch ((CeComparisonOperator)selectOperatorList.SelectedIndex) { case CeComparisonOperator.EqualTo: return "="; case CeComparisonOperator.LessThan: return "<"; case CeComparisonOperator.GreaterThan: return ">"; case CeComparisonOperator.LessThan_or_EqualTo: return "<="; case CeComparisonOperator.GreaterThan_or_EqualTo: return ">="; case CeComparisonOperator.Not_EqualTo: return "<>"; default: return "="; }

En el mtodo de evento redisplay_Click(), se utiliza actualmente un signo "mayor que" (">") para la seleccin del campo Nombre del cliente. A continuacin, aprender a cambiar el signo al operador de comparacin seleccionado desde el control DropDownList. El signo seleccionado se devuelve como cadena al llamar al mtodo de ayuda GetSelectedCompareOperator(). Para modificar el operador de comparacin de Nombre del cliente asignado a la propiedad SelectionFormula

1.

En la parte superior del mtodo de evento redisplay_Click(), llame al mtodo de ayuda GetSelectedCompareOperator() y asigne el resultado a una variable de cadena. [Visual Basic]

Dim mySelectedOperator As String = GetSelectedCompareOperator()


[C#]

string selectedOperator = GetSelectedCompareOperator();


2. Para la variable de cadena de la frmula de seleccin, reemplace el signo "mayor que" (">") por la cadena del operador seleccionado. [Visual Basic]

Dim mySelectFormula As String = "{Customer.Last Year's Sales} > " & lastYearsSales.Text _ & " AND Mid({Customer.Customer Name}, 1) " & mySelectedOperator & " """ & customerName.Text & """"
[C#]

string selectFormula = "{Customer.Last Year's Sales} > " + lastYearsSales.Text + " AND Mid({Customer.Customer Name}, 1) " + selectedOperator + " \"" + customerName.Text + "\"";
Ha creado una frmula de seleccin que depende de los valores especificados para el campo Ventas del ao pasado y el campo Nombre del cliente. Ahora puede generar y probar la frmula de seleccin. Para probar la frmula de seleccin del informe CustomersBySalesName

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. a. En el control TextBox de lastYearsSales, escriba "40000". b. En el control TextBox de customerName, escriba "Athens Bicycle Co.". c. En DropDownList, seleccione "LessThan". d. Haga clic en Volver a mostrar el informe. El informe de Crystal muestra dos registros de clientes: Alley Cat Cycles y Ankara Bicycle Company.

4.

Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuracin.

Contine con Conclusin.

Conclusin
Ha creado correctamente una frmula de seleccin para modificar los registros mostrados en el informe de Crystal. Ha aprendido a leer los valores de los controles TextBox y DropDownList para modificar la frmula de seleccin. Tambin ha aprendido a crear una enumeracin de operadores de comparacin que le permite seleccionar la forma en la que desea filtrar los datos.

Tutorial: Personalizar el control CrystalReportViewer


En este tutorial, aprender a personalizar la presentacin del informe. Asimismo, aprender a seleccionar un nmero de pgina o un factor de zoom especficos y a buscar texto en el informe.

En un sitio Web, va a aprender a seleccionar un modo de impresin y a personalizar un borde. Haga clic en el vnculo adecuado para pasar a esa seccin:

Introduccin Crear una tabla de configuracin personalizada Elementos de barra de herramientas y de informe del control CrystalReportViewer Agregar un mecanismo para mostrar u ocultar los elementos de barra de herramientas y de informe Configurar los controles ListBox de un sitio Web Configurar los controles ListBox de un proyecto para Windows Modificar el color de fondo del informe Agregar cdigo para seleccionar una pgina del informe Modificar el factor de Zoom Buscar en un informe Agregar un borde al informe de un sitio Web Configurar la conservacin de Session de un sitio Web Modificar los grficos y las hojas de estilo en cascada de un sitio Web Conclusin Informacin de cdigo de ejemplo

Introduccin
En este tutorial, aprender a personalizar el aspecto del control CrystalReportViewer mediante el uso de las propiedades desde su clase subyacente. Asimismo, aprender a utilizar los mtodos de seleccin de pgina, zoom, bsqueda e impresin. Para comenzar, va a aprender a personalizar la barra de herramientas de CrystalReportViewer. Necesita un control ListBox que almacene las propiedades disponibles para la barra de herramientas. Slo las propiedades seleccionadas desde este control se muestran en la barra de herramientas de CrystalReportViewer. A continuacin, agregar un segundo control ListBox para almacenar los elementos del informe. En los sitios Web, tambin puede elegir mostrar todas las pginas del informe como una sola pgina o como pginas separadas. Aprender a personalizar el color de fondo mediante un control DropDownList. Despus, aprender a seleccionar la pgina del informe que desee ver. Necesita un control TextBox para especificar el nmero de pgina y un control Button para volver a cargar el informe en la pgina seleccionada. Necesita, tambin, los controles TextBox y Button para modificar el factor de zoom y para buscar texto en el informe. En los sitios Web, tiene acceso a propiedades del control CrystalReportViewer que no estn disponibles en los proyectos para Windows: una propiedad para elegir el modo de impresin y otras propiedades para cambiar el ancho, estilo y color de los bordes. Contine con Crear una tabla de configuracin personalizada.

Crear una tabla de configuracin personalizada

En esta seccin, crear y configurar una tabla (en un sitio Web) o un control TableLayoutPanel (en un proyecto para Windows) para albergar los distintos controles que forman la tabla de configuracin personalizada. Debido a que los sitios Web y los proyectos para Windows usan un tipo de tabla diferente, seleccione el procedimiento con pasos que corresponda a su sitio Web o proyecto para Windows. Para crear una tabla de configuracin personalizada para un sitio Web Nota Este procedimiento slo funciona con un proyecto creado a partir de la Configuracin de proyectos. La Configuracin de proyectos contiene referencias especficas a espacios de nombres y configuracin de cdigos necesarios para este procedimiento, y ste no se podr completar sin dicha configuracin. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasos de Configuracin de proyectos.

1. 2. 3. 4. 5. 6.

Abra la pgina Default.aspx (el formulario Web Forms) en la vista Diseo. Haga clic en el control CrystalReportViewer para seleccionarlo. Presione la flecha izquierda para mover el cursor a la izquierda del control CrystalReportViewer y presione Intro. Presione la flecha arriba para mover el cursor a la lnea vaca situada encima del control CrystalReportViewer. En el men Diseo, haga clic en Insertar tabla. En el cuadro de dilogo Insertar tabla, seleccione el botn de radio Personalizado. Nota El botn de radio Personalizado ya est seleccionado de forma predeterminada.

7. En el panel Diseo, active la casilla de verificacin Ancho y deje el valor en un 100%. 8. Aumente la cuenta de Filas a 6 y la de Columnas a 4. 9. En el panel Atributos, active la casilla de verificacin Borde, y aumente la cuenta a 1. 10. Haga clic en el botn Propiedades de celda... 11. En el cuadro de dilogo Propiedades de celda, en el panel Diseo, establezca el cuadro
combinado Alineacin vertical a Superior.

12. Active la casilla de verificacin Sin ajuste de lnea y, a continuacin, haga clic en Aceptar. 13. Haga clic en Aceptar de nuevo para cerrar el cuadro de dilogo Insertar tabla.
Ahora ya estar preparado para agregar controles personalizados a esta tabla para el sitio Web. Contine con Elementos de barra de herramientas y de informe del control CrystalReportViewer Para crear una tabla de configuracin personalizada para un proyecto para Windows Nota Este procedimiento slo funciona con un proyecto creado a partir de la Configuracin de proyectos. La Configuracin de proyectos contiene referencias especficas a espacios de nombres y configuracin de cdigos necesarios para este procedimiento, y ste no se podr completar sin dicha configuracin. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasos de Configuracin de proyectos.

1.

Abra el formulario Windows Forms en la vista Diseo. 2. Haga clic en la barra de ttulo Formulario para seleccionar todo el formulario y, a continuacin, arrastre la esquina inferior derecha del formulario para ampliarlo de modo que llene el rea principal. 3. Haga clic en el control CrystalReportViewer para seleccionarlo. 4. En la ventana Propiedades, establezca Dock en "Bottom". 5. En la ventana Propiedades, establezca Anchor en "Top, Bottom, Left, Right".

6.

En Cuadro de herramientas, arrastre un control TableLayoutPanel hasta la parte superior izquierda del formulario Windows Forms. Aparecer un control TableLayoutPanel, mostrando dos columnas y dos filas.

7.

Si el panel Tarea inteligente no est abierto, haga clic en el botn triangular de la esquina superior derecha del control TableLayoutPanel. Se abrir el panel Tarea inteligente denominado "TableLayoutPanel Tasks".

8. 9.

En la etiqueta TableLayoutPanel Tasks, haga clic en el vnculo Editar filas y columnas. En el cuadro de dilogo Estilos de columna y fila, en el cuadro combinado Tipo de miembro, seleccione Columnas. 10. Haga clic en Agregar hasta que tenga un total de cuatro columnas. 11. Para cada columna, realice lo siguiente: a. Seleccione la columna. b. En el panel Tipo de tamao seleccione Porcentaje. c. Establezca cada valor al 25%. 12. En el cuadro combinado Tipo de miembro, seleccione Columnas. 13. Haga clic en Agregar hasta que tenga un total de cinco filas. Nota La tabla de un proyecto para Windows requiere una fila menos que la tabla de un sitio Web, porque hay menos opciones configurables en un control CrystalReportViewer de un proyecto para Windows. 14. Para cada fila, realice lo siguiente: a. Seleccione la fila. b. En el panel Tipo de tamao seleccione Porcentaje. c. Establezca el valor de la primera fila al 40%, y para las filas subsiguientes establezca el valor al 15%. Nota (1 x 40%) y (4 x 15%) = 100% de espacio disponible.

15. Haga clic en Aceptar. 16. Cierre la etiqueta TableLayoutPanel Tasks. 17. Arrastre la esquina inferior derecha del control TableLayoutPanel para agrandar la tabla hasta
que llene el espacio creado encima del control CrystalReportViewer. Ahora ya estar preparado para agregar controles personalizados a esta tabla para el proyecto para Windows. Contine con Elementos de barra de herramientas y de informe del control CrystalReportViewer

Elementos de barra de herramientas y de informe del control CrystalReportViewer


En este tutorial manipular los distintos elementos de barra de herramientas y de informe del control CrystalReportViewer. Elementos de visor Los elementos predeterminados del control CrystalReportViewer varan ligeramente para los sitios Web y para los proyectos para Windows:

Tanto para sitios Web como para proyectos para Windows:

Barra de herramientas: muestra una barra de herramientas encima del rea principal del informe. Los elementos individuales dentro de la barra de herramientas se controlan por separado. Nota Para obtener ms informacin, vea la seccin siguiente relativa a los elementos de barra de herramientas.

rbol de grupo: muestra los encabezados de cada grupo del informe, de forma parecida al rbol de grupo de un informe, que aparece en el panel de la columna izquierda de ste. Slo para sitios Web: Pgina principal: muestra el informe en el rea principal de la pgina. Habilitar pginas separadas: determina si el informe se muestra en una nica pgina Web o como pginas formateadas independientes. Slo para proyectos para Windows: Barra de estado: muestra el nmero de pgina actual y otra informacin sobre el informe, en la parte inferior del rea del informe.

Elementos de la barra de herramientas Los elementos predeterminados de la barra de herramientas varan ligeramente para los sitios Web y para los proyectos para Windows:

Tanto para sitios Web como para proyectos para Windows: Botn rbol de grupo: muestra u oculta la seccin del rbol de grupo del informe. Exportar: guarda el informe de Crystal en otro formato de archivo, como los archivos RPT, PDF, DOC, XLS o RTF. Imprimir: imprime el informe de Crystal en un archivo PDF o llama al cuadro de dilogo Imprimir. Exploracin de pginas: le permite seleccionar la pgina siguiente, anterior, ltima o primera para verla. Ir a pgina: le permite escribir el nmero de pgina que desee ver. Buscar: le permite escribir en una cadena que desee buscar en el informe. Factor de zoom: le permite seleccionar el factor de zoom del informe. Slo para sitios Web: Lista de vista (slo para sitios Web): elige la vista que se va a mostrar del informe, (por ejemplo, subinformes, etc.). Sintetizar: abre una pgina con informacin ms especfica que el tema actual. Logotipo de Crystal: muestra el logotipo de producto de Crystal Reports. Slo para proyectos para Windows: Actualizar: vuelve a mostrar el informe. Cerrar vista actual: cierra la vista actual del informe si estn abiertas varias vistas.

Contine con Agregar un mecanismo para mostrar u ocultar los elementos de barra de herramientas y de informe

Agregar un mecanismo para mostrar u ocultar los elementos de barra de herramientas y de informe
En esta seccin aprender a agregar un mecanismo que determina qu elementos de la barra de herramientas CrystalReportViewer se muestran u ocultan. Empezar agregando los controles ListBox y Button a la tabla en el formulario Web Forms o Windows Forms. A continuacin, crear dos enumeraciones que muestran una lista de los elementos del informe y de la barra de herramientas, y llenar cada control ListBox con los valores de una de las enumeraciones.

Despus, codificar el evento de clic del control Button para actualizar los elementos de la barra de herramientas. Dentro del controlador de eventos las propiedades de la clase CrystalReportViewer se establecen basndose en los dos controles ListBox. Si se selecciona un elemento de ListBox, la propiedad de la barra de herramientas se establece en True. Ms tarde en este tutorial, se utilizar el control Button para actualizar selecciones adicionales. En tiempo de ejecucin, puede seleccionar qu elementos del informe y de la barra de herramientas desea mostrar. Empezar agregando los controles a la tabla en la parte superior del formulario Web Forms o Windows Forms. Para agregar los controles ListBox y Button 1. Abra el formulario Web Forms o Windows Forms en la vista Diseo. 2. En el Cuadro de herramientas, arrastre un control Label a la primera fila y la columna uno de la tabla. 3. Seleccione el control Label y, a continuacin, en la ventana Propiedades, establezca la propiedad Text en "Seleccionar elementos de informe para mostrar". 4. En el Cuadro de herramientas, arrastre un control ListBox a la primera fila y la columna dos de la tabla. 5. Seleccione el control ListBox y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el ID a "listCRVReport." Establezca SelectionMode en "Multiple" (en un proyecto de Windows, "MultiExtended"). 6. En el Cuadro de herramientas, arrastre un segundo control Label a la primera fila y la columna tres de la tabla. 7. Seleccione el control Label y, a continuacin, en la ventana Propiedades, establezca la propiedad Text en "Seleccionar elementos de barra de herramientas para mostrar". 8. En el Cuadro de herramientas, arrastre un control Button a la tercera fila y la columna uno de la tabla. 9. Haga clic en el control Button para seleccionarlo. 10. En la ventana Propiedades: Establezca ID en "redisplay". Establezca Text como "Volver a mostrar el informe". 11. En un proyecto para Windows, ajuste el tamao del control Button para mostrar el texto completo del botn. Los pasos siguientes varan, dependiendo de si se crea un sitio Web o un proyecto para Windows. Elija uno de los temas siguientes:

Configurar los controles ListBox de un sitio Web Configurar los controles ListBox de un proyecto para Windows

Configurar los controles ListBox de un proyecto para Windows


Esta seccin explica cmo configurar los controles ListBox de un proyecto para Windows. Si va a crear un sitio Web, vea Configurar los controles ListBox de un sitio Web. Ahora puede crear el controlador de eventos de clic para el control Button y, a continuacin, agregar cdigo a este controlador de eventos. El controlador de eventos define varios valores booleanos para las

propiedades de barra de herramientas de la clase CrystalReportViewer basndose en las selecciones del usuario en el control ListBox. Antes de crear este controlador de eventos, deber crear dos enumeraciones: CeWinCRVReportOptions y CeWinCRVToolbarOptions. Estas enumeraciones proporcionan una lista de elementos de informe y de barra de herramientas seleccionables. Para crear la enumeracin CeWinCRVReportOptions

1. 2.

En Explorador de soluciones, haga clic con el botn derecho en el nombre de proyecto en negrita, elija Agregar y, a continuacin, haga clic en Clase. En el cuadro de dilogo Agregar nuevo elemento, en el campo Nombre, escriba "CeWinCRVReportOptions" y, a continuacin, haga clic en Agregar. Nota En Visual Studio 2005, puede que se le pida que coloque esta clase en un directorio App_Code. Haga clic en el botn S.

3. En la firma de clase, cambie la palabra clase por "enum" para convertir la clase en una enumeracin. Nota En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeracin. 4. Puesto que las enumeraciones no tienen constructores, elimine el mtodo constructor predeterminado que se proporciona en la versin de C# del cdigo. 5. En la enumeracin, especifique los valores: [Visual Basic]

Toolbar Group_Tree Status_Bar


[C#]

Toolbar, Group_Tree, Status_Bar

6.

En el men Archivo, haga clic en Guardar todo.

Para crear la enumeracin CeWinCRVToolbarOptions

1. 2.

En Explorador de soluciones, haga clic con el botn derecho en el nombre de proyecto en negrita, elija Agregar y, a continuacin, haga clic en Clase. En el cuadro de dilogo Agregar nuevo elemento, en el campo Nombre, escriba "CeWinCRVToolbarOptions" y, a continuacin, haga clic en Agregar. Nota En Visual Studio 2005, puede que se le pida que coloque esta clase en un directorio App_Code. Haga clic en el botn S.

3. En la firma de clase, cambie la palabra clase por "enum" para convertir la clase en una enumeracin.

Nota En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeracin. 4. Puesto que las enumeraciones no tienen constructores, elimine el mtodo constructor predeterminado que se proporciona en la versin de C# del cdigo. 5. En la enumeracin, especifique los valores: [Visual Basic]

Page_Navigation_Button Go_to_Page_Button Close_View_Button Print_Button Refresh_Button Export_Button Group_Tree_Button Zoom_Button Search_Button


[C#]

Page_Navigation_Button, Go_to_Page_Button, Close_View_Button, Print_Button, Refresh_Button, Export_Button, Group_Tree_Button, Zoom_Button, Search_Button

6.

En el men Archivo, haga clic en Guardar todo.

Ahora llene los controles ListBox con los valores de la enumeracin, que representan las propiedades disponibles para la barra de herramientas de CrystalReportViewer. Para llenar los controles ListBox a partir de las enumeraciones 1. Abra el formulario Windows Forms. 2. En el men Ver, haga clic en Cdigo. 3. En el mtodo ConfigureCrystalReports(), establezca el valor de la propiedad DataSource del control ListBox de listCRVReport en los valores de la enumeracin CeWinCRVReportOptions. Nota El mtodo ConfigureCrystalReports() lo cre durante Configuracin de proyectos al comienzo de este tutorial. Para completar este tutorial correctamente, deber empezar realizando Configuracin de proyectos. [Visual Basic]

listCRVReport.DataSource = System.Enum.GetValues(GetType(CeWinCRVReportOptions))
[C#]

listCRVReport.DataSource = System.Enum.GetValues(typeof(CeWinCRVReportOptions));

4.

Establezca el valor de la propiedad DataSource del control ListBox de listCRVToolbar en los valores de la enumeracin CeWinCRVToolbarOptions. [Visual Basic]

listCRVToolbar.DataSource = System.Enum.GetValues(GetType(CeWinCRVToolbarOptions))
[C#]

listCRVToolbar.DataSource = System.Enum.GetValues(typeof(CeWinCRVToolbarOptions));

5.

Enlace el archivo Chart.rpt a la propiedad ReportSource del control CrystalReportViewer. Para obtener informacin sobre informes de muestra, vea Directorio de informes de muestra. [Visual Basic]

myCrystalReportViewer.ReportSource = "C:\Program Files\Microsoft Visual Studio 8\Crystal Reports\Samples\es\Reports\Feature Examples\Chart.rpt"


[C#]

crystalReportViewer.ReportSource = "C:\\Program Files\\Microsoft Visual Studio 8\\Crystal Reports\\Samples\\es\\Reports\\Feature Examples\\Chart.rpt";


Ahora puede agregar cdigo al evento de clic del control Button. El mtodo de clic debe establecer los valores booleanos de los elementos de barra de herramientas y de informe de la clase CrystalReportViewer. Si se selecciona un elemento, el valor booleano establece en True, y se muestra el elemento de barra de herramientas o de informe. Si no se selecciona ninguna propiedad, el valor booleano se establece en False y no se muestra el elemento de barra de herramientas o de informe. Para codificar el control Button que vuelve a mostrar el informe de un proyecto de Windows 1. Abra el formulario Windows Forms. 2. En el men Ver, haga clic en Diseador. 3. Haga doble clic en el control Button que vuelve a mostrar el informe. Aparece la clase de cdigo subyacente del informe y muestra que se ha generado automticamente un mtodo de evento redisplay_Click().

4.

En el mtodo de evento redisplay_Click(), llame al mtodo GetSelected() y pase todos los elementos desde ListBox. El mtodo GetSelected() devuelve un valor booleano para establecer las propiedades de barra de herramientas o de informe de CrystalReportViewer. Nota Los elementos de barra de herramientas y de informe de CrystalReportViewer se establecen a sus valores correspondientes en las enumeraciones CeWinCRVReportOptions y CeWinCRVToolbarOptions. [Visual Basic]

myCrystalReportViewer.ShowPageNavigateButtons = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Page_Navigation_Button) myCrystalReportViewer.ShowGotoPageButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Go_to_Page_Button)

myCrystalReportViewer.ShowCloseButton = listCRVToolbar. GetSelected(CeWinCRVToolbarOptions.Close_View_Button) myCrystalReportViewer.ShowPrintButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Print_Button) myCrystalReportViewer.ShowRefreshButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Refresh_Button) myCrystalReportViewer.ShowExportButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Export_Button) myCrystalReportViewer.ShowGroupTreeButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Group_Tree_Button) myCrystalReportViewer.ShowZoomButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Zoom_Button) myCrystalReportViewer.ShowTextSearchButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Search_Button) myCrystalReportViewer.DisplayToolbar = listCRVReport.GetSelected(CeWinCRVReportOptions.Toolbar) myCrystalReportViewer.DisplayGroupTree = listCRVReport.GetSelected(CeWinCRVReportOptions.Group_Tree) myCrystalReportViewer.DisplayStatusBar = listCRVReport.GetSelected(CeWinCRVReportOptions.Status_Bar)
[C#]

crystalReportViewer.ShowPageNavigateButtons = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Page_Naviga tion_Button)); crystalReportViewer.ShowGotoPageButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Go_to_Page_ Button)); crystalReportViewer.ShowCloseButton = listCRVToolbar. GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Close_View_Button)); crystalReportViewer.ShowPrintButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Print_Butto n)); crystalReportViewer.ShowRefreshButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Refresh_But ton)); crystalReportViewer.ShowExportButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Export_Butt on)); crystalReportViewer.ShowGroupTreeButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Group_Tree_ Button)); crystalReportViewer.ShowZoomButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Zoom_Button )); crystalReportViewer.ShowTextSearchButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Search_Butt on)); crystalReportViewer.DisplayToolbar = listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Toolbar)); crystalReportViewer.DisplayGroupTree = listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Group_Tree)); crystalReportViewer.DisplayStatusBar = listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Status_Bar));
Ya est preparado para generar y ejecutar el proyecto con el fin de personalizar la barra de herramientas de CrystalReportViewer.

Para probar el control Button que vuelve a mostrar el informe

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. Los controles ListBox de listCRVReport y listCRVToolbar muestran una lista completa de opciones de barra de herramientas y de informe de CrystalReportViewer. 4. En el control ListBox de opciones de barra de herramientas, seleccione "Page_Navigation_Button", "Print_Button" y "Export_Button". 5. En el control ListBox de opciones de informe, seleccione "Toolbar", "Group_Tree" y "Main_Page". 6. Haga clic en Volver a mostrar el informe. La pgina se vuelve a cargar para mostrar un control CrystalReportViewer con una barra de herramientas, un rbol de grupos y una pgina principal visibles. Dentro de la barra de herramientas, slo estn visibles los botones Exploracin de pginas, Imprimir y Exportar.

7.

Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuracin.

Contine con Modificar el color de fondo del informe.

Modificar el color de fondo del informe


En esta seccin, aprender a modificar el color de fondo del informe. Para empezar, agregar un control DropDownList para la seleccin del color de fondo. Para agregar controles para cambiar el color de fondo 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Diseador. 3. En el Cuadro de herramientas, arrastre un control Label a la segunda fila y a la columna uno de la tabla. 4. Seleccione el control Label y, a continuacin, en la ventana Propiedades, establezca la propiedad Text en "Seleccionar color de fondo". 5. En Cuadro de herramientas, arrastre un control DropDownList (para sitios Web) o un control ComboBox (para proyectos para Windows) a la segunda fila y a la columna dos de la tabla. 6. Seleccione el control DropDownList/ComboBox y, a continuacin, en la ventana Propiedades, establezca el valor de ID/Nombre en "selectBackColor". Ahora, debe agregar cdigo al mtodo ConfigureCrystalReports() para establecer los valores predeterminados de la lista de colores de fondo y de las casillas de verificacin de los componentes del informe. Para establecer los valores predeterminados de los controles 1. Abra el formulario Web Forms o Windows Forms. 2. En el men Ver, haga clic en Cdigo. A continuacin, en el mtodo ConfigureCrystalReports(), agregue cdigo para establecer los valores predeterminados del control.

Nota

Not IsPostBack. Si est creando un proyecto Windows, coloque estas lneas de cdigo en el rea principal del mtodo ConfigureCrystalReports().

Si est creando un sitio Web, coloque estas lneas de cdigo dentro del bloque condicional

3.

Asigne la enumeracin KnownColor a la propiedad DataSource del control DropDownList de selectBackColor. [Visual Basic]

selectBackColor.DataSource = System.Enum.GetValues(GetType(KnownColor))
[C#]

selectBackColor.DataSource = System.Enum.GetValues(typeof(KnownColor));
4. En un sitio Web, enlace el origen de datos al control DropDownList de selectBackColor. [Visual Basic]

selectBackColor.DataBind()
[C#]

selectBackColor.DataBind();
A continuacin, agregue cdigo al evento de clic Button para volver a mostrar el informe basndose en las selecciones de selectBackColor y DropDownList. Este cdigo vara segn se trate de un sitio Web o de un proyecto para Windows. Seleccione el procedimiento apropiado a continuacin para el sitio Web o el proyecto para Windows. Para asignar la seleccin del color de fondo en un sitio Web 1. Abra el formulario Web Forms. 2. En el men Ver, haga clic en Cdigo. 3. Sobre la firma de clase, agregue una declaracin "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase del espacio de nombres System.Drawing (si todava no lo ha declarado). [Visual Basic]

Imports System.Drawing
[C#]

using System.Drawing;

4.

En el controlador de eventos redisplay_Click(), agregue el siguiente cdigo: En el control DropDownList de selectBackColor, recupere el elemento seleccionado como cadena y pselo al mtodo FromName() de la clase Color. Asigne el valor de Color a la propiedad BackColor del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.BackColor = Color.FromName(selectBackColor.SelectedItem.Text)
[C#]

crystalReportViewer.BackColor = Color.FromName(selectBackColor.SelectedItem.Text);
Ahora ya podr probar el botn Volver a mostrar el informe. Pase a dicha seccin, a continuacin. Para asignar la seleccin del color de fondo en un proyecto para Windows 1. Abra el formulario Windows Forms. 2. En el men Ver, haga clic en Cdigo. 3. Sobre la firma de clase, agregue una declaracin "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase del espacio de nombres System.Drawing (si todava no lo ha declarado). [Visual Basic]

Imports System.Drawing
[C#]

using System.Drawing;

4.

En el controlador de eventos redisplay_Click(), agregue el siguiente cdigo: Desde el control ComboBox de selectBackColor, recupere el elemento seleccionado y convirtalo en una instancia de KnownColor. [Visual Basic]

Dim mySelectedKnownColor As KnownColor = CType(selectBackColor.SelectedItem, KnownColor)


[C#]

KnownColor selectedKnownColor = (KnownColor)selectBackColor.SelectedItem;


5. Cree un bloque condicional que compruebe que el color de fondo seleccionado no es transparente. [Visual Basic]

If Not mySelectedKnownColor = KnownColor.Transparent Then End If


[C#]

if (selectedKnownColor != KnownColor.Transparent) { }

6.

Dentro del bloque If, pase la instancia de KnownColor al mtodo FromKnownName() de la clase System.Drawing.Color. Asigne el valor de Color a la propiedad BackColor del control CrystalReportViewer. [Visual Basic]

myCrystalReportViewer.BackColor = System.Drawing.Color.FromKnownColor(mySelectedKnownColor)
[C#]

crystalReportViewer.BackColor = System.Drawing.Color.FromKnownColor(selectedKnownColor);
Ahora ya podr probar el botn Volver a mostrar el informe. Para probar el control Button que vuelve a mostrar el informe

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. Se muestran los controles DropDownList y ComboBox, junto con los controles ListBox y Button agregados en el procedimiento anterior.

4.

En el control DropDownList de selectBackColor, seleccione "Blue". Nota Recuerde seleccionar los elementos de informe, especialmente Main_Page, para que est visible

5.

Haga clic en Volver a mostrar el informe. La pgina se vuelve a cargar para mostrar el informe sobre un fondo azul.

6.

Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuracin.

Contine con Agregar cdigo para seleccionar una pgina del informe.

Agregar cdigo para seleccionar una pgina del informe


En esta seccin, aprender a codificar la opcin "Ir a pgina" de la barra de herramientas de CrystalReportViewer. Esta barra de herramientas contiene botones de exploracin de pginas y un cuadro de texto para seleccionar las pginas del informe. Puede utilizar los siguientes mtodos de la clase CrystalReportViewer con el fin de escribir cdigo manualmente para las selecciones de pgina:

ShowFirstPage() ShowLastPage() ShowNextPage() ShowNthPage(int PageNumber) ShowPreviousPage()

Cuando se llama a uno de estos mtodos, se muestra la pgina seleccionada para el informe actual.

Para agregar los controles TextBox y Button de la opcin "Ir a pgina" 1. Abra el formulario Web Forms o Windows Forms en la vista Diseo. 2. En el Cuadro de herramientas, arrastre un control TextBox a la cuarta fila y a la columna uno de la tabla. 3. Seleccione el control TextBox y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "pageNumber". Establezca el valor de la propiedad Text para que est vaca. 4. En el Cuadro de herramientas, arrastre un control Button a la cuarta fila y la columna dos de la tabla. 5. Seleccione el control Button y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "goToPage". Establezca el valor de Text en "Ir a pgina". Para codificar el controlador de eventos Click() del control Button

1.

Haga doble clic en el control Button de Ir a pgina. Aparece la clase de cdigo subyacente del informe y muestra que se ha generado automticamente un controlador de eventos goToPage_Click().

2.

Convierta el texto escrito en el control TextBox en un nmero entero y, a continuacin, pase el valor al mtodo ShowNthPage() del control CrystalReportViewer. Nota No ha validado que se especific un nmero entero en el control TextBox. Para una aplicacin de produccin, debera agregar un control de validacin configurado respecto al control TextBox. [Visual Basic]

myCrystalReportViewer.ShowNthPage(Convert.ToInt32(pageNumber.Text))
[C#]

crystalReportViewer.ShowNthPage(Convert.ToInt32(pageNumber.Text));
Para probar el control del botn goToPage

1.

En el men Crear, seleccione Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. Se muestran el informe Chart y todos los controles agregados.

4.

Especifique "3" en el control TextBox de pageNumber y, a continuacin, haga clic en Ir a pgina. Se vuelve a cargar la pgina para mostrar la pgina 3 del informe.

5.

Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuracin.

Contine con Modificar el factor de zoom.

Modificar el factor de zoom


De forma predeterminada, la barra de herramientas de CrystalReportViewer le permite seleccionar un factor de zoom comprendido entre el 25% y el 400% mediante incrementos fijos de 25%, 50% o 100%. En esta seccin, va a agregar cdigo para permitir cualquier factor de zoom que desee. Necesita un control TextBox en el que escribir el factor de zoom deseado y un control Button para volver a cargar la pgina. Para agregar los controles TextBox y Button para la opcin Zoom 1. Abra el formulario Web Forms o Windows Forms en la vista Diseo. 2. En el Cuadro de herramientas, arrastre un control TextBox a la cuarta fila y a la columna tres de la tabla. 3. Seleccione el control TextBox y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "zoomFactor". Establezca el valor de la propiedad Text para que est vaca. 4. En el Cuadro de herramientas, arrastre un control Button a la cuarta fila y la columna cuatro de la tabla. 5. Seleccione el control Button y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "updateZoomFactor". Establezca el valor de Text en "% de zoom". Para codificar el controlador de eventos Click() del control Button

1.

Haga doble clic en el control Button de updateZoomFactor. Aparece la clase de cdigo subyacente del informe y muestra que se ha generado automticamente un controlador de eventos updateZoomFactor_Click().

2.

Convierta el texto escrito en el control TextBox en un nmero entero y, a continuacin, pase el valor al mtodo Zoom() del control CrystalReportViewer. Nota No ha validado que se especific un nmero entero en el control TextBox. Para una aplicacin de produccin, debera agregar un control de validacin configurado respecto al control TextBox. [Visual Basic]

myCrystalReportViewer.Zoom(Convert.ToInt32(zoomFactor.Text))
[C#]

crystalReportViewer.Zoom(Convert.ToInt32(zoomFactor.Text));
Para probar el control updateZoomFactor

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. Se muestran el informe Chart y todos los controles agregados.

4.

Especifique "38" en el control TextBox de zoomFactor y, a continuacin, haga clic en Zoom. Se vuelve a cargar la pgina para mostrar la pgina actual al 38% de su tamao original.

5.

Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuracin.

Contine con Buscar en el informe.

Buscar en el informe
En esta seccin, aprender a buscar texto en un informe de Crystal que enlace con el control CrystalReportViewer. Necesita un control TextBox para escribir la cadena de bsqueda deseada, un control Button para buscar en el informe y un control Label para notificar el xito o el error de la bsqueda. Para agregar los controles TextBox, Button y Label para la opcin Search 1. Abra el formulario Web Forms o Windows Forms en la vista Diseo. 2. En el Cuadro de herramientas, arrastre un control TextBox a la quinta fila y a la columna uno de la tabla. 3. Seleccione el control TextBox y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "searchText". Establezca el valor de la propiedad Text para que est vaca. 4. En el Cuadro de herramientas, arrastre un control Button a la quinta fila y la columna dos de la tabla. 5. Seleccione el control Button y, a continuacin, desde la ventana Propiedades, siga estos pasos: Establezca el valor de ID (o Nombre) en "search". Establezca el valor de Text en "Buscar texto". 6. En el Cuadro de herramientas, arrastre un control Label a la quinta fila y a la columna tres de la tabla. Establezca el valor de ID (o Nombre) en "message". Establezca el valor de Text para que est vaco. Establezca el valor de ForeColor en Red. 7. Cree la clase MessageConstants para almacenar respuestas estndar como constantes de cadena para la bsqueda. Nota Para obtener instrucciones sobre cmo crear esta clase, vea Agregar una clase para mensajes de error. Despus, debe llamar al mtodo SearchForText() en el control Button de bsqueda. Nota El mtodo SearchForText() no tiene el mismo comportamiento si se trata de un sitio Web o un proyecto para Windows. En los sitios Web, el mtodo SearchForText() devuelve True cuando no se obtienen resultados. En los proyectos de Windows, el mtodo SearchForText() devuelve True cuando se obtienen resultados. A su vez, en los sitios Web, la bsqueda encuentra slo la primera aparicin de la cadena; mientras que, en los proyectos para Windows, la bsqueda contina a partir del ltimo resultado de la bsqueda. Como el mtodo no tiene el mismo comportamiento si se trata de un sitio Web o un proyecto para Windows, realice el siguiente procedimiento con pasos correspondiente a un sitio Web o un proyecto para Windows.

Para codificar el controlador de eventos search_Click() para un sitio Web

1.

Haga doble clic en el control Button de search. Aparece la clase de cdigo subyacente del informe y muestra que se ha generado automticamente un controlador de eventos search_Click().

2.

Recupere el texto escrito en el control TextBox y, a continuacin, pase el valor al mtodo SearchForText() del control CrystalReportViewer. Asigne la llamada del mtodo a una variable booleana. Nota Para que la clase SearchDirection sea accesible, deber incluir un enunciado "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de cdigo subyacente del

espacio de nombres CrystalDecisions.Shared. (Esta declaracin se ha agregado en Configuracin de proyectos.) [Visual Basic]

Dim mySearchResult As Boolean = myCrystalReportViewer.SearchForText(searchText.Text, SearchDirection.Forward)


[C#]

bool searchResult = crystalReportViewer.SearchForText(searchText.Text, SearchDirection.Forward);


3. Cree un bloque condicional que compruebe si la bsqueda tiene xito. [Visual Basic]

If Not mySearchResult Then Else End If


[C#]

if(!searchResult) { } else { }

4.

En el bloque If, asigne la constante MessageConstants.SUCCESS a la propiedad Text del control Label del mensaje. [Visual Basic]

message.Text = MessageConstants.SUCCESS
[C#]

message.Text = MessageConstants.SUCCESS;

5.

En el bloque Else, asigne la constante MessageConstants.FAILURE a la propiedad Text del control Label del mensaje. [Visual Basic]

message.Text = MessageConstants.FAILURE
[C#]

message.Text = MessageConstants.FAILURE;
Sltese el siguiente procedimiento de un proyecto para Windows y vaya al prximo procedimiento de prueba. Para codificar el controlador de eventos search_Click() para un proyecto para Windows

1.

Haga doble clic en el control Button de search. Aparece la clase de cdigo subyacente del informe y muestra que se ha generado automticamente un controlador de eventos search_Click().

2.

Recupere el texto escrito en el control TextBox y, a continuacin, pase el valor al mtodo SearchForText() del control CrystalReportViewer. Asigne la llamada del mtodo a una variable booleana. [Visual Basic]

Dim mySearchResult As Boolean = myCrystalReportViewer.SearchForText(searchText.Text)


[C#]

bool searchResult = crystalReportViewer.SearchForText(searchText.Text);


3. Cree un bloque condicional que compruebe si la bsqueda tiene xito. [Visual Basic]

If mySearchResult Then Else End If


[C#]

if(searchResult) { } else { }

4.

En el bloque If, asigne la constante MessageConstants.SUCCESS a la propiedad Text del control Label del mensaje.

[Visual Basic]

message.Text = MessageConstants.SUCCESS
[C#]

message.Text = MessageConstants.SUCCESS;

5.

En el bloque Else, asigne la constante MessageConstants.FAILURE a la propiedad Text del control Label del mensaje. [Visual Basic]

message.Text = MessageConstants.FAILURE
[C#]

message.Text = MessageConstants.FAILURE;
Para probar el control Button de search

1.

En el men Crear, haga clic en Generar solucin. 2. Si existen errores de generacin, contine y corrjalos ahora. 3. En el men Depurar, haga clic en Iniciar. Se muestran el informe Chart y todos los controles agregados.

4.

Especifique "China" en el control TextBox de searchText y, a continuacin, haga clic en Buscar. Se vuelve a cargar la pgina para resaltar el resultado de la bsqueda y para mostrar un mensaje de xito.

5.

Especifique "hola" en el control TextBox de searchText y, a continuacin, haga clic en Buscar. Se vuelve a cargar la pgina para mostrar un mensaje de error.

6.

Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuracin.

Las opciones de personalizacin restantes slo estn disponibles para la versin Web del control CrystalReportViewer.

Por lo tanto, si est desarrollando un sitio Web, contine con Agregar un borde al informe de un sitio Web. En caso contrario, si est desarrollando un proyecto para Windows, contine con Conclusin.

Conclusin
Ha agregado correctamente cdigo para personalizar el informe que enlaza con el control CrystalReportViewer. Asimismo, ha aprendido a seleccionar una pgina, cambiar el factor de zoom, buscar texto, elegir un modo de impresin y personalizar el borde.