Tutoriales y código de ejemplo Crystal reports

May 7, 2018 | Author: olvin_80 | Category: Microsoft Sql Server, C Sharp (Programming Language), Password, Point And Click, Basic


Comments



Description

Tutoriales y código de ejemplo Cristal ReportsEsta sección presenta una gran selección de tutoriales que permite trabajar con Crystal Reports para Visual Studio 2005. Cada tutorial le guía paso a paso en todo el proceso de creación de proyectos que proporciona soluciones para una serie de casos de elaboración de informes. Se recomienda realizar varios de los tutoriales para familiarizarse con los métodos prácticos de trabajo en de trabajo en Crystal Reports para Visual Studio 2005. Cada tutorial va acompañado de proyectos de código de ejemplo que muestran la versión finalizada del proyecto, escrita en C# y Visual Basic. La mayoría de estos proyectos se facilitan como sitios Web y proyectos para Windows, excepto los diseñados específicamente para utilizarse sólo en la Web o sólo en Windows. Haga clic en el vínculo adecuado para pasar a esa sección: • • • • • • Código de ejemplo Tutoriales del modelo de objeto CrystalReportViewer Tutoriales del modelo de objetos ReportDocument Tutoriales de código reducido en Visual Studio 2005 Tutoriales de conectividad de datos Otros tutoriales Código de ejemplo Los códigos de ejemplo son proyectos finalizados basados en las instrucciones facilitadas en los tutoriales. Para reproducir el código de ejemplo, deberá seguir los procedimientos de los tutoriales. Cada tutorial va acompañado de proyectos de código de ejemplo de C# y Visual Basic que muestran la versión finalizada del proyecto. La mayoría de estos proyectos se facilitan como sitios Web y proyectos para Windows, excepto los diseñados específicamente para utilizarse sólo en la Web o sólo en Windows. En Crystal Reports para Visual Studio 2005, el código de ejemplo se instala cuando se ejecuta el archivo de instalación TutorialsSampleCodeProjects.msi. Para ubicar el archivo de instalación, vea Directorio de código 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 código 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 parámetros 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 parámetros 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 fórmulas de selección 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 código 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 Autenticación 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 parámetros 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 parámetros 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 impresión 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 fórmulas de selección 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 Presentación 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 código reducido en Visual Studio 2005 Nombre del tutorial Crystal Reports mediante tareas inteligentes Archivo de código de ejemplo CS_Web_ReducedCode_WebSiteSetup Sitio Web en Visual Basic: VB_Web_ReducedCode_WebSiteSetup Configuración de sitios Web de código reducido con Sitio Web en C#: Configuración de proyectos de Windows de código 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 Conexión de base de datos segura de código reducido en un sitio Web Sitio Web en C#: CS_Web_ReducedCode_DBLogon Sitio Web en Visual Basic: VB_Web_ReducedCode_DBLogon Configurar los parámetros de código 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 código 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 código reducido a otros controles en una aplicación Windows Aplicación Windows en C#: CS_Win_ReducedCode_ReportData Aplicación 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 código 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 métodos 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 multilingües Nombre de la carpeta del código 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 . Haga clic en el vínculo adecuado para pasar a esa sección: • • • • • Conectar con una base de datos segura de SQL Server Leer y configurar parámetros discretos Leer y configurar parámetros de rango para un subinforme Filtrar datos con fórmulas de selección Personalizar el control CrystalReportViewer Tutorial: Conectar con una base de datos segura de SQL Server En este tutorial. debe modificar el código con el fin de que funcione para los subinformes (vea Conectar con una base de datos segura de SQL Server con un subinforme). UserID y Password. se conectará con el servidor predeterminado de la base de datos especificada en el informe. Sin embargo. Para obtener más información sobre el modelo de objetos que se debe utilizar.Shared. UserID y Password. En este tutorial. Para el modelo de objetos ReportDocument. A continuación. El código de conexión de este tutorial también funciona para los subinformes insertados en el informe principal. establecerá las propiedades ServerName. Nota Si desea hacer referencia al diagrama del modelo de objetos CrystalReportViewer al realizar estos tutoriales. Obtendrá la instancia de TableLogOnInfos de la propiedad LogOnInfo del control CrystalReportViewer. Para realizar este tutorial mediante el modelo de objetos ReportDocument. vea Diagrama del modelo de objetos. si elige asignar una propiedad ServerName alternativa.Los tutoriales de esta sección utilizan los métodos y las propiedades de la clase CrystalReportViewer y las clases del espacio de nombres CrystalDecisions. Continúe con Crear un informe conectado a una base de datos segura de SQL Server.Shared. Las propiedades de la clase ConnectionInfo se utilizan para conectar con el servidor de base de datos u otros orígenes de datos ODBC. . asignará la instancia de ConnectionInfo a cada objeto TableLogOnInfo de la instancia de TableLogOnInfos. vea ¿Cuál es el modelo de objetos que se debe utilizar?. El modelo de objetos ReportDocument se recomienda con respecto al modelo de objetos CrystalReportViewer. DatabaseName. debe usar clases del espacio de nombres CrystalDecisions. aprenderá a agregar código de conexión para mostrar un informe que contiene información de una base de datos segura de SQL Server. Haga clic en el vínculo adecuado para pasar a esa sección: • • • • • • Introducción Crear un informe conectado a una base de datos segura de SQL Server Enlazar el informe sin código de conexión Agregar el código de conexión del informe Agregar la posibilidad de cambiar la ubicación de la base de datos en tiempo de ejecución Conclusión Introducción Cuando utilice el modelo de objetos CrystalReportViewer para conectar con una base de datos segura de SQL Server. podrá redirigir el informe a un servidor diferente en tiempo de ejecución. vea Conectar con una base de datos segura de SQL Server mediante el modelo de objetos ReportDocument. Si decide establecer únicamente las propiedades DatabaseName. vea Registro y código de clave de Crystal Reports. debe instalar MSDE con la autenticación de SQL Server establecida en "True".Crear un informe conectado a una base de datos segura de SQL Server Para comenzar. 5. Configuración de SQL Server: • Si tiene instalado SQL Server (o la versión OEM. seleccione Usar asistente de informes. MSDE). primero debe seguir los pasos de Configuración de proyectos. La Configuración de proyectos contiene referencias específicas a espacios de nombres y configuración de códigos necesarios para este procedimiento. MSDE). Este tutorial requiere que se configuren algunos parámetros como requisito previo. En el panel Crear un nuevo documento de Crystal Report del cuadro de diálogo Galería de Crystal Report. Para saber cómo registrarse. debe configurarse de modo que requiera la Autenticación de SQL Server. En la subcarpeta que se abre. 1. 3. elija Agregar y. Nota Si aún no se ha registrado. vaya a las siguientes secciones de Configuración del sistema de esta documentación: • • • Instalación de MSDE con autenticación de Windows o SQL Server Instalación 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. Haga clic en Aceptar. La base de datos Northwind incluida con SQL Server se debe instalar y verificar que requiere la Autenticación de SQL Server. Requisitos previos de configuración de la base de datos 1. Por lo tanto. 2. Se debe crear una cuenta de acceso limitado para utilizase dentro del sitio Web. expanda la carpeta OLE DB (ADO). En Explorador de soluciones. a continuación. a continuación. se le puede pedir que se registre. Aparecerá la ventana Asistente para la creación de informes estándar. ya podrá crear un informe que obtenga su información de la base de datos Northwind de forma segura. En el panel Elegir un Asistente. y éste no se podrá completar sin dicha configuración. Para instalar MSDE con la autenticación de SQL Server. . En el panel Orígenes de datos disponibles. haga clic en Agregar nuevo elemento. antes de que empiece con este procedimiento. En el cuadro de diálogo Agregar nuevo elemento. haga clic en Abrir. cree un informe que obtenga su información de la base de datos Northwind. 6. Para crear un informe con datos seguros de la base de datos Northwind Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración de proyectos.rpt" y. o la base de datos Northwind. escriba "NorthwindCustomers. seleccione la plantilla Crystal Report. 2. haga clic con el botón derecho en el nombre de proyecto en negrita. 4. En el campo Nombre. 7. en la vista Plantillas. seleccione Estándar. Nota Northwind es una base de datos de muestra que se proporciona con SQL Server. 3. • Si no tiene instalado SQL Server (ni la versión OEM. expanda la carpeta Crear nueva conexión. En esta sección enlazará la ruta de directorio de archivos del informe NorthwindCustomers al control CrystalReportViewer. 12. 16.Aparecerá la ventana OLE DB (ADO). Deje desactivada la casilla de verificación Seguridad integrada porque está usando la autenticación de SQL Server en lugar de la autenticación de NT. ContactName y City. el id. Ahora se expandirá la carpeta OLE DB. 11. Id. haga clic en el símbolo > para mover el campo al panel Agrupar por y. Esta ruta se determina de forma diferente para los sitios Web y los proyectos para Windows: . haga clic en Siguiente. 8. clic en CompanyName. Ahora ya podrá enlazar el informe con el control CrystalReportViewer. probará si el informe se muestra correctamente cuando no se ha establecido el código de conexión. haga clic en Siguiente. a continuación. Haga clic en Finalizar. Continúe con Enlazar el informe sin código de conexión. Busque el método ConfigureCrystalReports(). En el menú Ver. Seleccione Proveedor de OLE DB Microsoft para SQL Server y. la base de datos Northwind. Declare una variable de cadena. a continuación. A continuación. Expanda los nodos Northwind. de usuario y la contraseña en los campos Servidor. 10. seleccione Clientes. Abra el formulario Web Forms o Windows Forms. mantenga presionada la tecla Ctrl mientras hace 15. haga clic en Siguiente. en Campos del informe. mostrando el servidor de base de datos y. Haga clic en el símbolo > para mover estos campos al panel Campos para mostrar y. 9. 4. En el panel Campos disponibles. Enlazar el informe sin código de conexión En Configuración de proyectos. a continuación. haga clic en Código. Para enlazar la ruta de directorio de archivos del informe NorthwindCustomers al control CrystalReportViewer 1. que ha creado en Configuración de proyectos. llámela reportPath y asígnele una ruta en tiempo de ejecución al informe local. 3. 14. Haga clic en el símbolo > para mover la tabla al panel Tablas seleccionadas y. ha colocado un control CrystalReportViewer en el formulario Web Forms o Windows Forms. Se creará el informe NorthwindCustomers y se cargará en la ventana principal de Visual Studio.Ciudad. seleccione "Northwind". ha agregado un informe NorthwindCustomers al proyecto. dentro de él. dbo y Tablas. En la lista desplegable Base de datos. y seleccione la tabla Clientes. 13. En el paso anterior. Especifique los valores del servidor de base de datos. haga clic en Finalizar. a continuación. de usuario y Contraseña. Expanda la tabla Clientes y. 2. a continuación. Esto asigna el informe al mismo directorio del archivo ejecutable de Windows. copie el informe en dicho subdirectorio. Está previsto que falle la carga del informe.rpt"). seleccione Generar solución. porque aún no se ha escrito el código para conectarse con la base de datos. 2. haga clic en Iniciar.StartupPath + "\\" + "NorthwindCustomers. [Visual Basic] Dim reportPath As String = Server. 4. concatene la propiedad Application. [Visual Basic] myCrystalReportViewer. Ahora estará listo para crear y ejecutar el proyecto.StartupPath con una barra invertida y el nombre del archivo de informe local.StartupPath & "\" & "NorthwindCustomers.MapPath("NorthwindCustomers.rpt") [C#] string reportPath = Server. el informe deberá estar almacenado en el mismo directorio que el archivo ejecutable de Windows. En el menú Depurar. continúe y corríjalos ahora. [Visual Basic] Dim reportPath As String = Application. Asigne la ruta del directorio de archivos del informe NorthwindCustomers a la propiedad ReportSource del control CrystalReportViewer. Si usa un informe no incrustado en un proyecto para Windows. Esto asigna el informe local a la ruta del directorio de archivos de la unidad de disco duro en tiempo de ejecución. Nota En la fase de compilación se copiará el informe al directorio que contiene el archivo ejecutable.rpt" [C#] string reportPath = Application. 5.MapPath(). En el menú Crear. • Para un proyecto para Windows. Si existen errores de generación.• Para un sitio Web. Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecución. pase el nombre del archivo de informe local como un parámetro de cadena en el método Server. localice el archivo ejecutable de Windows compilado en el subdirectorio \bin\debug\y. Para probar la carga del informe NorthwindCustomers 1. 3.ReportSource = reportPath.ReportSource = reportPath [C#] crystalReportViewer.MapPath("NorthwindCustomers. .rpt". a continuación. ) TableLogOnInfos es una clase indizada que contiene instancias de la clase TableLogOnInfo. Va a empezar por crear un método de ayuda privado. En la parte inferior de la clase. Regrese a la clase de código subyacente de este Web Forms o Windows Forms. Continúe con Agregar el código de conexión del informe. En cualquier caso. Haga clic en el botón Aceptar para habilitar la depuración. Esta es una nueva función de Crystal Reports Developer y Crystal Reports para Visual Studio 2005.Nota Si está desarrollando un sitio Web en Visual Studio 2005 y es la primera vez que ha iniciado la depuración. Nota Para que la clase TableLogOnInfos sea accesible. Nota Los resultados pueden variar. se le pedirá información de conexión a la base de datos para ese informe.Shared. [Visual Basic] Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer. cree un nuevo método privado denominado SetDBLogonForReport() con ConnectionInfo pasado en la firma de método.LogOnInfo . debe seguir el siguiente procedimiento de pasos para crear una aplicación totalmente funcional. aparecerá un cuadro de diálogo en el que se indica que el archivo Web. Con este método. incluya una instrucción "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de código lateral del espacio de nombres CrystalDecisions. Agregar el código de conexión del informe Ahora estará preparado para agregar el código de conexión del informe a la clase de código subyacente. se produce una excepción. Si ejecuta una versión anterior de Crystal Reports.config se debe modificar. (Esta declaración se ha agregado en Configuración de proyectos. 2. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. si tiene instalado Crystal Reports 10 o una versión superior. Para crear y codificar el método SetDBLogonForReport() 1. Por ejemplo. 5. se obtiene la instancia de TableLogOnInfos de la propiedad LogOnInfo de la clase CrystalReportViewer. No se mostrará el informe NorthwindCustomers. según la versión de Crystal Reports que utilice. SetDBLogonForReport(). [Visual Basic] Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo) End Sub [C#] private void SetDBLogonForReport(ConnectionInfo connectionInfo) { } 3. Se mostrará después de agregar el código de conexión con la base de datos. [Visual Basic] For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos Next [C#] foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos) { } 5. Llamar al método SetDBLogonForReport(). Sin embargo. La modificación del método ConfigureCrystalReports() requiere dos acciones: • • Configurar la instancia de ConnectionInfo. . con el fin de que el informe sepa que tiene información sobre conexión de base de datos. En los saltos de línea. En el método ConfigureCrystalReports().ConnectionInfo = connectionInfo. El procedimiento de este paso ha creado un método para establecer la conexión de la base de datos. 4. debe modificar el método ConfigureCrystalReports() para direccionar este método. Para modificar el método ConfigureCrystalReports() para direccionar el código de conexión con la base de datos 1. agregue un par de saltos de línea en el código sobre la línea que enlaza el informe al control CrystalReportViewer. 3. establezca la propiedad ConnectionInfo de TableLogOnInfo en el parámetro ConnectionInfo.[C#] TableLogOnInfos tableLogOnInfos = crystalReportViewer. UserID y Password de la instancia de ConnectionInfo.ConnectionInfo = myConnectionInfo [C#] tableLogOnInfo. Establezca las propiedades DatabaseName. Cree un bucle foreach que recorra cada instancia de TableLogOnInfo de la instancia de clase de índice de TableLogOnInfos. 2. En el bucle foreach.LogOnInfo. declare y cree una instancia de la clase ConnectionInfo. [Visual Basic] Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo() [C#] ConnectionInfo connectionInfo = new ConnectionInfo(). [Visual Basic] myTableLogOnInfo. UserID = "limitedPermissionAccount" myConnectionInfo. 3. seleccione Generar solución. Agregar la posibilidad de cambiar la ubicación de la base de datos en tiempo de ejecución En esta sección.Nota Por razones de seguridad.DatabaseName = "Northwind" myConnectionInfo. reemplace la contraseña de ejemplo 1234 (que se muestra más abajo) por su propia contraseña. Sólo requiere una pequeña modificación de la instancia de ConnectionInfo.DatabaseName = "Northwind". En el código que escriba.Password = "1234".Password = "1234" [C#] connectionInfo. En la siguiente sección. 2. haga clic en Iniciar. Para probar la carga del informe NorthwindCustomers 1. El informe se debe cargar correctamente. En el menú Crear. ya que ha agregado código para conectar con la base de datos. Ahora estará listo para crear y ejecutar el proyecto. connectionInfo. continúe y corríjalos ahora. 4. Continúe con Agregar la posibilidad de cambiar la ubicación de la base de datos en tiempo de ejecución. 4. Para obtener más información. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. El informe NorthwindCustomers se mostrará correctamente. aprenderá a cambiar la ubicación de la base de datos en tiempo de ejecución. connectionInfo. aprenderá a cambiar la ubicación de la base de datos en tiempo de ejecución. llame al método SetDBLogonForReport() y pásele la instancia de ConnectionInfo.UserID = "limitedPermissionAccount". Debajo del código que enlaza el control CrystalReportViewer. es importante utilizar una cuenta de base de datos con permisos de acceso limitado. véase Seguridad: Crear una cuenta de acceso limitado a la base de datos. Si existen errores de generación. [Visual Basic] myConnectionInfo. En el menú Depurar. [Visual Basic] SetDBLogonForReport(myConnectionInfo) [C#] SetDBLogonForReport(connectionInfo). Para cambiar la ubicación de la base de datos en tiempo de ejecución . 2. El informe NorthwindCustomers se mostrará correctamente. seleccione Generar solución. establezca la propiedad ServerName de la instancia de ConnectionInfo. haga clic en Iniciar. cree un par de saltos de línea en el código detrás de la línea que declara y crea una instancia de la clase ConnectionInfo.ServerName = "DevDatabase". continúe y corríjalos ahora. 2. Conclusión Ha configurado correctamente el código para conectar con la base de datos de SQL Server y cambiar la ubicación de la base de datos en tiempo de ejecución. El informe se debe redirigir al servidor de base de datos alternativo en tiempo de ejecución. Cuando pueda agregar subinformes al informe principal (NorthwindCustomers. Continúe con Conclusión.ServerName = "DevDatabase" [C#] connectionInfo. 4. En el método ConfigureCrystalReports(). Para probar si el informe se puede restablecer a un servidor de base de datos alternativo en tiempo de ejecución 1. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. Nota En el código que escriba. 3. Ahora estará listo para crear y ejecutar el proyecto. [Visual Basic] myConnectionInfo. En el menú Depurar. Tutorial: Leer y configurar parámetros discretos En este tutorial aprenderá a crear un informe cuyos datos se puedan filtrar basándose en un parámetro discreto. En los saltos de línea. no necesita código adicional. reemplace el nombre del servidor de ejemplo DevDatabase (que aparece más abajo) por el nombre de su servidor. Haga clic en el vínculo adecuado para pasar a esa sección: • • Introducción Crear un informe con parámetros .1. Si existen errores de generación. En el menú Crear.rpt). Para obtener más información sobre el modelo de objetos que se debe utilizar. A los elementos numéricos(como sueldos de empleados) se suele acceder mediante parámetros de rango. Para saber el nombre de esta entrada según su versión de Crystal Reports. realizará las siguientes acciones: • • • Crear un método que obtenga todos los valores predeterminados y los devuelva en un ArrayList. Nota Xtreme. Tokio) y pasará dicha instancia de ArrayList a un método de ayuda que establezca estos nombres como los valores actuales del parámetro de ciudad. . vea Ubicación de la base de datos de ejemplo Xtreme. En la siguiente parte del tutorial. cree un informe que obtenga su información de la base de datos de muestra de Microsoft Access que se incluye con Crystal Reports. En este tutorial establecerá un valor de un parámetro discreto para ver un informe de clientes basado en un solo campo. generará un ArrayList que contiene nombres de ciudades (París. vea Leer y configurar parámetros discretos mediante el modelo de objetos ReportDocument. Los datos del informe proceden de la base de datos de muestra incluida en Crystal Reports para Visual Studio. El informe se volverá a mostrar incluyendo únicamente los clientes que vivan en las ciudades seleccionadas en el control ListBox. Dichos valores predeterminados del parámetro de ciudad se encapsulan dentro del informe. que hace referencia a un rango de valores. va a crear un informe de clientes con un parámetro de ciudad. Para localizar el archivo xtreme. El informe muestra únicamente los clientes que viven en las ciudades seleccionadas en una lista de ciudades. vea ¿Cuál es el modelo de objetos que se debe utilizar?. enlazará el informe al control CrystalReportViewer y verá el informe que mostrará únicamente los clientes que vivan en París y Tokio. A continuación.mdb es la base de datos de muestra incluida con Crystal Reports.• • • • • • • Enlazar el informe Configurar parámetros manualmente en el código Crear un control ListBox que muestre los parámetros predeterminados Configurar parámetros a partir de las selecciones de ListBox Configurar la persistencia de parámetros Conclusión Información de código de ejemplo Introducción Un parámetro discreto es un único valor. Agregar un control Button para volver a mostrar el informe basado en las selecciones de ListBox. Este tutorial también se puede realizar con clases del modelo de objetos ReportDocument. vea Entrada ODBC DSN para la base de datos de ejemplo Xtreme. A los elementos de texto (como ciudades) se tiene acceso normalmente mediante parámetros discretos. La lista de ciudades proviene de los valores predeterminados del parámetro de ciudad. Tiene que conectarse a la base de datos a través de su entrada ODBC DSN.mdb correspondiente a su versión de Crystal Reports en el disco duro. a diferencia de un parámetro de rango. Agregar un control ListBox al formulario y rellenarlo a partir de ArrayList. Crear un informe con parámetros Para empezar. Al crear una instancia del informe en el código. Continúe con Crear un informe con parámetros. Para empezar. codificará el evento de clic de botón para obtener los elementos seleccionados en el control ListBox y establecerlos para que sean los valores actuales del parámetro de ciudad. En la parte final del tutorial. seleccione Usar asistente de informes. En el campo Nombre. Expanda el nodo Tablas. Se creará el informe CustomersByCity y se cargará en la ventana principal de Visual Studio. seleccione la entrada DSN de ODBC correcta para su versión de Crystal Reports. a continuación.Ciudad para mover el campo al panel Agrupar por y. en Campos del informe. incluidos los parámetros. a continuación.Para crear un informe con parámetros Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración de proyectos. En el panel Orígenes de datos disponibles de la ventana Asistente para la creación de informes estándar. Dirección1. El Explorador de campos debe estar visible. En el panel Crear un nuevo documento de Crystal Report del cuadro de diálogo Galería de Crystal Report. a continuación. mantenga presionada CTRL y haga clic en Nombre del cliente. antes de que empiece con este procedimiento.NET 2002 o 2003. haga clic con el botón derecho en el nombre de proyecto en negrita. Si no se ha registrado anteriormente. vea Registro y código de clave de Crystal Reports. 11. se le pedirá que se registre. 5. haga clic en Explorador de campos. 6. en el menú Crystal Reports. En el panel Campos disponibles. Expanda la tabla Cliente. haga doble clic en Cliente. y éste no se podrá completar sin dicha configuración. el botón se denomina Abrir. Haga clic en el símbolo > para mover estos campos en el panel Campos para mostrar y. haga clic en Agregar nuevo elemento. Nota En Visual Studio . seleccione la plantilla Crystal Report. Para saber cómo registrarse. Nota En Visual Studio . no existe la carpeta Crear nueva conexión. haga clic en Finalizar. 3. En Explorador de soluciones. como se explica en Entrada DSN de ODBC para la base de datos de ejemplo Xtreme y. escriba el nombre "CustomersByCity. En el cuadro de diálogo Agregar nuevo elemento. haga clic en el botón Siguiente. seleccione Estándar y. haga clic en Siguiente. 4. Para ver el Explorador de campos. En la subcarpeta que se abre.rpt" y haga clic en Agregar. el contenido se mostrará en el nivel superior. a continuación. donde Crystal Reports no se ha actualizado a Crystal Reports Developer. 1. 7. haga doble clic en la tabla Cliente para mover la tabla al panel Tablas seleccionadas y. 12. primero debe seguir los pasos de Configuración de proyectos. Para agregar un parámetro Ciudad . La Configuración de proyectos contiene referencias específicas a espacios de nombres y configuración de códigos necesarios para este procedimiento. en la vista Plantillas. En la ventana ODBC (RDO).NET 2002 o 2003. expanda la carpeta Crear nueva conexión. haga clic en el botón Finalizar. 8. expanda la carpeta ODBC (RDO). 2. a continuación. 10. En el panel Elegir un Asistente. Se expandirá la carpeta ODBC (RDO) y mostrará la base de datos de ejemplo Xtreme. a continuación. Título del contacto. haga clic en Aceptar. 9. Ahora ya podrá agregar un parámetro denominado Ciudad y ocuparlo con valores predeterminados. Por lo tanto. porque proporciona acceso a las distintas funciones del informe. elija Agregar y. Apellido del contacto y Ciudad. seleccione Guardar todo. seleccione la primera opción de la lista.NET 2002 o 2003 donde Crystal Reports no se ha actualizado a Crystal Reports Developer. Si el Explorador de campos no está visible. {?City}. En el cuadro de diálogo Establecer valores predeterminados: • Defina Examinar tabla como "Cliente". a continuación.. 2. a través de la propiedad ParameterFieldInfo de la clase CrystalReportViewer. En el cuadro de diálogo Elegir campo. en Campos del informe... Continúe con Enlazar el informe. 3. • Seleccione Valores discretos. 4. 4. en la barra de herramientas de Crystal Reports. haga clic en Aceptar. Nota Esta selección. Para conectar el parámetro Ciudad a la columna de base de datos Ciudad 1. haga clic con el botón derecho en Campos de parámetro y seleccione Nuevo.. En el Explorador de campos. En el cuadro de diálogo Asistente de selección.1. en la ficha Cliente. 2. Nota Otro modo de ver el Explorador de campos es haciendo clic en Explorador de campos en el menú Crystal Reports.Ciudad. Ahora podrá enlazar el informe al control CrystalReportViewer y establecer el parámetro de ciudad con dos valores iniciales. este botón se denomina Establecer valores predeterminados. haga clic en Cambiar la vista del campo. haga clic en Aceptar. En el cuadro de diálogo Crear campo de parámetro: • Defina el Nombre como "Ciudad". Ahora va a utilizar el Asistente de selección para establecer una fórmula que conecte la columna de base de datos Ciudad con el campo de parámetro Ciudad creado recientemente. • Defina Examinar campo como "Ciudad". haga clic en Asistente de selección. En la barra de herramientas de Crystal Reports. Desde el menú Archivo. {?City} y. seleccione Cliente. • Haga clic en >> (la doble flecha hacia la derecha) para mover toda la lista de ciudades a la lista Valores predeterminados. 5. Nota En Visual Studio . es el parámetro Ciudad creado anteriormente. 3. París y Tokio. • Defina el Texto de solicitud como "Seleccione una o varias ciudades". en este tutorial. establezca la lista desplegable como "es igual a". 5. • Haga clic en Valores predeterminados. • Seleccione Permitir valores múltiples. 6. Haga clic en Aceptar para cerrar el cuadro de diálogo Crear campo de parámetro. Enlazar el informe . Haga clic en Aceptar para cerrar el cuadro de diálogo Establecer valores predeterminados. a continuación. Posteriormente. Acaba de establecer los valores predeterminados para que contengan una amplia lista de ciudades.Ciudad y. • Establezca Tipo de valor en Cadena. va a tener acceso a esta misma lista de valores predeterminados mediante programación. En la nueva lista desplegable que aparece a la derecha. Abra el formulario Web Forms o Windows Forms. agregó un informe CustomersByCity al proyecto. pase el nombre del archivo de informe local como un parámetro de cadena en el método Server.MapPath(). ha colocado un control CrystalReportViewer en el formulario Web Forms o Windows Forms. probará si el informe se muestra correctamente cuando no se han establecido valores actuales para su campo de parámetro.rpt" [C#] string reportPath = Application.rpt". Declare una variable de cadena. Esto asigna el informe local a la ruta del directorio de archivos de la unidad de disco duro en tiempo de ejecución. Busque el método ConfigureCrystalReports(). [Visual Basic] myCrystalReportViewer. haga clic en Código para ver la clase de código subyacente de este formulario Web Forms o Windows Forms. concatene la propiedad Application. .Al seguir las instrucciones de Configuración de proyectos para preparar este tutorial.StartupPath & "\" & "CustomersByCity.MapPath("CustomersByCity. • Para un proyecto para Windows.MapPath("CustomersByCity. [Visual Basic] Dim reportPath As String = Server. 2. 5.rpt") [C#] string reportPath = Server. En el menú Ver. 4.StartupPath con una barra invertida y el nombre del archivo de informe local. Nota En la fase de compilación se copiará el informe al directorio que contiene el archivo ejecutable.ReportSource = reportPath [C#] crystalReportViewer. Para enlazar la ruta de directorio de archivos del informe CustomersByCity al control CrystalReportViewer 1. En los pasos anteriores.StartupPath + "\\" + "CustomersByCity. [Visual Basic] Dim reportPath As String = Application. 3.rpt"). llámela reportPath y asígnele una ruta en tiempo de ejecución al informe local. que ha creado en Configuración de proyectos. A continuación. Esta ruta se determina de forma diferente para los sitios Web y los proyectos para Windows: • Para un sitio Web. Esto asigna el informe al mismo directorio del archivo ejecutable de Windows. Asigne la ruta del directorio de archivos del informe CustomersByCity a la propiedad ReportSource del control CrystalReportViewer.ReportSource = reportPath. En esta sección enlazará la ruta de directorio de archivos del informe CustomersByCity al control CrystalReportViewer. En el nivel de clase. continúe y corríjalos ahora. Esto implica codificación. el informe deberá estar almacenado en el mismo directorio que el archivo ejecutable de Windows. por lo tanto. 3. seleccione Generar solución. En versiones anteriores. 4. localice el archivo ejecutable de Windows compilado en el subdirectorio \bin\ [Visual Basic] o \bin\debug\ [C#] y. va a agregar los parámetros "París" y "Tokio" a una instancia de ArrayList y a pasar el informe y la instancia de ArrayList al método de ayuda para que se procesen. Para crear una constante PARAMETER_FIELD_NAME 1. haga clic en Iniciar. [Visual Basic] . En el menú Crear. Nota Los resultados pueden variar. según la versión de Crystal Reports que utilice. En versiones más recientes. Configurar parámetros manualmente en el código Ahora ya puede establecer dos valores ("París" y "Tokio") en el campo de parámetro Ciudad del informe CustomersByCity. 2. En el menú Depurar. se produce una excepción "Falta el valor actual del campo de parámetro". PARAMETER_FIELD_NAME. Si existen errores de generación. No se muestra el informe CustomersByCity. verá un formulario que le pedirá que indique valores de parámetro para dicho informe. 5. En el método ConfigureCrystalReports(). este código se creará como un método de ayuda independiente. a continuación. En cualquiera caso. Regrese a la clase de código subyacente de este Web Forms o Windows Forms. debe agregar código adicional para que la aplicación sea completamente funcional. 2. Continúe con Configurar parámetros manualmente en el código. porque aún no se ha escrito el código para establecer un valor para el campo de parámetro Ciudad. Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecución. cree una nueva constante de cadena.Ahora estará listo para crear y ejecutar el proyecto. que puede separar en los siguientes procesos: • • • Necesita una constante PARAMETER_FIELD_NAME para contener el nombre de campo de parámetro "Ciudad".config se debe modificar. Nota Si está desarrollando un sitio Web en Visual Studio 2005 y es la primera vez que ha iniciado la depuración. Haga clic en el botón Aceptar para habilitar la depuración. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. El código para agregar los valores actuales al parámetro Ciudad se utiliza en distintas partes de este tutorial. Se muestra después de agregar un valor para el parámetro Ciudad más adelante en este tutorial. copie el informe en dicho subdirectorio. y establezca su valor como "Ciudad". aparecerá un cuadro de diálogo en el que se indica que el archivo Web. Si usa un informe no incrustado en un proyecto para Windows. Está previsto que falle la carga del informe. Para probar la carga del informe CustomersByCity 1. Collections [C#] using System. En la parte inferior de la clase. debe haber incluido una declaración "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de código subyacente del espacio de nombres CrystalDecisions. cree un nuevo método privado denominado SetCurrentValuesForParameterField() con dos variables en la firma del método: ParameterFields y ArrayList. declare y cree una instancia de la clase indizada ParameterValues como la variable currentParameterValues.) [Visual Basic] Dim currentParameterValues As ParameterValues = New ParameterValues() [C#] . Para crear un método de ayuda que agregue los valores actuales al parámetro del informe 1.Collections. Sobre la firma de clase. agregue una declaración "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase para el espacio de nombres System.Shared. Regrese a la clase de código subyacente de este Web Forms o Windows Forms. En este método. ByVal myArrayList As ArrayList) End Sub [C#] private void SetCurrentValuesForParameterField(ParameterFields parameterFields.Collections (si todavía no se ha declarado este espacio de nombres). [Visual Basic] Imports System. ArrayList arrayList) { } 4. Ahora ya puede crear el método de ayuda que agregue los valores actuales al parámetro del informe. 2. Nota Para que se pueda tener acceso a la clase ParameterValues. (Esta declaración se ha agregado en Configuración de proyectos. [Visual Basic] Private Sub SetCurrentValuesForParameterField(ByVal myParameterFields As ParameterFields. 3. Nota Esta declaración se necesita para tener acceso a la clase ArrayList.Private Const PARAMETER_FIELD_NAME As String = "City" [C#] private const string PARAMETER_FIELD_NAME = "City". ToString(). Esto completará el código en el bucle foreach. Nota En este método.Add(myParameterDiscreteValue) [C#] currentParameterValues. [Visual Basic] Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue() [C#] ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue(). agregue la instancia de ParameterDiscreteValue a la clase indizada currentParameterValues.ParameterValues currentParameterValues = new ParameterValues(). recupera valores de ArrayList. En el bucle foreach. En el bucle foreach. declare y cree una instancia de la clase ParameterDiscreteValue. [Visual Basic] myParameterDiscreteValue. 5. 8. convierta submittedValue en una cadena y pásela a la propiedad Value de la instancia de ParameterDiscreteValue. [Visual Basic] currentParameterValues. 7.Value = submittedValue. va a escribir código que agregue valores a ArrayList.ToString() [C#] parameterDiscreteValue. Posteriormente.Add(parameterDiscreteValue). Cree un bucle foreach para obtener todos los valores enviados (como el tipo Objeto) de la instancia de ArrayList. [Visual Basic] For Each submittedValue As Object In myArrayList Next [C#] foreach(object submittedValue in arrayList) { } 6.Value = submittedValue. . En el bucle foreach. Coloque el código restante (a partir de los pasos siguientes) después del bucle foreach. arrayList.CurrentValues = currentParameterValues. obtenga la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer. obtenga la instancia de ParameterField de la clase indizada ParameterFields que se basada en la entrada de índice de la constante PARAMETER_FIELD_NAME. declare y cree una instancia de ArrayList encima de la línea que enlaza el informe al control CrystalReportViewer.Add("Paris").Add("Tokyo") [C#] arrayList. Este procedimiento de varios pasos ha mostrado el modo de crear un método que obtiene los valores enviados desde una instancia de ArrayList y los coloca como valores actuales en una instancia de ParameterField. debe llamar a este método antes de enlazar el informe al control CrystalReportViewer. Fuera del bucle foreach. Ahora. Debajo del código que enlaza el control CrystalReportViewer.Add("Tokyo").CurrentValues = currentParameterValues [C#] parameterField. para que el informe sepa que tiene configuración de parámetros. [Visual Basic] myArrayList. . [Visual Basic] Dim myArrayList As ArrayList = New ArrayList() [C#] ArrayList arrayList = new ArrayList(). 2. Agregue los nombres de ciudad "París" y "Tokio" como cadenas a la instancia de ArrayList.Add("Paris") myArrayList. Pase la instancia de currentParameterValues al método CurrentValues de la instancia de ParameterField. [Visual Basic] myParameterField. [Visual Basic] Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME) [C#] ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME]. 10. En el método ConfigureCrystalReports().9. 3. Para llamar al método SetCurrentValuesForParameterField () antes de enlazar el informe al control CrystalReportViewer 1. ParameterFieldInfo [C#] ParameterFields parameterFields = crystalReportViewer. Se espera que el informe se muestre correctamente. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. En el menú Crear. Crear un control ListBox que muestre los parámetros predeterminados El resto del tutorial trata sobre la visualización de una lista completa de valores predeterminados del campo de parámetro en un control ListBox. En el menú Depurar. . 2. continúe y corríjalos ahora. Nota Recuerde que ya estableció los Valores predeterminados. El informe CustomersByCity aparecerá correctamente. 4. volviendo a filtrar los contenidos del informe. Ahora estará listo para crear y ejecutar el proyecto. En la siguiente sección. 4. En esta sección aprenderá a rellenar el control ListBox con los valores predeterminados del campo de parámetro. una amplia lista de ciudades. y basado en las selecciones que realice en dicho control ListBox. porque ahora existe código escrito para establecer los valores actuales en el campo de parámetro. seleccione Generar solución. arrayList). haga clic en Iniciar. al crear este informe al principio del tutorial. myArrayList) [C#] SetCurrentValuesForParameterField(parameterFields. 3. Continúe con Crear un control ListBox que muestre los parámetros predeterminados.[Visual Basic] Dim myParameterFields As ParameterFields = myCrystalReportViewer. Éstos se utilizan al final del tutorial para seleccionar nuevas ciudades dinámicamente y filtrar el informe basándose en las ciudades seleccionadas recientemente. mostrando la lista de los clientes de París y Tokio. Si existen errores de generación. aprenderá como obtener los valores predeterminados del campo de parámetro y establecerá dichos valores en un control ListBox. [Visual Basic] SetCurrentValuesForParameterField(myParameterFields. Para probar la carga del informe CustomersByCity 1.ParameterFieldInfo. Llame al método SetCurrentValuesForParameterField() y pásele la instancia de ParameterFields y la instancia de ArrayList. haga clic en Código. establezca Dock en "Bottom". En la ventana Propiedades. presione INTRO. establezca Anchor en "Top. 6. 3. con el fin de que disponga del espacio necesario sobre él para un control ListBox. arrastre un control ListBox sobre el control CrystalReportViewer.Para hacerlo. Abra el formulario Web Forms o Windows Forms. Para crear un método de ayuda que obtenga los valores predeterminados del campo de parámetro 1. Presione la FLECHA IZQUIERDA del teclado de modo que aparezca un cursor parpadeante y. Para crear y configurar un control ListBox en el formulario 1. 2. 3.   2. Bottom. a continuación. haga clic en Diseñador. Establezca SelectionMode en "Multiple" (en un proyecto de Windows. seleccione Guardar todo. Right". habiendo pasado ParameterFields a la firma del método. [Visual Basic] Private Function GetDefaultValuesFromParameterField(ByVal myParameterFields As ParameterFields) As ArrayList End Function [C#] private ArrayList GetDefaultValuesFromParameterField(ParameterFields parameterFields) . En la ventana Propiedades. a continuación. presione Esc para cerrarla. En el menú Ver. b. 5. c. Haga clic en el control ListBox para seleccionarlo. Ajuste el tamaño del control CrystalReportViewer. En el Cuadro de herramientas. El control CrystalReportViewer bajará una línea. realice las siguientes acciones: a. "MultiExtended"). crear un método de ayuda para rellenar el control ListBox. Abra el formulario Web Forms o Windows Forms. 4. realice las siguientes acciones: a. Desde el menú Archivo. Si está desarrollando un sitio Web. b. Haga clic en el control CrystalReportViewer para seleccionarlo. En el menú Ver. Desde la ventana Propiedades siga estos pasos: Establezca ID o Nombre en "defaultParameterValuesList". cree un nuevo método privado denominado GetDefaultValuesFromParameterField() que devuelva una instancia de ArrayList. Haga clic en el control CrystalReportViewer para seleccionarlo. deberá agregar y configurar un control ListBox y. En la parte inferior de la clase. d. Si está desarrollando un proyecto de Windows. Ahora ya podrá crear un método de ayuda que obtenga los valores predeterminados del campo de parámetro. Nota Si aparece una Tarea inteligente en ListBox (si se utiliza Visual Studio 2005). Left. 7. 2. [Visual Basic] Dim myArrayList As ArrayList = New ArrayList() [C#] ArrayList arrayList = new ArrayList(). Compruebe su API (mediante IntelliSense) para ver qué propiedad está disponible en ParameterValue: .DefaultValues [C#] ParameterValues defaultParameterValues = parameterField. 6. Cree un bucle foreach que obtenga cada instancia de ParameterValue a partir de defaultParameterValues. 5. Obtenga la instancia de ParameterField de la clase indizada ParameterFields basada en la entrada de índice de la constante PARAMETER_FIELD_NAME. Declare y cree una instancia de ArrayList.{ } 4. [Visual Basic] Dim defaultParameterValues As ParameterValues = myParameterField. Existen dos versiones de este bloque condicional porque la API ha cambiado ligeramente en las distintas versiones de Crystal Reports para Visual Studio. [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 parámetros discretos (en oposición a parámetros de rango). Obtenga una clase indizada ParameterValues (como la variable defaultParameterValues) a partir de la propiedad DefaultValues de la instancia de ParameterField.DefaultValues. [Visual Basic] Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME) [C#] ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME]. 7. 11. en el bucle foreach. en el bloque condicional anidado.Value. agregue la propiedad Value de la instancia de ParameterDiscreteValue (convertida en cadena) a la instancia de ArrayList. devuelva la instancia de ArrayList del método. Además. si la propiedad disponible es Kind (DiscreteOrRangeKind. .IsRange) Then End If [C#] if(!parameterValue. DiscreteParameterValue. una enumeración con tres valores: DiscreteValue.DiscreteValue) { } 10.Add(parameterDiscreteValue. En este bloque condicional anidado. ParameterDiscreteValue) [C#] ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue. RangeValue. en el bucle foreach. 12. [Visual Basic] Dim myParameterDiscreteValue As ParameterDiscreteValue = CType(myParameterValue.Kind == DiscreteOrRangeKind.8. escriba este código: [Visual Basic] If (Not myParameterValue.Kind = DiscreteOrRangeKind. DiscreteAndRangeValue). escriba este código. en su lugar: [Visual Basic] If (myParameterValue. [Visual Basic] myArrayList. Fuera del bloque condicional y del bucle foreach.IsRange) { } 9. al final del método.DiscreteValue) Then End If [C#] if(parameterValue. Si la propiedad disponible es IsRange. O. proyecte la instancia de ParameterValue a su clase ampliada.Add(myParameterDiscreteValue.ToString()).Value.ToString()) [C#] arrayList. [Visual Basic] If Not IsPostBack Then End If [C#] if(!IsPostBack) { } Nota El bloque condicional Not IsPostBack se usa para encapsular código que sólo se debe ejecutar la primera vez que se carga la página. [Visual Basic] defaultParameterValuesList. asegúrese de que sólo realiza el procedimiento para Web o para Windows. El código varía ligeramente en función de si se utiliza un proyecto Web o un proyecto de Windows. En los saltos de línea. agregue un par de saltos de línea en el código inmediatamente después de la línea de código que obtiene la instancia de ParameterFields. Ahora enlace este ArrayList al control ListBox defaultParameterValuesList. 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 página. En el bloque condicional Not IsPostBack. Ha obtenido los valores predeterminados del campo de parámetro y los ha devuelto del método como un ArrayList. cree un bloque condicional Not IsPostBack. establezca la propiedad DataSource del ListBox defaultParameterValuesList al método de ayuda GetDefaultValuesFromParameterField(). ahora puede escribir código adicional que establece el origen de datos para el control ListBox defaultParameterValuesList ListBox cuando la página se carga por primera vez. 2.DataSource = GetDefaultValuesFromParameterField(parameterFields). En el método ConfigureCrystalReports(). Para enlazar el ArrayList devuelto del método al ListBox de un proyecto Web 1. pasando la instancia de ParametersFields como un parámetro de método.DataSource = GetDefaultValuesFromParameterField(myParameterFields) [C#] defaultParameterValuesList. . por lo tanto. En los saltos de línea.[Visual Basic] Return myArrayList [C#] return arrayList. 3. pasando la instancia de ParametersFields como un parámetro de método. seleccione Generar solución. En el método ConfigureCrystalReports(). 3. agregará un botón para volver a mostrar el informe basado en las selecciones del control ListBox defaultParameterValuesList. Para enlazar el ArrayList devuelto del método al ListBox de un proyecto de Windows 1. llame al método DataBind() del ListBox defaultParameterValuesList. [Visual Basic] defaultParameterValuesList. 2.DataBind(). [Visual Basic] defaultParameterValuesList. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. 2. En la siguiente sección. En el menú Depurar. haga clic en Iniciar. Si existen errores de generación. agregue un par de saltos de línea en el código inmediatamente después de la línea de código que obtiene la instancia de ParameterFields. Para probar si está relleno el control ListBox defaultParameterValuesList 1. Ahora estará listo para crear y ejecutar el proyecto para verificar si el ListBox defaultParameterValuesList está relleno.DataBind() [C#] defaultParameterValuesList. Continúe con Configurar parámetros a partir de las selecciones de ListBox. continúe y corríjalos ahora. En los saltos de línea. en nuestro tutorial). .DataSource = GetDefaultValuesFromParameterField(myParameterFields) [C#] defaultParameterValuesList. establezca la propiedad DataSource del ListBox defaultParameterValuesList al método de ayuda GetDefaultValuesFromParameterField().4. ahora puede escribir código adicional que establece el origen de datos para el control ListBox defaultParameterValuesList ListBox cuando la página se carga por primera vez. En los saltos de línea. En el menú Crear. El control ListBox defaultParameterValuesList mostrará una lista completa de valores predeterminados (ciudades. 4.DataSource = GetDefaultValuesFromParameterField(parameterFields). Aún en el bloque condicional Not IsPostBack. 4. arrastre un control Button a la derecha del control ListBox. Haga doble clic en el botón Volver a mostrar el informe. En el método de evento redisplay_Click() que se acaba de generar automáticamente. por lo tanto. 2. en lugar de pasar valores arbitrarios (París y Tokio). pasará los valores seleccionados en el control ListBox defaultParameterValuesList.Web.Web. declare y cree una instancia de ArrayList. En el menú Ver. Pasa a la clase de código subyacente en la que se ha generado automáticamente un método de evento redisplay_Click(). agregue una declaración "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase para el espacio de nombres System. En el método de evento de este botón. [Visual Basic] Imports System.WebControls (si todavía no se ha declarado este espacio de nombres). Para crear y configurar un botón que vuelva a mostrar el informe en el formulario 1. 3. El código varía ligeramente para un proyecto Web o un proyecto de Windows. Haga clic en el control Button para seleccionarlo. 3.UI. llamará al mismo método que se llama al cargar la página por primera vez: SetCurrentValuesForParameterField(). Desde la ventana Propiedades siga estos pasos: • Establezca el valor de ID o Nombre en "redisplay". Para crear el método de evento de clic del botón que vuelve a mostrar el informe en un proyecto Web 1. Ahora podrá crear un método de evento de clic de botón que busque los elementos seleccionados en el control ListBox y los pase al método SetCurrentValuesForParameterField(). [Visual Basic] Dim myArrayList As ArrayList = New ArrayList() [C#] . 5. • Establezca Text como "Volver a mostrar el informe".WebControls.Configurar parámetros a partir de las selecciones de ListBox En esta sección. Sobre la firma de clase. realice sólo el procedimiento para Web o para Windows. Nota Esta declaración se necesita para tener acceso a la clase ListItem. Abra el formulario Web Forms o Windows Forms.WebControls [C#] using System.UI. agregará un botón para volver a mostrar el informe basado en las selecciones del control ListBox defaultParameterValuesList. En la Caja de herramientas. Pero esta vez.UI. haga clic en Diseñador. 2.Web. 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 más abajo es la de un proyecto de Visual Studio 2005. En el bucle foreach.Selected Then End If [C#] if(item.Add(item. [Visual Basic] myArrayList. La ruta predeterminada para un proyecto de sitio Web: [Visual Basic] myCrystalReportViewer. agregue la propiedad Value de la instancia de Item a la instancia de ArrayList.ReportSource = "C:\WebSites\ProjectName\CustomersByCity. 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.Selected) { } 6.Value). 7. Fuera del bloque condicional y del bucle foreach. 4.Add(item. "UserName" se reemplaza por el nombre de conexión.Value) [C#] arrayList.ArrayList arrayList = new ArrayList(). cree un bloque condicional anidado que compruebe si la propiedad Selected de la instancia de Item actual está establecida como True.Items Next [C#] foreach(ListItem item in defaultParameterValuesList.rpt" .Items) { } 5. [Visual Basic] If item. En el bloque condicional. "ProjectName" se reemplaza por el nombre del sitio Web. [Visual Basic] SetCurrentValuesForParameterField(myParameterFields. Asigne la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer.SelectedItems Next . 9. Pase la instancia de ParameterFields y de ArrayList al método SetCurrentValuesForParameterField().rpt". arrayList). En el método de evento redisplay_Click() que se acaba de generar automáticamente. declare y cree una instancia de ArrayList.[C#] crystalReportViewer. Pasa a la clase de código subyacente en la que se ha generado automáticamente un método de evento redisplay_Click().ParameterFieldInfo [C#] ParameterFields parameterFields = crystalReportViewer. [Visual Basic] Dim myParameterFields As ParameterFields = myCrystalReportViewer. 3. Cree un bucle foreach para obtener cada elemento (como una cadena) de la propiedad SelectedItems del ListBox defaultParameterValuesList. 8. myArrayList) [C#] SetCurrentValuesForParameterField(parameterFields. [Visual Basic] Dim myArrayList As ArrayList = New ArrayList() [C#] ArrayList arrayList = new ArrayList(). 2. [Visual Basic] For Each item As String In defaultParameterValuesList. Haga doble clic en el control Button que vuelve a mostrar el informe. Para crear el método de evento de clic del botón que vuelve a mostrar el informe en un proyecto de Windows 1.ReportSource = "C:\\WebSites\\ProjectName\\CustomersByCity.ParameterFieldInfo. Add(item) [C#] arrayList. 6.SelectedItems) { } 4. "UserName" se reemplaza por el nombre de conexión. [Visual Basic] myArrayList.rpt" [C#] crystalReportViewer.Add(item).ReportSource = "C:\Documents and Settings\UserName\My Documents\Visual Studio\Projects\ProjectName\CustomersByCity.rpt".[C#] foreach(string item in defaultParameterValuesList.ReportSource = "C:\\Documents and Settings\\UserName\\My Documents\\Visual Studio\\Projects\\ ProjectName\\CustomersByCity. La ruta predeterminada para un proyecto de Windows: [Visual Basic] myCrystalReportViewer. [Visual Basic] SetCurrentValuesForParameterField(myParameterFields. En el bloque foreach. "ProjectName" se reemplaza por el nombre del proyecto de Windows. agregue la instancia de cadena Item a la instancia de ArrayList. Pase la instancia de ParameterFields y de ArrayList al método SetCurrentValuesForParameterField(). [Visual Basic] Dim myParameterFields As ParameterFields = myCrystalReportViewer.ParameterFieldInfo. 5. Fuera del bucle foreach. myArrayList) [C#] . Asigne la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer.ParameterFieldInfo [C#] ParameterFields parameterFields = crystalReportViewer. Nota La ruta de directorio de archivos que se muestra más abajo es la de un proyecto de Visual Studio 2005. vuelva a enlazar la ruta de directorio de archivos del informe CustomersByCity a la propiedad ReportSource de la clase CrystalReportViewer. 7. En el menú Depurar. En su lugar. En el menú Crear. La página se volverá a cargar y mostrará los registros de cliente para los clientes que vivan en la lista de ciudades que ha seleccionado. En la barra de herramientas CrystalReportViewer. Configurar la persistencia de parámetros En esta sección configurará la persistencia (en un tutorial basado en Web) de las selecciones de campo de parámetro que se han realizado en el control ListBox. 5. La página se vuelve a cargar y. la lista de las ciudades seleccionar se puede conservar debido a diferencias de versión. 2. vuelve a aparecer la configuración de parámetros de inicio (París y Tokio). 3. Es un informe extenso que contiene muchas páginas. 6. 5. haga clic en Página siguiente. En el control ListBox. Haga clic en el botón Volver a mostrar el informe. En el menú Crear. 6. haga clic en Iniciar. 4. seleccione Generar solución. muestra los registros de cliente de todos los clientes de todas las ciudades. Nota En Visual Studio . La página 2 del informe no se muestra.SetCurrentValuesForParameterField(parameterFields. Si existen errores de generación. Para probar si está relleno el control ListBox defaultParameterValuesList 1. En el control ListBox. Haga clic en Volver a mostrar el informe. seleccione Generar solución. Si existen errores de generación. haga clic en Iniciar. Debe agregar código de persistencia a la aplicación para que se conserven los cambios efectuados cuando se vuelvan a cargar las páginas Web. presione la tecla CTRL mientras hace clic para seleccionar ciudades diferentes en la lista. 7. continúe y corríjalos ahora. Ahora que se ha aplicado los valores seleccionados del control ListBox como los valores actuales del campo de parámetro. 3. No se conserva la lista de las ciudades seleccionadas. Ahora estará preparado para generar y ejecutar el proyecto para verificar que el campo de parámetro se ha restablecido correctamente. a continuación. En el menú Depurar. . continúe y corríjalos ahora. estará listo para volver a mostrar el informe. Continúe con Configurar la persistencia de parámetros.NET 2002. Para demostrar la falta de persistencia de las selecciones de parámetro 1. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. 4. presione la tecla Mayús mientras hace clic para seleccionar todas las ciudades de la lista. 2. arrayList). Al iniciarse la página.DataSource = GetDefaultValuesFromParameterField(myParameterFields) defaultParameterValuesList. Agregue una línea final de código al bloque condicional que asigna la instancia ArrayList a Session. Cuando haya terminado. 4. arrayList. ArrayList) [C#] . Agregue una condición Else al bloque condicional Not IsPostBack. [Visual Basic] Session("myArrayList") = myArrayList [C#] Session["arrayList"] = arrayList. 3. Para agregar código de persistencia al método ConfigureCrystalReports() 1. obtenga la instancia de ArrayList de Session y proyéctela en ArrayList. Nota Puede agregar el nombre de variable como el identificador de cadena para el Session que agregue. A continuación. va a establecer los valores predeterminados ("París" y "Tokio") en la instancia de ArrayList.DataBind() myArrayList.DataSource = GetDefaultValuesFromParameterField(parameterFields). Al volver a cargarse la página. [Visual Basic] myArrayList = Ctype(Session("myArrayList").Para comenzar. arrayList. va a establecer valores únicos para la instancia de ArrayList por cada condición del bloque condicional. } 2. va a recuperar la instancia de ArrayList que está almacenada en Session. En el bloque Else.Add("Paris") myArrayList.Add("Tokyo"). va a agregar código de conservación al método ConfigureCrystalReports() agregando un bloque Else al bloque condicional If Not IsPostBack. el aspecto del bloque condicional debe ser parecido al siguiente: [Visual Basic] If Not IsPostBack Then defaultParameterValuesList.Add("Tokyo") End If [C#] if (!IsPostBack) { defaultParameterValuesList.Add("Paris"). defaultParameterValuesList. En el método ConfigureCrystalReports().DataBind(). corte y pegue las dos líneas de código que agregan París y Tokio al ArrayList en la parte inferior del bloque condicional Not IsPostBack. En la siguiente sección.DataSource = GetDefaultValuesFromParameterField(parameterFields).Add("Paris"). ArrayList) End If [C#] if (!IsPostBack) { defaultParameterValuesList. arrayList. Session["arrayList"] = arrayList. Reemplace las dos últimas líneas de código (que configuran y muestran el informe) con una llamada al método ConfigureCrystalReports() para realizar esta función en un conjunto común de código. • La tercera línea de código que se eliminará es la llamada al método SetCurrentValuesForParameterField(). defaultParameterValuesList.DataBind(). arrayList. . agregue una línea de código que asigne la instancia de ArrayList a Session. En el método de evento de clic de botón.DataSource = GetDefaultValuesFromParameterField(myParameterFields) defaultParameterValuesList.Add("Paris") myArrayList.Add("Tokyo") Session("myArrayList") = myArrayList Else myArrayList = Ctype(Session("myArrayList"). Para modificar el código del método de evento de clic de botón para que funcione con la persistencia de Session 1. el aspecto del bloque condicional debe ser parecido al siguiente: [Visual Basic] If Not IsPostBack Then defaultParameterValuesList. • La primera línea de código que se eliminará es el código que enlaza la ruta de directorio de archivos del informe a la propiedad ReportSource del control CrystalReportViewer. • La segunda línea de código que se eliminará es el código que obtiene la instancia de ParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer. Elimine las tres últimas líneas de código del método de evento de clic de botón. } else { arrayList = (ArrayList)Session["arrayList"].Add("Tokyo"). } Estas modificaciones en el método ConfigureCrystalReports() garantizan que siempre se pase la instancia actual de ArrayList al método SetCurrentValuesForParameterField(). Nota Puede agregar el nombre de variable como el identificador de cadena para el Session que agregue. Cuando haya terminado.arrayList = (ArrayList)Session["arrayList"]. En el siguiente paso agregará dos nuevas líneas de código para reemplazar el código eliminado. 2. realizará dos cambios en el código del evento de clic de botón: • • Tomar el ArrayList que ha creado y asignarlo a Session. inmediatamente fura del bucle foreach.DataBind() myArrayList. 8. presione la tecla Mayús mientras hace clic para seleccionar todas las ciudades de la lista. Es un informe extenso que contiene muchas páginas. [Visual Basic] ConfigureCrystalReports() [C#] ConfigureCrystalReports(). 7. continúe y corríjalos ahora. Ha aprendido a obtener los valores seleccionados del ListBox y colocarlos en un ArrayList para volver a llamar al método de ayuda original y cambiar la lista de valores de parámetro. Ahora se conserva la lista de las ciudades seleccionadas. La página se vuelve a cargar y muestra los registros de cliente de todos los clientes de todas las ciudades. ha creado método de ayuda que acepta cualquier conjunto de valores en un formato común (un ArrayList) y ha aplicado dichos valores a un informe basado en un nombre de campo de parámetro específico (la constante PARAMETER_FIELD_NAME). 2. 3. Para probar si está relleno el control ListBox defaultParameterValuesList 1. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. De este modo se obtiene la instancia de ArrayList. En el menú Crear. Ahora estará preparado para generar y ejecutar el proyecto para verificar que el campo de parámetro se ha restablecido correctamente. así como la presentación del informe. Se muestra la página 2 del informe. 3. Conclusión Ha creado correctamente un informe con un valor de parámetro discreto. Continúe con Conclusión. 5. haga clic en Página siguiente. . la aplica al informe y enlaza el informe al control CrystalReportViewer. También ha aprendido a llenar el un control ListBox con los valores predeterminados de un campo de parámetro particular. En la barra de herramientas CrystalReportViewer.[Visual Basic] Session("myArrayList") = myArrayList [C#] Session["arrayList"] = arrayList. seleccione Generar solución. En el control ListBox. haga clic en Iniciar. Haga clic en Volver a mostrar el informe. En el menú Depurar. Llame al método ConfigureCrystalReports(). 6. 4. Si existen errores de generación. Nota Ahora puede seguir trabajando con este tutorial y agregar un subinforme al informe y. que modifica el tutorial actual. Tutorial: Leer y configurar parámetros de rango para un subinforme En este tutorial explorará una complicación adicional: ¿qué sucede si el informe contiene un subinforme que necesita parámetros distintos? Para llevar a cabo este tutorial. Leer y configurar parámetros de rango con un subinforme. Leer y configurar parámetros discretos. a continuación. debe realizar el tutorial anterior. Haga clic en el vínculo adecuado para pasar a esa sección: • Introducción . continúe con el siguiente tutorial. configurar dicho subinforme con un parámetro de rango. Si lo desea. La tabla Pedidos está relacionada con la tabla Clientes que se ha utilizado en el tutorial anterior mediante una clave externa ID del cliente. Este tutorial también se puede realizar con clases del modelo de objetos ReportDocument. 2. así como el rango de las fechas de pedido que se muestran en el subinforme. • • • Agregará un parámetro de rango al subinforme que filtre por un rango de fechas de pedido. Leer y configurar parámetros discretos. obtuvo información sobre cómo crear un informe con un parámetro discreto y cómo escribir código que estableciera dicho parámetro en tiempo de ejecución. Para agregar un subinforme 1. . Este método crea una instancia de ParameterRangeValue que contiene los valores startDate y endDate values. Continúe con Agregar un subinforme al informe original. podrá filtrar los valores que se muestran en el informe en tiempo de ejecución. Cuando termine este tutorial. Para obtener más información sobre el uso del modelo de objetos. Leer y configurar parámetros discretos. Abra el proyecto que ha creado en el tutorial anterior. Agregará dos controles Text al formulario: orderStartDate y orderEndDate. tanto con valores de parámetro codificados como con valores de parámetros pasados desde un control ListBox o TextBox.• • • • • • • Agregar un subinforme al informe original Agregar el código de parámetro de subinforme Agregar controles TextBox para contener valores de parámetro de rango Modificar métodos para llamar al subinforme Probar el parámetro de subinforme Conclusión Información de código de ejemplo Introducción En el tutorial anterior. haga doble clic en el informe CustomersByCity para abrirlo. El código que agregue limita el número de ciudades que se muestran en el informe principal. Necesita realizar cuatro modificaciones al proyecto que ha creado en Leer y configurar parámetros discretos: • Agregará un subinforme al informe original. para establecer el rango de fechas de pedido en tiempo de ejecución. a continuación. y. En este tutorial. vea ¿Cuál es el modelo de objetos que se debe utilizar?. vea Leer y configurar parámetros con un subinforme mediante el modelo de objetos ReportDocument. Agregar un subinforme al informe original Para empezar. Este subinforme direcciona la tabla Pedidos de la base de datos Xtreme. pasa dicha instancia de ParameterRangeValue al parámetro de rango en el subinforme. En Explorador de soluciones. aprenderá a agregar parámetros de rango a un subinforme. Modificará el método SetCurrentValuesForParameter() que ha creado en el tutorial anterior. agregará un subinforme al informe original. en la lista Campos 17. En el panel Campo(s) del informe contenedor para vincular. coloque el subinforme en una sección Grupo en vez de hacerlo en una sección Detalles.. 11. 15. En el cuadro de diálogo Insertar un subinforme. 7. seleccione ID del pedido. Haga clic en Asistente de informes. En la subcarpeta que se abre. no existe la carpeta Crear nueva conexión. a continuación. el contenido se mostrará en el nivel superior. 12. disponibles. 16. 6. donde Crystal Reports no se ha actualizado a Crystal Reports Developer. vea Insertar un subinforme (cuadro de diálogo). 18. . Haga clic en el símbolo > para mover estos campos al panel Campos para mostrar y. en la ficha Subinforme. escriba "PedidosClientes". Se expandirá la carpeta ODBC (RDO) y mostrará la base de datos de ejemplo Xtreme. 8.. a continuación. expanda la carpeta Crear nueva conexión. 13. Haga clic en Aceptar. Estas selecciones de parámetros y de datos generan automáticamente entre el informe principal y el subinforme. Haga clic con el botón derecho en la barra gris Detalles y seleccione Insertar sección abajo.NET 2002 o 2003. haga clic en Subinforme. se muestra en la sección Detalles b del informe principal. El nuevo subinforme. En el cuadro de diálogo Insertar un subinforme. 9. seleccione la ficha Vínculo. Nota Al agregar un subinforme a la sección Detalles. Si no necesita información de subinforme a ese nivel de granularidad. En el panel Campos disponibles. lo que agrega un costo de rendimiento al informe. seleccione ID del cliente y. PedidosClientes. seleccione Crear un subinforme con el Asistente de informes. En el campo Nombre del informe nuevo. haga clic en Siguiente. En el panel Vínculo de campo Clientes. seleccione la entrada DSN de ODBC correcta para su versión de Crystal Reports. En la ventana ODBC (RDO).3. seleccione Insertar y. expanda la carpeta ODBC (RDO). como se explica en Entrada DSN de ODBC para la base de datos de ejemplo Xtreme y. haga clic para soltarlo. deje las selecciones predeterminadas inalteradas. a continuación. envío y Enviar vía. Fecha del pedido. haga clic en el símbolo >. Aparece un cuadrado gris alrededor del cursor del mouse. expanda la tabla Clientes. 5.ID del cliente que aparece. Nota El cuadro de diálogo Insertar un subinforme incluye otras opciones que permiten elegir un informe existente y subinformes a petición. Fecha de 14. Haga clic con el botón derecho en la nueva sección Detalles b que ha creado. a continuación. Arrastre el rectángulo gris en la nueva sección Detalles b y. 10. En el panel Orígenes de datos disponibles de la ventana Asistente para la creación de informes estándar. a continuación. Para obtener más información sobre estas funciones. Seleccione la tabla Pedidos y haga clic en el símbolo > para mover la tabla Pedidos al panel Seleccionar tablas y. el subinforme se muestra por cada fila. haga clic en Finalizar. 4. Nota En Visual Studio . haga clic en Finalizar. a continuación. haga clic en Aceptar. a continuación. en la lista desplegable de criterios. seleccione fórmula: 8. En la nueva ficha Pedidos. 3. 3. 4. 4. En la barra de herramientas de Crystal Reports. En el cuadro de diálogo Asistente de selección.. En la barra de herramientas de Crystal Reports.Order Date} in {?OrderDateRange} 9. a continuación. 6. En la sección Detalles. 7. 5. Desde el menú Archivo. verifique que está establecido el criterio Pedidos.Fecha del pedido. Para verificar la configuración del subinforme 1. Para agregar un parámetro OrderDateRange al subinforme 1. haga clic en Asistente de selección. Haga clic en Aceptar. Si el Explorador de campos no está visible. haga clic en Asistente de selección. 2. seleccione Guardar todo. Ha agregado correctamente un subinforme PedidosClientes al informe CustomersByCity. expanda la tabla Pedidos. haga clic en Aceptar. Escriba la siguiente fórmula: {Orders. • Defina Texto de solicitud como "Especifique un rango de fechas de pedidos para mostrar". seleccione Fecha del pedido y. Haga clic en Aceptar.. En el cuadro de diálogo Crear campo de parámetro: • Defina el Nombre como "OrderDateRange". expanda Campos de parámetro. seleccione Guardar todo. 5. Ha agregado correctamente un parámetro OrderDateRange al subinforme y lo ha vinculado a la columna Pedidos.ID del cliente es igual a {Pm-Clientes. • Defina Tipo de valor como "Fecha". Haga clic en la ficha Nuevo. 7. 6. . haga clic en Cambiar la vista del campo. en la barra de herramientas de Crystal Reports. aparecen botones de desplazamiento para el informe principal y el subinforme PedidosClientes. haga doble clic en el subinforme PedidosClientes para verlo. 2. Verifique que el campo de parámetro Pm-Clientes. Desde el menú Archivo. En la sección siguiente agregará un parámetro OrderDateRange al subinforme.ID del cliente se ha generado automáticamente al vincular el subinforme. En la parte inferior de la vista del diseñador. Nota Otro modo de ver el Explorador de campos es haciendo clic en Explorador de campos en el menú Crystal Reports. En el Explorador de campos. "Rango de valores". haga clic con el botón derecho en Campos de parámetro y seleccione Nuevo. • Defina Opciones como una sola selección. En el cuadro de diálogo Elegir campo. En la sección siguiente agregará código para direccionar el parámetro OrderDateRange en el subinforme.Fecha del pedido.Ahora está listo para verificar la configuración del subinforme. 10. En el Explorador de campos.ID del cliente} y. haga clic en Código. agregue dos nuevas constantes debajo de la constante PARAMETER_FIELD_NAME agregada en el tutorial anterior.Continúe con Agregar el código de parámetro de subinforme.) .Shared. [Visual Basic] Dim myParameterRangeValue As ParameterRangeValue = New ParameterRangeValue() [C#] ParameterRangeValue parameterRangeValue = new ParameterRangeValue(). ByVal startDate As String. cree un método de ayuda privado. [Visual Basic] Private Sub SetDateRangeForOrders(ByVal myParameterFields As ParameterFields. string startDate. 3. Para empezar. En este método. Para crear y codificar el método SetDateRangeForOrders() 1. deberá incluir un enunciado "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de código subyacente del espacio de nombres CrystalDecisions. (Esta declaración se ha agregado en Configuración de proyectos. [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". 4. declare y cree una instancia de la clase ParameterRangeValue. string endDate) { } 5. cree un nuevo método privado denominado SetDateRangeForOrders()con tres parámetros: ParameterFields. Agregar el código de parámetro de subinforme Ahora está listo para agregar el código de parámetro para el subinforme a la clase de código subyacente. En la parte superior de la clase. Nota Para que la clase ParameterRangeValue sea accesible. string startDate y string endDate. 2. En el menú Ver. Abra el formulario Web Forms o Windows Forms. En la parte inferior de la clase. ByVal endDate As String) End Sub [C#] private void SetDateRangeForOrders(ParameterFields parameterFields. SetDateRangeForOrders(). private const string SUBREPORT_NAME = "CustomerOrders". Pase los dos valores de constante que ha declarado al principio de la clase. moneda u hora.BoundInclusive.UpperBoundType = RangeBoundType. Nota Para BoundInclusive. Nota Las propiedades StartValue y EndValue de la clase ParameterRangeValue aceptan valores de tipo Object. Establezca los límites inferior y superior para que sean bound-inclusive. los valores de rango superior e inferior no se incluyen en el rango. . Obtenga la instancia de ParameterField de la clase indizada ParameterFields basada dos valores indizados: el nombre de campo de parámetro de subinforme y el nombre de subinforme. 8.EndValue = endDate [C#] parameterRangeValue. Ahora está preparado para asignar la instancia de ParameterRangeValue al parámetro del subinforme.BoundInclusive. [Visual Basic] myParameterRangeValue.EndValue = endDate. número. SUBREPORT_NAME) [C#] ParameterField parameterField = parameterFields[SUBREPORT_PARAMETER_FIELD_NAME.BoundInclusive myParameterRangeValue.6. Establezca la propiedad StartValue de la instancia de ParameterRangeValue en el parámetro de método startDate. incluidos: texto.BoundInclusive [C#] parameterRangeValue. Este tipo genérico permite que el valor de rango que se pasa sea de muchos tipos. SUBREPORT_NAME]. [Visual Basic] myParameterRangeValue. 7.StartValue = startDate.LowerBoundType = RangeBoundType.UpperBoundType = RangeBoundType.LowerBoundType = RangeBoundType. 9. parameterRangeValue. [Visual Basic] myParameterRangeValue. Establezca la propiedad EndValue de la instancia de ParameterRangeValue en el parámetro de método endDate.StartValue = startDate [C#] parameterRangeValue. [Visual Basic] Dim myParameterField As ParameterField = myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME. fecha. 2.CurrentValues.10. 4. Haga clic entre el control ListBox y el control Button. Para crear y configurar un botón que vuelva a mostrar el informe en el formulario 1. Si está desarrollando un sitio Web. establezca la propiedad Text en "Fecha inicial de pedidos". agregará dos controles TextBox que proporcionan los valores de fecha inicial y final en tiempo de ejecución al parámetro de rango OrderDateRange del informe PedidosClientes. realice las siguientes acciones: a. 11. la persistencia de los valores de fecha que el usuario escribe en los cuadros de texto se mantiene mediante ViewState. Agregue la instancia de ParameterRangeValue. en la ventana Propiedades. a continuación. Seleccione el segundo control Label y. Los pasos restantes se aplican tanto a los proyectos Web como a los de Windows. Llame al método Clear() de la propiedad CurrentValues de la instancia de ParameterField para eliminar cualquier valor existente de la propiedad CurrentValues. Coloque una etiqueta encima de la otra y ambas encima del control Button. b. . Este procedimiento de varios pasos ha establecido los valores de fecha inicial y final en una instancia de ParameterRangeValue y los ha pasado al parámetro OrderDateRange del subinforme PedidosClientes. En la primera línea creada debajo del control ListBox. haga clic en Diseñador. establezca la propiedad Text en "Fecha final de pedidos". Abra el formulario Web Forms o Windows Forms. En el menú Ver. a continuación. [Visual Basic] myParameterField.CurrentValues. Si está desarrollando un proyecto de Windows. que ha creado anteriormente. En la segunda línea creada debajo del control ListBox.CurrentValues.CurrentValues. c. d. Presione INTRO tres veces para crear dos líneas entre el control ListBox y el control Button. en la ventana Propiedades.Add(myParameterRangeValue) [C#] parameterField.Add(parameterRangeValue). Agregar controles TextBox para contener valores de parámetro de rango En esta sección. escriba "Fecha final de pedidos". Nota Si implementa este tutorial en un sitio Web. En la Caja de herramientas. escriba "Fecha inicial de pedidos". b.Clear() [C#] parameterField. 3.Clear(). a la propiedad CurrentValues de la instancia de ParameterField. arrastre dos controles Label a la derecha del control ListBox. Seleccione el primer control Label y. c. Continúe con Agregar controles TextBox para contener valores de parámetro de rango. [Visual Basic] myParameterField. realice las siguientes acciones: a. Leer y configurar parámetros discretos. Continúe con Modificar métodos para llamar al subinforme. arrastre un control TextBox hasta la derecha de "Fecha final de pedidos". En el método ConfigureCrystalReports(). [Visual Basic] Dim startDate As String = "8/1/1997" Dim endDate As String = "8/31/1997" [C#] string startDate = "8/1/1997". ha diseñado estos métodos de dos formas distintas. 2. Elija uno (pero no ambos) de los procedimientos de varios pasos siguientes. Modifique los métodos que excluyen la persistencia de Session o modifique los que incluyan persistencia de Session: • • Modificar los métodos que excluyen la persistencia de Session. . En la ventana Propiedades. declare y establezca valores codificados para dos variables de cadena.1. En la ventana Propiedades. En Cuadro de herramientas. para que se procese la información de parámetro para los subinformes. 2. Modificar métodos para llamar al subinforme Ahora debe modificar el método ConfigureCrystalReports() y el método de evento redisplay_Click() para recibir información de estos controles TextBox y aplicarlos al método SetDateRangeForOrders(). Los sitios Web normalmente requieren persistencia de Session. string endDate = "8/31/1997". arrastre un control TextBox hasta la derecha de "Fecha inicial de pedidos". establezca ID (o Name) en "orderEndDate". agregue un par de saltos de línea en el código después de las líneas que asignan "París" y "Tokio" como variables ArrayList. Desde el menú Archivo. 3. startDate y endDate. En Cuadro de herramientas. 6. establezca ID (o Name) en "orderStartDate". 7. De lo contrario. Modificar los métodos que excluyen la persistencia de Session Si ha terminado el tutorial anterior. Nota Los proyectos de Windows no requieren persistencia de Session. seleccione Guardar todo. 4. Leer y configurar parámetros discretos. en función de si incluía la persistencia de Session. Haga clic en el control TextBox para seleccionarlo. Haga clic en el control TextBox para seleccionarlo. vaya a Modificar los métodos que incluyen la persistencia de Session. Modificar los métodos que incluyen la persistencia de Session. 5. En los saltos de línea. Para modificar el método ConfigureCrystalReports() que excluye la persistencia de Session 1. En el tutorial anterior. y ha excluido la persistencia de Session. realice los siguientes procedimientos. llame al método SetDateRangeForOrders() y pásele la instancia de ParameterFields y las variables startDate y endDate. 4. 3. [Visual Basic] SetDateRangeForOrders(myParameterFields. En el método de evento redisplay_Click(). seleccione Guardar todo. De lo contrario.Text Dim endDate As String = orderEndDate. endDate). continúe con Modificar los métodos que excluyen la persistencia de Session. Desde el menú Archivo.Text. string endDate = orderEndDate. startDate y endDate.3. 4. Leer y configurar parámetros discretos. [Visual Basic] SetDateRangeForOrders(myParameterFields. llame al método SetDateRangeForOrders() y pásele la instancia de ParameterFields y las variables startDate y endDate. de los controles TextBox que ha agregado al formulario Web Forms o Windows Forms. startDate. seleccione Guardar todo. Modificar los métodos que incluyen la persistencia de Session Si ha terminado el tutorial anterior. endDate). realice los siguientes procedimientos. startDate. Debajo del código que llama a SetCurrentValuesForParameterField(). endDate) [C#] SetDateRangeForOrders(parameterFields. . startDate. 2. [Visual Basic] Dim startDate As String = orderStartDate. A continuación. Para modificar el método redisplay_Click() que excluye la persistencia de Session 1. modificará el método de evento redisplay_Click. declare y establezca valores para dos variables de cadena. startDate.Text. agregue un par de saltos de línea en el código encima de la línea que enlaza el informe al control CrystalReportViewer. endDate) [C#] SetDateRangeForOrders(parameterFields.Text [C#] string startDate = orderStartDate. Desde el menú Archivo. y ha incluido la persistencia de Session. Debajo del código que llama a SetCurrentValuesForParameterField(). En los saltos de línea. 3.ToString(). 2.Para modificar el método ConfigureCrystalReports() que incluye la persistencia de Session 1. asigne las variables startDate y endDate a Session. En el bloque Else. [Visual Basic] startDate = Session("startDate"). obtenga las variables startDate y endDate de Session. [Visual Basic] Session("startDate") = startDate Session("endDate") = endDate [C#] Session["startDate"] = startDate.ToString() [C#] startDate = Session["startDate"]. 5. [Visual Basic] startDate = "8/1/1997" endDate = "8/31/1997" [C#] startDate = "8/1/1997". string endDate. declare dos variables de cadena.ToString(). . endDate = "8/31/1997". agregue un par de saltos de línea en el código después de la línea que declara y crea una instancia de ArrayList. escriba los valores predeterminados para las variables startDate y endDate. [Visual Basic] Dim startDate As String Dim endDate As String [C#] string startDate. En el método ConfigureCrystalReports(). Session["endDate"] = endDate. endDate = Session["endDate"]. En los saltos de línea. después de obtener la instancia de ArrayList de Session. 4.ToString() endDate = Session("endDate"). startDate y endDate. En el bloque condicional Not IsPostBack. En el bloque condicional Not IsPostBack. Probar el parámetro de subinforme Ya está preparado para probar la configuración del parámetro de subinforme desde los valores TextBox. startDate. Desde el menú Archivo. Para probar la configuración del parámetro de subinforme . llame al método SetDateRangeForOrders() y pásele la instancia de ParameterFields y las variables startDate y endDate. En el método de evento redisplay_Click().Text [C#] Session["startDate"] = orderStartDate. se llega al final del bloque con las variables de fecha asignadas en cualquier caso. Desde el menú Archivo. 3. En los saltos de línea.Con este enfoque. endDate) [C#] SetDateRangeForOrders(parameterFields. De este modo se sigue la lógica paralela a la asignación de la variable ArrayList que ha configurado en el tutorial anterior. Se recuperan y aplican estos valores de startDate y endDate Session cuando se llama al método ConfigureCrystalReports().Text. Session["endDate"] = orderEndDate. Para modificar el método redisplay_Click() que incluye la persistencia de Session 1. [Visual Basic] Session("startDate") = orderStartDate. startDate. 2. seleccione Guardar todo. seleccione Guardar todo. 7.Text. Continúe con Probar el parámetro de subinforme. modificará el método de evento redisplay_Click. [Visual Basic] SetDateRangeForOrders(myParameterFields. asigne la propiedad Text del TextBox orderStartDate y orderEndDate a variables de Session. Ahora estará preparado para generar y ejecutar el proyecto para verificar que los valores TextBox restablecen el parámetro de rango del subinforme. endDate). Debajo del código que llama a SetCurrentValuesForParameterField(). A continuación. 6.Text Session("endDate") = orderEndDate. agregue un par de saltos de línea en el código después de la línea que asigna la instancia de ArrayList a Session. En el menú Crear. así como un subinforme que muestra los pedidos del rango de fechas especificado anteriormente. 3. Se conservan los valores que están seleccionados para ambas ciudades y el rango de fechas de pedido. aprenderá a usar las fórmulas de selección para filtrar los registros que desee mostrar en un informe de Crystal. 9.1. 7. En el control TextBox startDate. escriba "31/8/1997". 4. En el control ListBox. continúe y corríjalos ahora. 2. En el control CrystalReportViewer. En el control TextBox endDate. aumente el nivel de Zoom al 125%. Continúe con Conclusión. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. haga clic en Iniciar. Conclusión 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 parámetro de rango que se crea en el subinforme. La página se recargará al 125% de zoom. En el menú Depurar. 6. 8. presione la tecla CTRL mientras hace clic para seleccionar al menos cuatro ciudades diferentes en la lista. escriba "1/1/1997". seleccione Generar solución. 5. Haga clic en el vínculo adecuado para pasar a esa sección: • Introducción . Haga clic en el botón Volver a mostrar el informe. La página 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. Si existen errores de generación. Tutorial: Filtrar datos con fórmulas de selección En este tutorial. • • • • • • • Crear un informe con una fórmula de selección Enlazar el informe Agregar controles para usarlos en la fórmula de selección Establecer la fórmula de selección manualmente en código Utilizar un control DropDownList para modificar la fórmula de selección Conclusión Información de código de ejemplo Introducción Las fórmulas de selección se utilizan para filtrar los registros que desee mostrar en un informe de Crystal. haga clic en Aceptar. La Configuración de proyectos contiene referencias específicas a espacios de nombres y configuración de códigos necesarios para este procedimiento. va a crear un informe que obtenga su información de la base de datos de ejemplo de Microsoft Access que se incluye con Crystal Reports. a continuación. . 3. 1. Una vez establecida la propiedad. En Explorador de soluciones. 4. En el panel Crear un nuevo documento de Crystal Report del cuadro de diálogo Galería de Crystal Report. Si no se ha registrado anteriormente. seleccione la plantilla Crystal Report. Continúe con Crear un informe con una fórmula de selección. Puede elegir que se muestren los nombres de los clientes que son iguales a. Para obtener más información sobre cómo se escriben las fórmulas de selección. primero debe seguir los pasos de Configuración de proyectos. En el cuadro de diálogo Agregar nuevo elemento. va a crear una fórmula de selección para filtrar los registros de los clientes cuyo campo Ventas del año pasado es mayor que un valor especificado y el campo Nombre del cliente se compara con otra cadena. especifique el nombre "CustomersBySalesName. vea Referencia de fórmulas. En el campo Nombre. seleccione Usar asistente de informes. a continuación.NET 2002 o 2003. menores que. en la vista Plantillas. mayores que. y éste no se podrá completar sin dicha configuración. el botón se denomina Abrir. La fórmula se pasa como variable de cadena a la propiedad SelectionFormula de la clase CrystalReportViewer. 2. puede usar las sintaxis Basic y Crystal. En este tutorial. haga clic en Agregar nuevo elemento. Para escribir fórmulas de selección. Por lo tanto. el informe de Crystal que enlaza con el control CrystalReportViewer se filtra antes de mostrarse. Se utiliza un control ListBox con el fin de seleccionar un operador de comparación para el campo Nombre del cliente. antes de que empiece con este procedimiento.rpt" y haga clic en Agregar. menores o iguales que. se le pedirá que se registre. seleccione Estándar y. elija Agregar y. Para crear un informe con datos seguros de la base de datos Northwind Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración de proyectos. vea Registro y código de clave de Crystal Reports. haga clic con el botón derecho en el nombre de proyecto en negrita. En el panel Elegir un Asistente. Nota En Visual Studio . iguales o mayores que o que no son iguales que el valor de cadena especificado. 5. Para saber cómo registrarse. Crear un informe con una fórmula de selección En esta sección. haga doble clic en Customer. haga clic en Finalizar. haga doble clic en la tabla Cliente para mover la tabla al panel Tablas seleccionadas y. cree una fórmula de selección para filtrar los datos basándose en el valor del campo Ventas del año pasado. 9. Después. En la subcarpeta que se abre.6. como se explica en Entrada DSN de ODBC para la base de datos de ejemplo Xtreme y. En el menú Ver. 7. Para crear una fórmula de selección basada en las ventas del año pasado 1. En los sitios Web. En el panel Orígenes de datos disponibles de la ventana Asistente para la creación de informes estándar. Expanda el nodo Tablas y. no existe la carpeta Crear nueva conexión. expanda la carpeta ODBC (RDO). haga clic y presione CTRL en Nombre del cliente y Ventas del año pasado. en el método ConfigureCrystalReports() (el que ha creado en Configuración de proyectos). 12. 2. . 8. a continuación. Se expandirá la carpeta ODBC (RDO) y mostrará la base de datos de ejemplo Xtreme. haga clic en Código para ver la clase de código subyacente de este formulario Web Forms o Windows Forms. agregue las siguientes líneas de código en el bloque condicional Not IsPostBack. a continuación. expanda la carpeta Crear nueva conexión. haga clic en Siguiente.NET 2002 o 2003. el contenido se mostrará en el nivel superior. Expanda la tabla Cliente y. haga clic en Siguiente. a continuación. donde Crystal Reports no se ha actualizado a la versión completa. haga clic en Finalizar. 11. Se crea el informe CustomersBySalesName y se carga en la ventana principal de Visual Studio. Abra el formulario Web Forms o Windows Forms. seleccione la entrada DSN de ODBC correcta para su versión de Crystal Reports. 3. Nota En Visual Studio . a continuación. 4. cree un bloque condicional Not IsPostBack. Haga clic en el símbolo > para mover estos campos al panel Campos para mostrar y. En los sitios Web. [Visual Basic] If Not IsPostBack Then End If [C#] if(!IsPostBack) { } Nota El bloque condicional Not IsPostBack encapsula el código que se debería ejecutar sólo la primera vez que se carga la página. En el panel Campos disponibles. En la ventana ODBC (RDO). a continuación. haga doble clic en el símbolo > para mover el campo al panel Agrupar por y. 10. a continuación.Customer Name. en Campos del informe. colocó un control CrystalReportViewer en el formulario Web Forms o Windows Forms. 3. agregue el código al método ConfigureCrystalReports().En los proyectos de Windows. En esta sección.Last Year's Sales} > 11000. Para enlazar la ruta de directorio de archivos del informe CustomersBySalesName al control CrystalReportViewer 1. Declare una variable de cadena. 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 parámetro de cadena en el método Server. Busque el método ConfigureCrystalReports().MapPath(). a. En el menú Ver. Esto asigna el informe local a la ruta del directorio de archivos de la unidad de disco duro en tiempo de ejecución. llámela reportPath y asígnele una ruta en tiempo de ejecución al informe local. va a comprobar si el informe se muestra correctamente con los registros filtrados por la fórmula de selección.SelectionFormula = selectFormula. Después. [Visual Basic] Dim mySelectFormula As String = "{Customer. 2.Customer Name}.Customer Name}. Enlazar el informe Cuando siguió las instrucciones de la sección Configuración de proyectos para preparase para este tutorial. 1. agregó un informe CustomersBySalesName y una fórmula de selección al proyecto. Continúe con Enlazar el informe.SelectionFormula = mySelectFormula [C#] crystalReportViewer.00 y cuyos nombres de clientes empiecen por la letra "A". En los pasos anteriores. 1. que ha creado en Configuración de proyectos. 1) = ""A"" " [C#] string selectFormula = "{Customer. [Visual Basic] myCrystalReportViewer.00 " + "AND Mid({Customer. sin el bloque condicional Not IsPostBack. haga clic en Código para ver la clase de código subyacente de este formulario Web Forms o Windows Forms. b. Asigne la cadena de la fórmula de selección a la propiedad SelectionFormula del control CrystalReportViewer. va a enlazar la ruta de directorio de archivos del informe CustomersBySalesName al control CrystalReportViewer. Especifique la fórmula para seleccionar sólo los registros cuyo valor del campo Ventas del año pasado sea mayor que $11000. [Visual Basic] .00 " _ & "AND Mid({Customer. 4. 1) = \"A\"".Last Year's Sales} > 11000. Abra el formulario Web Forms o Windows Forms. 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 compilación 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 fórmula de selección del informe CustomersBySalesName 1. En el menú Crear, haga clic en Generar solución. 2. Si existen errores de generación, continúe y corríjalos 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 continuación, copie el informe en dicho subdirectorio. Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecución, 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 depuración, aparecerá un cuadro de diálogo en el que se indica que el archivo Web.config se debe modificar. Haga clic en el botón Aceptar para habilitar la depuración. 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 depuración. Continúe con Agregar controles para usarlos en la fórmula de selección. Agregar controles para usarlos en la fórmula de selección En esta sección, va a agregar controles para cambiar dinámicamente los valores utilizados en la fórmula de selección. Para el campo Ventas del año pasado, va a agregar un cuadro de texto para especificar el valor mínimo 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 fórmula de selección 1. Abra el formulario Web Forms o Windows Forms. 2. En el menú Ver, haga clic en Diseñador. 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 continuación, presione INTRO tres veces. El control CrystalReportViewer bajará tres líneas. 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 tamaño del control CrystalReportViewer, para que aparezcan tres líneas 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 línea escriba, "Especifique el valor mínimo de las ventas del año 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 mínimo de las ventas del año pasado: $". 4. En Cuadro de herramientas, arrastre un control TextBox hasta la derecha del texto. 5. Seleccione el control TextBox y, a continuación, 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 línea, 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 línea 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 continuación, 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 continuación, 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 línea del formulario y sobre el control CrystalReportViewer. Seleccione el control Button y, a continuación, 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. Continúe con Establecer la fórmula de selección manualmente en código. Establecer la fórmula de selección manualmente en código Ya está preparado para agregar código para modificar la fórmula de selección en la clase de código subyacente. Para codificar la fórmula de selección 1. Abra el formulario Web Forms o Windows Forms. 2. En el menú Ver, seleccione Diseñador. 3. Haga doble clic en Volver a mostrar el informe. Aparece la clase de código subyacente del informe y muestra que se ha generado automáticamente un método de evento redisplay_Click(). 4. En la fórmula de selección, cree una variable de cadena que incluya los valores desde los controles TextBox. La fórmula de selección es parecida al texto escrito en el método ConfigureCrystalReports(). En vez del valor de mínimo 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 conexión 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 fórmula de selección que puede modificar en tiempo de ejecución. Para probar la fórmula de selección 1. En el menú Crear, haga clic en Generar solución. 2. Si existen errores de generación, continúe y corríjalos 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 sólo los registros de clientes con nombres mayores que "SAB" y ventas del año pasado mayor que "200000". 7. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. Continúe con Utilizar un control DropDownList para modificar la fórmula de selección. escriba "CeComparisonOperator" y. 2. haga clic en Agregar. 3. Puesto que las enumeraciones no tienen constructores. Nota En Visual Studio 2005. Not_EqualTo . seleccione Clase desde la vista Plantillas. va a modificar la cadena actualmente asignada a la propiedad SelectionFormula del control CrystalReportViewer. En Explorador de soluciones. mayor o igual o no es igual que el texto especificado en el control TextBox. menor que. LessThan_or_EqualTo. En el método de evento redisplay_Click(). Para crear la enumeración CeComparisonOperator 1. GreaterThan. puede que se le pida que coloque esta clase en un directorio de código. Nota En Visual Basic. a continuación.Utilizar un control DropDownList para modificar la fórmula de selección En esta sección. GreaterThan_or_EqualTo. recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeración. cambie la palabra clase por enum para convertir la clase en una enumeración. elimine el método constructor predeterminado que se proporciona en la versión de C# del código. Haga clic en el botón Sí. En el campo Nombre. El control DropDownList selecciona si desea mostrar los nombres de los clientes que sean iguales a. menor o igual que. En la firma de clase. 4. elija Agregar y. LessThan. Va a crear una enumeración que contiene los operadores de comparación. En un proyecto de Windows de C# para Visual Studio 2005. va a llenar el control DropDownList con operadores de comparación. 6. En la enumeración. haga clic con el botón derecho en el nombre de proyecto en negrita. especifique los valores: [Visual Basic] EqualTo LessThan GreaterThan LessThan_or_EqualTo GreaterThan_or_EqualTo Not_EqualTo [C#] EqualTo. En el cuadro de diálogo Agregar nuevo elemento. mayor que. a continuación. haga clic en Agregar nuevo elemento. 5. también debe cambiar el espacio de nombres al nombre del proyecto. establezca el valor de la propiedad DataSource del control ComboBox de selectOperatorList en los valores de la enumeración CeComparisonOperator. Para llenar el control DropDownList desde la enumeración CeComparisonOperator para un sitio Web 1. Siga las instrucciones de uno de los siguientes procedimientos de varios pasos.DataBind() [C#] selectOperatorList. haga clic en Código. 4.DataSource = System. [Visual Basic] selectOperatorList. 3.DataSource = System. establezca el valor de la propiedad DataSource del control DropDownList en los valores de la enumeración CeComparisonOperator. haga clic en Código. En el menú Ver. [Visual Basic] selectOperatorList. En el método ConfigureCrystalReports(). 2.DataSource = System.GetValues(typeof(CeComparisonOperator)). Para llenar el control DropDownList desde la enumeración CeComparisonOperator para un proyecto de Windows 1. llame al método DataBind() del control DropDownList de selectOperatorList para enlazar los valores al control.DataSource = System. 3. En el bloque condicional Not IsPostBack del método ConfigureCrystalReports(). 2.Enum.GetValues(GetType(CeComparisonOperator)) [C#] selectOperatorList.DataBind().Enum. Después.Enum. Ahora. Abra el formulario Web Forms. delante de la declaración de cadena de la fórmula de selección. .Los siguientes procedimientos explican cómo enlazar la enumeración CeComparisonOperator al control DropDownList de un sitio Web o un proyecto para Windows. Abra el formulario Windows Forms. va a crear el método de ayuda GetSelectedCompareOperator() para que devuelva el índice seleccionado como cadena que representa un signo de operador de comparación. [Visual Basic] selectOperatorList.Enum. En el menú Ver.GetValues(GetType(CeComparisonOperator)) [C#] selectOperatorList.GetValues(typeof(CeComparisonOperator)). delante de la declaración de cadena de la fórmula de selección. Not_EqualTo return "<>" Case Else return "=" End Select [C#] switch ((CeComparisonOperator)selectOperatorList. default: return "=". } . [Visual Basic] Private Function GetSelectedCompareOperator() As String End Function [C#] private string GetSelectedCompareOperator() { } 2. En el método.LessThan_or_EqualTo: return "<=". case CeComparisonOperator. case CeComparisonOperator.SelectedIndex) { case CeComparisonOperator.LessThan_or_EqualTo return "<=" Case CeComparisonOperator.Not_EqualTo: return "<>".GreaterThan_or_EqualTo: return ">=".LessThan return "<" Case CeComparisonOperator.GreaterThan: return ">". cree una instrucción "Select Case" [Visual Basic] o "switch" [C#] que haga referencia a los miembros de la enumeración CeComparisonOperator y devuelva el signo del operador de comparación como variable de cadena. [Visual Basic] Select Case selectOperatorList. cree un método de ayuda privado denominado GetSelectedCompareOperator() que devuelva una variable de cadena. case CeComparisonOperator.SelectedIndex Case CeComparisonOperator.EqualTo return "=" Case CeComparisonOperator. case CeComparisonOperator.Para crear el método de ayuda GetSelectedCompareOperator() 1.GreaterThan return ">" Case CeComparisonOperator. En la parte inferior de la clase.EqualTo: return "=".GreaterThan_or_EqualTo return ">=" Case CeComparisonOperator. case CeComparisonOperator.LessThan: return "<". El informe de Crystal muestra dos registros de clientes: Alley Cat Cycles y Ankara Bicycle Company. El signo seleccionado se devuelve como cadena al llamar al método de ayuda GetSelectedCompareOperator(). Ha creado una fórmula de selección que depende de los valores especificados para el campo Ventas del año pasado y el campo Nombre del cliente. 4. En DropDownList. 1) " & mySelectedOperator & " """ & customerName. [Visual Basic] Dim mySelectFormula As String = "{Customer. c. 3. En el menú Depurar.Text _ & " AND Mid({Customer. se utiliza actualmente un signo "mayor que" (">") para la selección del campo Nombre del cliente. aprenderá a cambiar el signo al operador de comparación seleccionado desde el control DropDownList. reemplace el signo "mayor que" (">") por la cadena del operador seleccionado.Last Year's Sales} > " + lastYearsSales.Customer Name}. Para probar la fórmula de selección del informe CustomersBySalesName 1. En el menú Crear.Text & """" [C#] string selectFormula = "{Customer. seleccione "LessThan". escriba "40000". haga clic en Iniciar.Text + "\"". A continuación. continúe y corríjalos ahora.Last Year's Sales} > " & lastYearsSales. En el control TextBox de customerName. En la parte superior del método de evento redisplay_Click().Text + " AND Mid({Customer. escriba "Athens Bicycle Co. 2.En el método de evento redisplay_Click(). Ahora puede generar y probar la fórmula de selección. b. d. 2. haga clic en Generar solución. Si existen errores de generación.". llame al método de ayuda GetSelectedCompareOperator() y asigne el resultado a una variable de cadena. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración. a.Customer Name}. [Visual Basic] Dim mySelectedOperator As String = GetSelectedCompareOperator() [C#] string selectedOperator = GetSelectedCompareOperator(). Para modificar el operador de comparación de Nombre del cliente asignado a la propiedad SelectionFormula 1. . En el control TextBox de lastYearsSales. 1) " + selectedOperator + " \"" + customerName. Haga clic en Volver a mostrar el informe. Para la variable de cadena de la fórmula de selección. Asimismo. Ha aprendido a leer los valores de los controles TextBox y DropDownList para modificar la fórmula de selección. aprenderá a personalizar la presentación del informe. Conclusión Ha creado correctamente una fórmula de selección para modificar los registros mostrados en el informe de Crystal. aprenderá a seleccionar un número de página o un factor de zoom específicos y a buscar texto en el informe. . Tutorial: Personalizar el control CrystalReportViewer En este tutorial.Continúe con Conclusión. También ha aprendido a crear una enumeración de operadores de comparación que le permite seleccionar la forma en la que desea filtrar los datos. zoom. tiene acceso a propiedades del control CrystalReportViewer que no están disponibles en los proyectos para Windows: una propiedad para elegir el modo de impresión y otras propiedades para cambiar el ancho. En los sitios Web. Crear una tabla de configuración personalizada . agregará un segundo control ListBox para almacenar los elementos del informe. va a aprender a seleccionar un modo de impresión y a personalizar un borde. Necesita un control ListBox que almacene las propiedades disponibles para la barra de herramientas. también puede elegir mostrar todas las páginas del informe como una sola página o como páginas separadas. Continúe con Crear una tabla de configuración personalizada. Para comenzar. A continuación. Necesita. los controles TextBox y Button para modificar el factor de zoom y para buscar texto en el informe. búsqueda e impresión. Después. aprenderá a utilizar los métodos de selección de página. Necesita un control TextBox para especificar el número de página y un control Button para volver a cargar el informe en la página seleccionada. Sólo las propiedades seleccionadas desde este control se muestran en la barra de herramientas de CrystalReportViewer. aprenderá a personalizar el aspecto del control CrystalReportViewer mediante el uso de las propiedades desde su clase subyacente.En un sitio Web. va a aprender a personalizar la barra de herramientas de CrystalReportViewer. Aprenderá a personalizar el color de fondo mediante un control DropDownList. Asimismo. En los sitios Web. también. estilo y color de los bordes. Haga clic en el vínculo adecuado para pasar a esa sección: • • • • • • • • • • • • • • • Introducción Crear una tabla de configuración 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 código para seleccionar una página del informe Modificar el factor de Zoom Buscar en un informe Agregar un borde al informe de un sitio Web Configurar la conservación de Session de un sitio Web Modificar los gráficos y las hojas de estilo en cascada de un sitio Web Conclusión Información de código de ejemplo Introducción En este tutorial. aprenderá a seleccionar la página del informe que desee ver. Nota El botón de radio Personalizado ya está seleccionado de forma predeterminada.. .En esta sección. En el menú Diseño. 7. 13. 12. 10. 11. Right". 2. Abra la página Default. 1. y aumente la cuenta a 1. a continuación. Por lo tanto. La Configuración de proyectos contiene referencias específicas a espacios de nombres y configuración de códigos necesarios para este procedimiento. a continuación. En la ventana Propiedades. En el panel Diseño. 3. Active la casilla de verificación Sin ajuste de línea y. seleccione el botón de radio Personalizado. primero debe seguir los pasos de Configuración de proyectos. establezca Anchor en "Top. Ahora ya estará preparado para agregar controles personalizados a esta tabla para el sitio Web. Continúe con Elementos de barra de herramientas y de informe del control CrystalReportViewer Para crear una tabla de configuración personalizada para un proyecto para Windows Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración de proyectos. y éste no se podrá completar sin dicha configuración.aspx (el formulario Web Forms) en la vista Diseño. Haga clic en la barra de título Formulario para seleccionar todo el formulario y. En el cuadro de diálogo Propiedades de celda. 9. antes de que empiece con este procedimiento. antes de que empiece con este procedimiento. 2. Por lo tanto. establezca el cuadro combinado Alineación vertical a Superior. primero debe seguir los pasos de Configuración de proyectos. 4. La Configuración de proyectos contiene referencias específicas a espacios de nombres y configuración de códigos necesarios para este procedimiento. Haga clic en el control CrystalReportViewer para seleccionarlo. En el panel Atributos. En el cuadro de diálogo Insertar tabla. 8. Para crear una tabla de configuración personalizada para un sitio Web Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración de proyectos.. Abra el formulario Windows Forms en la vista Diseño. active la casilla de verificación Borde. 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. 6. Aumente la cuenta de Filas a 6 y la de Columnas a 4. Haga clic en Aceptar de nuevo para cerrar el cuadro de diálogo Insertar tabla. active la casilla de verificación Ancho y deje el valor en un 100%. 5. en el panel Diseño. haga clic en Insertar tabla. establezca Dock en "Bottom". haga clic en Aceptar. Haga clic en el control CrystalReportViewer para seleccionarlo. 5. 4. Bottom. y éste no se podrá completar sin dicha configuración. Left. 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 configuración personalizada. 1. Presione la flecha arriba para mover el cursor a la línea vacía situada encima del control CrystalReportViewer. En la ventana Propiedades. Presione la flecha izquierda para mover el cursor a la izquierda del control CrystalReportViewer y presione Intro. arrastre la esquina inferior derecha del formulario para ampliarlo de modo que llene el área principal. 3. Haga clic en el botón Propiedades de celda. Para cada columna. 14. Establezca el valor de la primera fila al 40%. Aparecerá un control TableLayoutPanel. 12. c. 17. seleccione Columnas. y para las filas subsiguientes establezca el valor al 15%. 9. Elementos de visor Los elementos predeterminados del control CrystalReportViewer varían ligeramente para los sitios Web y para los proyectos para Windows: • Tanto para sitios Web como para proyectos para Windows: . En el panel Tipo de tamaño seleccione Porcentaje. Para cada fila. En el cuadro combinado Tipo de miembro. Haga clic en Agregar hasta que tenga un total de cinco filas. en el cuadro combinado Tipo de miembro. realice lo siguiente: a. b. b. 8. Ahora ya estará preparado para agregar controles personalizados a esta tabla para el proyecto para Windows. 11. 16. En el cuadro de diálogo Estilos de columna y fila. 13. En el panel Tipo de tamaño seleccione Porcentaje. En Cuadro de herramientas. Seleccione la fila. haga clic en el botón triangular de la esquina superior derecha del control TableLayoutPanel. Seleccione la columna. Cierre la etiqueta TableLayoutPanel Tasks. Nota (1 x 40%) y (4 x 15%) = 100% de espacio disponible. mostrando dos columnas y dos filas. porque hay menos opciones configurables en un control CrystalReportViewer de un proyecto para Windows. Si el panel Tarea inteligente no está abierto. Continúe 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. haga clic en el vínculo Editar filas y columnas. c. Haga clic en Agregar hasta que tenga un total de cuatro columnas. realice lo siguiente: a. Establezca cada valor al 25%. Haga clic en Aceptar. 7. arrastre un control TableLayoutPanel hasta la parte superior izquierda del formulario Windows Forms. Nota La tabla de un proyecto para Windows requiere una fila menos que la tabla de un sitio Web. 15. 10.6. Arrastre la esquina inferior derecha del control TableLayoutPanel para agrandar la tabla hasta que llene el espacio creado encima del control CrystalReportViewer. seleccione Columnas. En la etiqueta TableLayoutPanel Tasks. Se abrirá el panel Tarea inteligente denominado "TableLayoutPanel Tasks". • Imprimir: imprime el informe de Crystal en un archivo PDF o llama al cuadro de diálogo Imprimir. creará dos enumeraciones que muestran una lista de los elementos del informe y de la barra de herramientas. Sólo para sitios Web: • Lista de vista (sólo para sitios Web): elige la vista que se va a mostrar del informe. • Elementos de la barra de herramientas Los elementos predeterminados de la barra de herramientas varían ligeramente para los sitios Web y para los proyectos para Windows: • • • Tanto para sitios Web como para proyectos para Windows: • Botón Árbol de grupo: muestra u oculta la sección del árbol de grupo del informe. anterior. • Sintetizar: abre una página con información más específica que el tema actual. • Logotipo de Crystal: muestra el logotipo de producto de Crystal Reports. subinformes. etc. PDF. como los archivos RPT. y llenará cada control ListBox con los valores de una de las enumeraciones. • Ir a página: le permite escribir el número de página que desee ver. • Buscar: le permite escribir en una cadena que desee buscar en el informe. última o primera para verla. • Habilitar páginas separadas: determina si el informe se muestra en una única página Web o como páginas formateadas independientes. DOC. Los elementos individuales dentro de la barra de herramientas se controlan por separado. • Factor de zoom: le permite seleccionar el factor de zoom del informe. . Nota Para obtener más información. vea la sección siguiente relativa a los elementos de barra de herramientas. (por ejemplo.• Barra de herramientas: muestra una barra de herramientas encima del área principal del informe. XLS o RTF. Continúe 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 sección 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. • Exploración de páginas: le permite seleccionar la página siguiente. Sólo para sitios Web: • Página principal: muestra el informe en el área principal de la página. Sólo para proyectos para Windows: • Actualizar: vuelve a mostrar el informe.). en la parte inferior del área del informe. que aparece en el panel de la columna izquierda de éste. Sólo para proyectos para Windows: • Barra de estado: muestra el número de página actual y otra información sobre el informe. de forma parecida al árbol de grupo de un informe. • Cerrar vista actual: cierra la vista actual del informe si están abiertas varias vistas. • • Árbol de grupo: muestra los encabezados de cada grupo del informe. A continuación. • Exportar: guarda el informe de Crystal en otro formato de archivo. Para agregar los controles ListBox y Button 1. • Establezca Text como "Volver a mostrar el informe". 6. arrastre un control Label a la primera fila y la columna uno de la tabla. En el Cuadro de herramientas. En el Cuadro de herramientas. Los pasos siguientes varían. En un proyecto para Windows. arrastre un segundo control Label a la primera fila y la columna tres de la tabla. a continuación. ajuste el tamaño del control Button para mostrar el texto completo del botón. Si se selecciona un elemento de ListBox. 7. arrastre un control Button a la tercera fila y la columna uno de la tabla. a continuación. En el Cuadro de herramientas. la propiedad de la barra de herramientas se establece en True. En tiempo de ejecución. Seleccione el control ListBox y. El controlador de eventos define varios valores booleanos para las . 5. Seleccione el control Label y. vea Configurar los controles ListBox de un sitio Web. "MultiExtended"). 8. en la ventana Propiedades. 3. 10. en la ventana Propiedades. 4. establezca la propiedad Text en "Seleccionar elementos de informe para mostrar". Abra el formulario Web Forms o Windows Forms en la vista Diseño. 11. Más tarde en este tutorial. siga estos pasos: • Establezca el ID a "listCRVReport. Haga clic en el control Button para seleccionarlo. se utilizará el control Button para actualizar selecciones adicionales.Después. 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 sección explica cómo configurar los controles ListBox de un proyecto para Windows. En la ventana Propiedades: • Establezca ID en "redisplay". arrastre un control ListBox a la primera fila y la columna dos de la tabla. Ahora puede crear el controlador de eventos de clic para el control Button y. a continuación. a continuación. establezca la propiedad Text en "Seleccionar elementos de barra de herramientas para mostrar". codificará el evento de clic del control Button para actualizar los elementos de la barra de herramientas." • Establezca SelectionMode en "Multiple" (en un proyecto de Windows. 2. En el Cuadro de herramientas. Empezará agregando los controles a la tabla en la parte superior del formulario Web Forms o Windows Forms. puede seleccionar qué elementos del informe y de la barra de herramientas desea mostrar. 9. Si va a crear un sitio Web. desde la ventana Propiedades. Dentro del controlador de eventos las propiedades de la clase CrystalReportViewer se establecen basándose en los dos controles ListBox. Seleccione el control Label y. agregar código a este controlador de eventos. dependiendo de si se crea un sitio Web o un proyecto para Windows. puede que se le pida que coloque esta clase en un directorio App_Code. a continuación. especifique los valores: [Visual Basic] Toolbar Group_Tree Status_Bar [C#] Toolbar. Status_Bar 6. haga clic en Clase.propiedades de barra de herramientas de la clase CrystalReportViewer basándose en las selecciones del usuario en el control ListBox. Para crear la enumeración CeWinCRVReportOptions 1. haga clic en Clase. . en el campo Nombre. 3. escriba "CeWinCRVToolbarOptions" y. En el menú Archivo. Estas enumeraciones proporcionan una lista de elementos de informe y de barra de herramientas seleccionables. a continuación. haga clic con el botón derecho en el nombre de proyecto en negrita. En Explorador de soluciones. haga clic en Agregar. elimine el método constructor predeterminado que se proporciona en la versión de C# del código. Nota En Visual Studio 2005. En la firma de clase. 2. Para crear la enumeración CeWinCRVToolbarOptions 1. escriba "CeWinCRVReportOptions" y. recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeración. cambie la palabra clase por "enum" para convertir la clase en una enumeración. En Explorador de soluciones. 2. elija Agregar y. a continuación. 5. 3. Puesto que las enumeraciones no tienen constructores. En el cuadro de diálogo Agregar nuevo elemento. Haga clic en el botón Sí. Haga clic en el botón Sí. en el campo Nombre. Group_Tree. En la firma de clase. deberá crear dos enumeraciones: CeWinCRVReportOptions y CeWinCRVToolbarOptions. En el cuadro de diálogo Agregar nuevo elemento. haga clic en Guardar todo. 4. Nota En Visual Basic. puede que se le pida que coloque esta clase en un directorio App_Code. Nota En Visual Studio 2005. elija Agregar y. En la enumeración. haga clic en Agregar. Antes de crear este controlador de eventos. haga clic con el botón derecho en el nombre de proyecto en negrita. cambie la palabra clase por "enum" para convertir la clase en una enumeración. a continuación. 3.GetValues(typeof(CeWinCRVReportOptions)).Enum. Para completar este tutorial correctamente. 5.DataSource = System. Ahora llene los controles ListBox con los valores de la enumeración. elimine el método constructor predeterminado que se proporciona en la versión de C# del código. Go_to_Page_Button. 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. En el menú Archivo. Print_Button. 4. Para llenar los controles ListBox a partir de las enumeraciones 1. En el método ConfigureCrystalReports(). En el menú Ver. Nota El método ConfigureCrystalReports() lo creó durante Configuración de proyectos al comienzo de este tutorial. Search_Button 6. establezca el valor de la propiedad DataSource del control ListBox de listCRVReport en los valores de la enumeración CeWinCRVReportOptions.Nota En Visual Basic.DataSource = System. haga clic en Guardar todo. deberá empezar realizando Configuración de proyectos. que representan las propiedades disponibles para la barra de herramientas de CrystalReportViewer. 2. En la enumeración. [Visual Basic] listCRVReport. Export_Button. . Puesto que las enumeraciones no tienen constructores.GetValues(GetType(CeWinCRVReportOptions)) [C#] listCRVReport. haga clic en Código. Refresh_Button. recuerde cambiar las firmas tanto de apertura como de cierre de la clase a enumeración. Group_Tree_Button. Zoom_Button.Enum. Close_View_Button. Abra el formulario Windows Forms. 5.GetSelected(CeWinCRVToolbarOptions. Si se selecciona un elemento.Page_Navigation_Button) myCrystalReportViewer.rpt a la propiedad ReportSource del control CrystalReportViewer. 2. [Visual Basic] myCrystalReportViewer. el valor booleano establece en True.DataSource = System. Para obtener información sobre informes de muestra.ShowGotoPageButton = listCRVToolbar. [Visual Basic] listCRVToolbar. Abra el formulario Windows Forms. vea Directorio de informes de muestra. el valor booleano se establece en False y no se muestra el elemento de barra de herramientas o de informe.ShowPageNavigateButtons = listCRVToolbar. En el método de evento redisplay_Click().4. Haga doble clic en el control Button que vuelve a mostrar el informe. Nota Los elementos de barra de herramientas y de informe de CrystalReportViewer se establecen a sus valores correspondientes en las enumeraciones CeWinCRVReportOptions y CeWinCRVToolbarOptions. El método GetSelected() devuelve un valor booleano para establecer las propiedades de barra de herramientas o de informe de CrystalReportViewer.rpt" [C#] crystalReportViewer.GetSelected(CeWinCRVToolbarOptions. En el menú Ver.Enum.Go_to_Page_Button) .ReportSource = "C:\Program Files\Microsoft Visual Studio 8\Crystal Reports\Samples\es\Reports\Feature Examples\Chart.Enum. 4. Enlace el archivo Chart. Si no se selecciona ninguna propiedad. Establezca el valor de la propiedad DataSource del control ListBox de listCRVToolbar en los valores de la enumeración CeWinCRVToolbarOptions. Ahora puede agregar código al evento de clic del control Button. llame al método GetSelected() y pase todos los elementos desde ListBox.ReportSource = "C:\\Program Files\\Microsoft Visual Studio 8\\Crystal Reports\\Samples\\es\\Reports\\Feature Examples\\Chart. Para codificar el control Button que vuelve a mostrar el informe de un proyecto de Windows 1. 3. y se muestra el elemento de barra de herramientas o de informe.GetValues(GetType(CeWinCRVToolbarOptions)) [C#] listCRVToolbar. [Visual Basic] myCrystalReportViewer. El método de clic debe establecer los valores booleanos de los elementos de barra de herramientas y de informe de la clase CrystalReportViewer. haga clic en Diseñador.GetValues(typeof(CeWinCRVToolbarOptions)).rpt". Aparece la clase de código subyacente del informe y muestra que se ha generado automáticamente un método de evento redisplay_Click().DataSource = System. crystalReportViewer.ShowPrintButton = listCRVToolbar.ToInt32(CeWinCRVReportOptions. crystalReportViewer.GetSelected(CeWinCRVReportOptions.GetSelected(Convert.Group_Tree)).DisplayGroupTree = listCRVReport.ShowZoomButton = listCRVToolbar.Toolbar)). crystalReportViewer.ShowCloseButton = listCRVToolbar.ShowExportButton = listCRVToolbar.ShowExportButton = listCRVToolbar.GetSelected(CeWinCRVReportOptions.ToInt32(CeWinCRVToolbarOptions.ShowPrintButton = listCRVToolbar.GetSelected(Convert. crystalReportViewer. crystalReportViewer.GetSelected(CeWinCRVToolbarOptions.Zoom_Button )).ShowGroupTreeButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Close_View_Button) myCrystalReportViewer.ToInt32(CeWinCRVToolbarOptions.Export_Butt on)).Search_Button) myCrystalReportViewer. crystalReportViewer.Print_Butto n)).myCrystalReportViewer.ToInt32(CeWinCRVToolbarOptions. . GetSelected(CeWinCRVToolbarOptions.ToInt32(CeWinCRVReportOptions.Close_View_Button)).DisplayToolbar = listCRVReport.Status_Bar)).Toolbar) myCrystalReportViewer.GetSelected(Convert.Zoom_Button) myCrystalReportViewer. crystalReportViewer.Group_Tree) myCrystalReportViewer.GetSelected(CeWinCRVReportOptions.GetSelected(Convert.GetSelected(Convert.GetSelected(CeWinCRVToolbarOptions.Page_Naviga tion_Button)).Go_to_Page_ Button)). Ya está preparado para generar y ejecutar el proyecto con el fin de personalizar la barra de herramientas de CrystalReportViewer.Export_Button) myCrystalReportViewer.Status_Bar) [C#] crystalReportViewer.ShowGroupTreeButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions. crystalReportViewer. GetSelected(Convert.Group_Tree_Button) myCrystalReportViewer.DisplayStatusBar = listCRVReport.DisplayGroupTree = listCRVReport.Print_Button) myCrystalReportViewer.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.ShowZoomButton = listCRVToolbar.DisplayStatusBar = listCRVReport.ShowTextSearchButton = listCRVToolbar.ToInt32(CeWinCRVToolbarOptions.ShowCloseButton = listCRVToolbar. crystalReportViewer.DisplayToolbar = listCRVReport.ShowGotoPageButton = listCRVToolbar.ShowRefreshButton = listCRVToolbar.Group_Tree_ Button)).Refresh_Button) myCrystalReportViewer.ToInt32(CeWinCRVToolbarOptions.GetSelected(Convert.GetSelected(CeWinCRVToolbarOptions.GetSelected(CeWinCRVToolbarOptions.GetSelected(Convert. crystalReportViewer.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Refresh_But ton)).ShowPageNavigateButtons = listCRVToolbar.ShowTextSearchButton = listCRVToolbar. crystalReportViewer.ToInt32(CeWinCRVReportOptions.GetSelected(CeWinCRVToolbarOptions.ToInt32(CeWinCRVToolbarOptions.GetSelected(Convert.Search_Butt on)).ShowRefreshButton = listCRVToolbar. Modificar el color de fondo del informe En esta sección. Continúe con Modificar el color de fondo del informe. Los controles ListBox de listCRVReport y listCRVToolbar muestran una lista completa de opciones de barra de herramientas y de informe de CrystalReportViewer. Abra el formulario Web Forms o Windows Forms. En el Cuadro de herramientas. Ahora. 4. Para establecer los valores predeterminados de los controles 1. Para empezar. haga clic en Código. 2. Para agregar controles para cambiar el color de fondo 1. 2. establezca el valor de ID/Nombre en "selectBackColor". . haga clic en Iniciar. En el control ListBox de opciones de informe. En el menú Crear. un árbol de grupos y una página principal visibles. establezca la propiedad Text en "Seleccionar color de fondo". sólo están visibles los botones Exploración de páginas. Haga clic en Volver a mostrar el informe. En Cuadro de herramientas. en el método ConfigureCrystalReports(). continúe y corríjalos ahora. seleccione "Page_Navigation_Button". 7. "Print_Button" y "Export_Button". arrastre un control Label a la segunda fila y a la columna uno de la tabla. en la ventana Propiedades. 6. "Group_Tree" y "Main_Page". En el menú Ver. Seleccione el control Label y. Imprimir y Exportar. debe agregar código al método ConfigureCrystalReports() para establecer los valores predeterminados de la lista de colores de fondo y de las casillas de verificación de los componentes del informe. haga clic en Generar solución. Seleccione el control DropDownList/ComboBox y. La página se vuelve a cargar para mostrar un control CrystalReportViewer con una barra de herramientas. agregará un control DropDownList para la selección del color de fondo. 6. a continuación. aprenderá a modificar el color de fondo del informe. 4. 5. Dentro de la barra de herramientas. Abra el formulario Web Forms o Windows Forms. Si existen errores de generación. 3. En el control ListBox de opciones de barra de herramientas. a continuación. en la ventana Propiedades. 2. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración. haga clic en Diseñador. 3.Para probar el control Button que vuelve a mostrar el informe 1. 5. En el menú Ver. seleccione "Toolbar". 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. En el menú Depurar. agregue código para establecer los valores predeterminados del control. A continuación. coloque estas líneas de código dentro del bloque condicional 3. Para asignar la selección del color de fondo en un sitio Web 1. A continuación. [Visual Basic] selectBackColor. Asigne el valor de Color a la propiedad BackColor del control CrystalReportViewer. Sobre la firma de clase. 3. haga clic en Código. Seleccione el procedimiento apropiado a continuación para el sitio Web o el proyecto para Windows. recupere el elemento seleccionado como cadena y páselo al método FromName() de la clase Color.Enum.Drawing.GetValues(GetType(KnownColor)) [C#] selectBackColor. agregue código al evento de clic Button para volver a mostrar el informe basándose en las selecciones de selectBackColor y DropDownList.GetValues(typeof(KnownColor)).DataSource = System.DataBind() [C#] selectBackColor. 4. Si está creando un proyecto Windows. En un sitio Web. 2. coloque estas líneas de código en el área principal del método ConfigureCrystalReports().DataBind(). enlace el origen de datos al control DropDownList de selectBackColor. agregue una declaración "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase del espacio de nombres System.Enum.Drawing [C#] using System.Nota Not IsPostBack.DataSource = System. agregue el siguiente código: En el control DropDownList de selectBackColor. En el controlador de eventos redisplay_Click(). [Visual Basic] selectBackColor.Drawing (si todavía no lo ha declarado). Este código varía según se trate de un sitio Web o de un proyecto para Windows. Abra el formulario Web Forms. [Visual Basic] Imports System. [Visual Basic] . Asigne la enumeración KnownColor a la propiedad DataSource del control DropDownList de selectBackColor. Si está creando un sitio Web. En el menú Ver. 4. SelectedItem. [Visual Basic] If Not mySelectedKnownColor = KnownColor.Text).myCrystalReportViewer.Transparent) { } . En el controlador de eventos redisplay_Click(). haga clic en Código.FromName(selectBackColor. recupere el elemento seleccionado y conviértalo en una instancia de KnownColor. a continuación. En el menú Ver.SelectedItem. Abra el formulario Windows Forms.BackColor = Color. Ahora ya podrá probar el botón Volver a mostrar el informe. 3. [Visual Basic] Imports System. 5.SelectedItem.BackColor = Color.Transparent Then End If [C#] if (selectedKnownColor != KnownColor. [Visual Basic] Dim mySelectedKnownColor As KnownColor = CType(selectBackColor.Drawing (si todavía no lo ha declarado).FromName(selectBackColor. Cree un bloque condicional que compruebe que el color de fondo seleccionado no es transparente. 4. Para asignar la selección del color de fondo en un proyecto para Windows 1. Pase a dicha sección. 2.Drawing [C#] using System.Drawing.Text) [C#] crystalReportViewer. agregue el siguiente código: Desde el control ComboBox de selectBackColor.SelectedItem. Sobre la firma de clase. KnownColor) [C#] KnownColor selectedKnownColor = (KnownColor)selectBackColor. agregue una declaración "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase del espacio de nombres System. Drawing. pase la instancia de KnownColor al método FromKnownName() de la clase System.FromKnownColor(selectedKnownColor). haga clic en Iniciar.BackColor = System. 3. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración. En el control DropDownList de selectBackColor. aprenderá a codificar la opción "Ir a página" de la barra de herramientas de CrystalReportViewer. Nota Recuerde seleccionar los elementos de informe. . junto con los controles ListBox y Button agregados en el procedimiento anterior.Color. continúe y corríjalos ahora. 2. Esta barra de herramientas contiene botones de exploración de páginas y un cuadro de texto para seleccionar las páginas del informe. especialmente Main_Page. para que esté visible 5. Ahora ya podrá probar el botón Volver a mostrar el informe. Haga clic en Volver a mostrar el informe. Puede utilizar los siguientes métodos de la clase CrystalReportViewer con el fin de escribir código manualmente para las selecciones de página: • • • • • ShowFirstPage() ShowLastPage() ShowNextPage() ShowNthPage(int PageNumber) ShowPreviousPage() Cuando se llama a uno de estos métodos. [Visual Basic] myCrystalReportViewer. Continúe con Agregar código para seleccionar una página del informe. 6.Color.Drawing. Se muestran los controles DropDownList y ComboBox. La página se vuelve a cargar para mostrar el informe sobre un fondo azul.Drawing. Dentro del bloque If. se muestra la página seleccionada para el informe actual.FromKnownColor(mySelectedKnownColor) [C#] crystalReportViewer. haga clic en Generar solución.6. En el menú Crear. Asigne el valor de Color a la propiedad BackColor del control CrystalReportViewer. Agregar código para seleccionar una página del informe En esta sección. 4. seleccione "Blue". Para probar el control Button que vuelve a mostrar el informe 1.BackColor = System. En el menú Depurar. Si existen errores de generación.Color. Aparece la clase de código subyacente del informe y muestra que se ha generado automáticamente un controlador de eventos goToPage_Click(). Convierta el texto escrito en el control TextBox en un número entero y. En el menú Depurar.Para agregar los controles TextBox y Button de la opción "Ir a página" 1. Para una aplicación de producción. 4. En el Cuadro de herramientas. arrastre un control Button a la cuarta fila y la columna dos de la tabla. continúe y corríjalos ahora. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración.Text)). a continuación. . 3. Se muestran el informe Chart y todos los controles agregados. a continuación.ToInt32(pageNumber.ShowNthPage(Convert. desde la ventana Propiedades. arrastre un control TextBox a la cuarta fila y a la columna uno de la tabla. desde la ventana Propiedades. 2. Nota No ha validado que se especificó un número entero en el control TextBox. En el Cuadro de herramientas. Para codificar el controlador de eventos Click() del control Button 1. pase el valor al método ShowNthPage() del control CrystalReportViewer. siga estos pasos: • Establezca el valor de ID (o Nombre) en "pageNumber". a continuación. 3.ToInt32(pageNumber. [Visual Basic] myCrystalReportViewer. seleccione Generar solución. 2. Haga doble clic en el control Button de Ir a página. 4. Abra el formulario Web Forms o Windows Forms en la vista Diseño. haga clic en Ir a página. En el menú Crear. • Establezca el valor de la propiedad Text para que esté vacía. a continuación. • Establezca el valor de Text en "Ir a página".Text)) [C#] crystalReportViewer.ShowNthPage(Convert. Continúe con Modificar el factor de zoom. Especifique "3" en el control TextBox de pageNumber y. Seleccione el control Button y. Seleccione el control TextBox y. 2. Para probar el control del botón goToPage 1. debería agregar un control de validación configurado respecto al control TextBox. Si existen errores de generación. siga estos pasos: • Establezca el valor de ID (o Nombre) en "goToPage". Se vuelve a cargar la página para mostrar la página 3 del informe. haga clic en Iniciar. 5. 5. Abra el formulario Web Forms o Windows Forms en la vista Diseño. 2. [Visual Basic] myCrystalReportViewer. Para una aplicación de producción. Seleccione el control Button y. 2. va a agregar código para permitir cualquier factor de zoom que desee. arrastre un control Button a la cuarta fila y la columna cuatro de la tabla. En el Cuadro de herramientas. 5. En el menú Crear. a continuación. Se muestran el informe Chart y todos los controles agregados. • Establezca el valor de la propiedad Text para que esté vacía. haga clic en Iniciar. Nota No ha validado que se especificó un número entero en el control TextBox.Text)) [C#] crystalReportViewer. desde la ventana Propiedades. 50% o 100%. En el Cuadro de herramientas. haga clic en Generar solución. Si existen errores de generación. En el menú Depurar.Zoom(Convert. Para codificar el controlador de eventos Click() del control Button 1.Text)). Para agregar los controles TextBox y Button para la opción Zoom 1. 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%. Para probar el control updateZoomFactor 1.ToInt32(zoomFactor.Zoom(Convert. Aparece la clase de código subyacente del informe y muestra que se ha generado automáticamente un controlador de eventos updateZoomFactor_Click(). En esta sección.ToInt32(zoomFactor. a continuación. Necesita un control TextBox en el que escribir el factor de zoom deseado y un control Button para volver a cargar la página.Modificar el factor de zoom De forma predeterminada. Convierta el texto escrito en el control TextBox en un número entero y. 4. siga estos pasos: • Establezca el valor de ID (o Nombre) en "updateZoomFactor". • Establezca el valor de Text en "% de zoom". a continuación. siga estos pasos: • Establezca el valor de ID (o Nombre) en "zoomFactor". 3. debería agregar un control de validación configurado respecto al control TextBox. 2. pase el valor al método Zoom() del control CrystalReportViewer. Haga doble clic en el control Button de updateZoomFactor. . desde la ventana Propiedades. continúe y corríjalos ahora. 3. Seleccione el control TextBox y. arrastre un control TextBox a la cuarta fila y a la columna tres de la tabla. aprenderá a buscar texto en un informe de Crystal que enlace con el control CrystalReportViewer. Como el método no tiene el mismo comportamiento si se trata de un sitio Web o un proyecto para Windows. Se vuelve a cargar la página para mostrar la página actual al 38% de su tamaño original. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración. . Button y Label para la opción Search 1. • Establezca el valor de Text en "Buscar texto". A su vez. Nota El método SearchForText() no tiene el mismo comportamiento si se trata de un sitio Web o un proyecto para Windows. Necesita un control TextBox para escribir la cadena de búsqueda deseada. • Establezca el valor de la propiedad Text para que esté vacía. a continuación. 5. mientras que. 6. En el Cuadro de herramientas. Cree la clase MessageConstants para almacenar respuestas estándar como constantes de cadena para la búsqueda. • Establezca el valor de ID (o Nombre) en "message". arrastre un control Button a la quinta fila y la columna dos de la tabla. a continuación. Nota Para obtener instrucciones sobre cómo crear esta clase.4. realice el siguiente procedimiento con pasos correspondiente a un sitio Web o un proyecto para Windows. Seleccione el control TextBox y. 7. Para agregar los controles TextBox. a continuación. arrastre un control TextBox a la quinta fila y a la columna uno de la tabla. Seleccione el control Button y. 4. Después. debe llamar al método SearchForText() en el control Button de búsqueda. En los sitios Web. • Establezca el valor de ForeColor en Red. el método SearchForText() devuelve True cuando se obtienen resultados. 2. Continúe con Buscar en el informe. en los sitios Web. la búsqueda encuentra sólo la primera aparición de la cadena. haga clic en Zoom. el método SearchForText() devuelve True cuando no se obtienen resultados. Especifique "38" en el control TextBox de zoomFactor y. En el Cuadro de herramientas. Buscar en el informe En esta sección. desde la ventana Propiedades. vea Agregar una clase para mensajes de error. En el Cuadro de herramientas. 5. desde la ventana Propiedades. • Establezca el valor de Text para que esté vacío. 3. siga estos pasos: • Establezca el valor de ID (o Nombre) en "searchText". arrastre un control Label a la quinta fila y a la columna tres de la tabla. En los proyectos de Windows. Abra el formulario Web Forms o Windows Forms en la vista Diseño. en los proyectos para Windows. un control Button para buscar en el informe y un control Label para notificar el éxito o el error de la búsqueda. siga estos pasos: • Establezca el valor de ID (o Nombre) en "search". la búsqueda continúa a partir del último resultado de la búsqueda. Para codificar el controlador de eventos search_Click() para un sitio Web 1. pase el valor al método SearchForText() del control CrystalReportViewer.SUCCESS.Text. Recupere el texto escrito en el control TextBox y. a continuación.SearchForText(searchText.Text = MessageConstants. 2.Forward) [C#] bool searchResult = crystalReportViewer. [Visual Basic] If Not mySearchResult Then Else End If [C#] if(!searchResult) { } else { } 4. 3.SUCCESS [C#] message. Nota Para que la clase SearchDirection sea accesible. Cree un bloque condicional que compruebe si la búsqueda tiene éxito.Shared. En el bloque If.SUCCESS a la propiedad Text del control Label del mensaje. (Esta declaración se ha agregado en Configuración de proyectos. SearchDirection. [Visual Basic] message.SearchForText(searchText. SearchDirection.Text. Asigne la llamada del método a una variable booleana. Haga doble clic en el control Button de search. asigne la constante MessageConstants.) [Visual Basic] Dim mySearchResult As Boolean = myCrystalReportViewer. . deberá incluir un enunciado "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de código subyacente del espacio de nombres CrystalDecisions. Aparece la clase de código subyacente del informe y muestra que se ha generado automáticamente un controlador de eventos search_Click().Forward).Text = MessageConstants. Text = MessageConstants.SUCCESS a la propiedad Text del control Label del mensaje. Haga doble clic en el control Button de search. pase el valor al método SearchForText() del control CrystalReportViewer. Cree un bloque condicional que compruebe si la búsqueda tiene éxito. Asigne la llamada del método a una variable booleana. asigne la constante MessageConstants. [Visual Basic] Dim mySearchResult As Boolean = myCrystalReportViewer. 3. 2.SearchForText(searchText. Sáltese el siguiente procedimiento de un proyecto para Windows y vaya al próximo procedimiento de prueba. Aparece la clase de código subyacente del informe y muestra que se ha generado automáticamente un controlador de eventos search_Click(). [Visual Basic] message.Text) [C#] bool searchResult = crystalReportViewer.SearchForText(searchText. Para codificar el controlador de eventos search_Click() para un proyecto para Windows 1.FAILURE [C#] message.Text). [Visual Basic] If mySearchResult Then Else End If [C#] if(searchResult) { } else { } 4. . a continuación. En el bloque If.FAILURE.Text = MessageConstants. Recupere el texto escrito en el control TextBox y.FAILURE a la propiedad Text del control Label del mensaje. asigne la constante MessageConstants. En el bloque Else.5. • • Por lo tanto. si está desarrollando un proyecto para Windows. Conclusión Ha agregado correctamente código para personalizar el informe que enlaza con el control CrystalReportViewer. En caso contrario. Se vuelve a cargar la página para resaltar el resultado de la búsqueda y para mostrar un mensaje de éxito. haga clic en Buscar. continúe con Agregar un borde al informe de un sitio Web.SUCCESS. si está desarrollando un sitio Web. haga clic en Buscar.Text = MessageConstants. Se vuelve a cargar la página para mostrar un mensaje de error. a continuación.FAILURE [C#] message. 2. . En el menú Depurar. En el bloque Else. 4. Especifique "China" en el control TextBox de searchText y. continúe con Conclusión. ha aprendido a seleccionar una página.Text = MessageConstants.Text = MessageConstants. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración. 6. En el menú Crear. Si existen errores de generación. Para probar el control Button de search 1.SUCCESS [C#] message. continúe y corríjalos ahora. Se muestran el informe Chart y todos los controles agregados.Text = MessageConstants. cambiar el factor de zoom. Las opciones de personalización restantes sólo están disponibles para la versión Web del control CrystalReportViewer. 5. Asimismo. a continuación. 5. haga clic en Iniciar. 3. haga clic en Generar solución. buscar texto.FAILURE. asigne la constante MessageConstants. Especifique "hola" en el control TextBox de searchText y.[Visual Basic] message.FAILURE a la propiedad Text del control Label del mensaje. [Visual Basic] message. elegir un modo de impresión y personalizar el borde.
Copyright © 2024 DOKUMEN.SITE Inc.