80
5/12/2018 TutorialesycdigodeejemploCrystalreports-slidepdf.com http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 1/80 Tutoriales y código de ejemplo Cristal Reports Esta 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 Nombre de la carpeta del código de ejemplo Conectar con una base de datos segura de SQL Server 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#:

Tutoriales y código de ejemplo Crystal reports

  • Upload
    olvin80

  • View
    1.203

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 1/80

Tutoriales y código de ejemplo Cristal Reports

Esta sección presenta una gran selección de tutoriales que permite trabajar con Crystal Reports paraVisual Studio 2005. Cada tutorial le guía paso a paso en todo el proceso de creación de proyectos queproporciona 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 trabajoen 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 delproyecto, escrita en C# y Visual Basic. La mayoría de estos proyectos se facilitan como sitios Web yproyectos para Windows, excepto los diseñados específicamente para utilizarse sólo en la Web o sólo enWindows.

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 lostutoriales. 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 proyectospara 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 archivode instalación TutorialsSampleCodeProjects.msi. Para ubicar el archivo de instalación, vea Directorio decódigo de ejemplo de los tutoriales.

Modelo de objetos CrystalReportViewer

Nombre del tutorial Nombre de la carpeta del código de ejemplo

Conectar con una base de datos segura de SQL

Server

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#:

Page 2: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 2/80

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 Archivo de código de ejemplo

Almacenar el modelo de objetos ReportDocument Sitio Web en C#: CS_Web_RDObjMod_Session

Page 3: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 3/80

utilizando SessionSitio Web en Visual Basic:

VB_Web_RDObjMod_Session

Conectar con una base de datos segura de SQL

Server utilizando Autenticación de SQL

Sitio Web en C#: CS_Web_RDObjMod_DBLogon

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

Page 4: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 4/80

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:

Page 5: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 5/80

VB_Web_RDObjMod_ReportParts

Tutoriales de código reducido en Visual Studio 2005

Nombre del tutorial Archivo de código de ejemplo

Configuración de sitios Web de código reducido con

Crystal Reports mediante tareas inteligentes

Sitio Web en C#:

CS_Web_ReducedCode_WebSiteSetup

Sitio Web en Visual Basic:

VB_Web_ReducedCode_WebSiteSetup

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 Nombre de la carpeta del código de ejemplo

Crear DataSets ADO.NET conectarse a ellos 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

Page 6: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 6/80

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 Nombre de la carpeta del código de ejemplo

Configurar la compatibilidad con clientes

multilingües

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

desde el directorio de archivos

Sitio Web en C#: CS_Web_DrpFileDir

Sitio Web en VB: VB_Web_DrpFileDir

 Tutorial: Rellenar una lista desplegable de informes

desde un servicio Web

Sitio Web en C#: CS_Web_WebService

Sitio Web en VB: VB_Web_WebService

Tutoriales del modelo de objeto CrystalReportViewer

Page 7: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 7/80

Los tutoriales de esta sección utilizan los métodos y las propiedades de la clase CrystalReportViewer ylas clases del espacio de nombres CrystalDecisions.Shared.

Nota Si desea hacer referencia al diagrama del modelo de objetos CrystalReportViewer al realizarestos tutoriales, vea Diagrama del modelo de objetos.

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, 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 deSQL Server, debe usar clases del espacio de nombres CrystalDecisions.Shared.

Las propiedades de la clase ConnectionInfo se utilizan para conectar con el servidor de base de datos uotros orígenes de datos ODBC. En este tutorial, establecerá las propiedades ServerName,DatabaseName, UserID y Password. Si decide establecer únicamente las propiedades DatabaseName,UserID y Password, se conectará con el servidor predeterminado de la base de datos especificada en elinforme. Sin embargo, si elige asignar una propiedad ServerName alternativa, podrá redirigir el informea un servidor diferente en tiempo de ejecución.

Obtendrá la instancia de TableLogOnInfos de la propiedad LogOnInfo del control CrystalReportViewer. A

continuación, asignará la instancia de ConnectionInfo a cada objeto TableLogOnInfo de la instancia de TableLogOnInfos.

El código de conexión de este tutorial también funciona para los subinformes insertados en el informeprincipal. Para el modelo de objetos ReportDocument, debe modificar el código con el fin de quefuncione para los subinformes (vea Conectar con una base de datos segura de SQL Server con unsubinforme).

Para realizar este tutorial mediante el modelo de objetos ReportDocument, vea Conectar con una basede datos segura de SQL Server mediante el modelo de objetos ReportDocument. El modelo de objetosReportDocument se recomienda con respecto al modelo de objetos CrystalReportViewer. Para obtenermás información sobre el modelo de objetos que se debe utilizar, vea ¿Cuál es el modelo de objetos quese debe utilizar?.

Continúe con Crear un informe conectado a una base de datos segura de SQL Server.

Page 8: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 8/80

Crear un informe conectado a una base de datos segura de SQLServer

Para comenzar, cree un informe que obtenga su información de la base de datos Northwind.

Nota Northwind es una base de datos de muestra que se proporciona con SQL Server.

Este tutorial requiere que se configuren algunos parámetros como requisito previo.

Requisitos previos de configuración de la base de datos 

1. Configuración de SQL Server:• Si tiene instalado SQL Server (o la versión OEM, MSDE), debe configurarse de modo que

requiera la Autenticación de SQL Server.• Si no tiene instalado SQL Server (ni la versión OEM, MSDE), debe instalar MSDE con la

autenticación de SQL Server establecida en "True".2. La base de datos Northwind incluida con SQL Server se debe instalar y verificar que requiere la

Autenticación de SQL Server.3. Se debe crear una cuenta de acceso limitado para utilizase dentro del sitio Web.

Para instalar MSDE con la autenticación de SQL Server, o la base de datos Northwind, vaya a lassiguientes 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, yapodrá crear un informe que obtenga su información de la base de datos Northwind de forma segura.

Para crear un informe con datos seguros de la base de datos Northwind

Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración deproyectos. La Configuración de proyectos contiene referencias específicas a espacios de nombres yconfiguración de códigos necesarios para este procedimiento, y éste no se podrá completar sin dichaconfiguración. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasosde Configuración de proyectos.

1. En Explorador de soluciones, haga clic con el botón derecho en el nombre de proyecto ennegrita, elija Agregar y, a continuación, haga clic en Agregar nuevo elemento.

2. En el cuadro de diálogo Agregar nuevo elemento, en la vista Plantillas, seleccione la plantillaCrystal Report.

3. En el campo Nombre, escriba "NorthwindCustomers.rpt" y, a continuación, haga clic en Abrir.

Nota Si aún no se ha registrado, se le puede pedir que se registre. Para saber cómo registrarse,vea Registro y código de clave de Crystal Reports.

4. En el panel Crear un nuevo documento de Crystal Report del cuadro de diálogo Galería deCrystal Report, seleccione Usar asistente de informes.

5. En el panel Elegir un Asistente, seleccione Estándar. Haga clic en Aceptar.

Aparecerá la ventana Asistente para la creación de informes estándar.

6. En el panel Orígenes de datos disponibles, expanda la carpeta Crear nueva conexión.7. En la subcarpeta que se abre, expanda la carpeta OLE DB (ADO).

Page 9: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 9/80

Aparecerá la ventana OLE DB (ADO).

8. Seleccione Proveedor de OLE DB Microsoft para SQL Server y, a continuación, haga clic enSiguiente.

9. Especifique los valores del servidor de base de datos, el id. de usuario y la contraseña en loscampos Servidor, Id. de usuario y Contraseña.

10. En la lista desplegable Base de datos, seleccione "Northwind".

Deje desactivada la casilla de verificación Seguridad integrada porque está usando laautenticación de SQL Server en lugar de la autenticación de NT.

11. Haga clic en Finalizar. 

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

12. Expanda los nodos Northwind, dbo y Tablas, y seleccione la tabla Clientes.

13. Haga clic en el símbolo > para mover la tabla al panel Tablas seleccionadas y, a continuación,haga clic en Siguiente.14. Expanda la tabla Clientes y, a continuación, mantenga presionada la tecla Ctrl mientras hace

clic en CompanyName, ContactName y City.15. Haga clic en el símbolo > para mover estos campos al panel Campos para mostrar y, a

continuación, haga clic en Siguiente.16. En el panel Campos disponibles, en Campos del informe, seleccione Clientes.Ciudad, haga

clic en el símbolo > para mover el campo al panel Agrupar por y, a continuación, haga clic enFinalizar.

Se creará el informe NorthwindCustomers y se cargará en la ventana principal de Visual Studio.

Ahora ya podrá enlazar el informe con el control CrystalReportViewer.

Continúe con Enlazar el informe sin código de conexión.

Enlazar el informe sin código de conexión

En Configuración de proyectos, ha colocado un control CrystalReportViewer en el formulario Web Formso Windows Forms. En el paso anterior, ha agregado un informe NorthwindCustomers al proyecto.

En esta sección enlazará la ruta de directorio de archivos del informe NorthwindCustomers al controlCrystalReportViewer. A continuación, probará si el informe se muestra correctamente cuando no se haestablecido el código de conexión.

Para enlazar la ruta de directorio de archivos del informe NorthwindCustomers al controlCrystalReportViewer 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código.

3. Busque el método ConfigureCrystalReports() , que ha creado en Configuración de proyectos.4. Declare una variable de cadena, llámela reportPath y asígnele una ruta en tiempo de ejecución al

informe local. Esta ruta se determina de forma diferente para los sitios Web y los proyectos paraWindows:

Page 10: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 10/80

• Para un sitio Web, pase el nombre del archivo de informe local como un parámetro decadena en el método Server.MapPath() . Esto asigna el informe local a la ruta deldirectorio de archivos de la unidad de disco duro en tiempo de ejecución.

[Visual Basic]

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

[C#]

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

• Para un proyecto para Windows, concatene la propiedad Application.StartupPathconuna barra invertida y el nombre del archivo de informe local. Esto asigna el informe almismo directorio del archivo ejecutable de Windows.

Nota En la fase de compilación se copiará el informe al directorio que contiene elarchivo ejecutable.

[Visual Basic]

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

[C#]

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

5. Asigne la ruta del directorio de archivos del informe NorthwindCustomers a la propiedad

ReportSource del control CrystalReportViewer.

[Visual Basic]

myCrystalReportViewer.ReportSource = reportPath

[C#]

crystalReportViewer.ReportSource = reportPath;

Ahora estará listo para crear y ejecutar el proyecto. Está previsto que falle la carga del informe, porqueaún no se ha escrito el código para conectarse con la base de datos.

Para probar la carga del informe NorthwindCustomers 

1. En el menú Crear, seleccione 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\debug\y, a continuación, copie el informe en dichosubdirectorio.

Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo deejecución, el informe deberá estar almacenado en el mismo directorio que el archivo ejecutablede Windows.

4. En el menú Depurar, haga clic en Iniciar.

Page 11: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 11/80

Nota Si está desarrollando un sitio Web en Visual Studio 2005 y es la primera vez que hainiciado la depuración, aparecerá un cuadro de diálogo en el que se indica que el archivoWeb.config se debe modificar. Haga clic en el botón Aceptar para habilitar la depuración.

No se mostrará el informe NorthwindCustomers. Se mostrará después de agregar el código deconexión con la base de datos.

Nota Los resultados pueden variar, según la versión de Crystal Reports que utilice. Por ejemplo,si tiene instalado Crystal Reports 10 o una versión superior, se le pedirá información de conexióna la base de datos para ese informe. Esta es una nueva función de Crystal Reports Developer yCrystal Reports para Visual Studio 2005. Si ejecuta una versión anterior de Crystal Reports, seproduce una excepción. En cualquier caso, debe seguir el siguiente procedimiento de pasos paracrear una aplicación totalmente funcional.

5. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Continúe con Agregar el código de conexión del informe.

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.Va a empezar por crear un método de ayuda privado, SetDBLogonForReport().

Para crear y codificar el método SetDBLogonForReport() 

1. Regrese a la clase de código subyacente de este Web Forms o Windows Forms.2. En la parte inferior de la clase, cree un nuevo método privado denominado

SetDBLogonForReport() con ConnectionInfo pasado en la firma de método.

[Visual Basic]

Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)

End Sub

[C#]

private void SetDBLogonForReport(ConnectionInfo connectionInfo){}

3. Con este método, se obtiene la instancia de TableLogOnInfos de la propiedad LogOnInfo de laclase CrystalReportViewer.

Nota Para que la clase TableLogOnInfos sea accesible, incluya una instrucción "Imports"[Visual Basic] o "using" [C#] en la parte superior de la clase de código lateral del espaciode nombres CrystalDecisions.Shared. (Esta declaración se ha agregado en Configuración deproyectos.)

 TableLogOnInfos es una clase indizada que contiene instancias de la clase TableLogOnInfo.

[Visual Basic]

Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer.LogOnInfo

Page 12: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 12/80

[C#]

TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;

4. Cree un bucle foreach que recorra cada instancia de TableLogOnInfo de la instancia de clase deíndice de TableLogOnInfos.

[Visual Basic]

For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos

Next

[C#]

foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos){}

5. En el bucle foreach, establezca la propiedad ConnectionInfo de TableLogOnInfo en el parámetroConnectionInfo.

[Visual Basic]

myTableLogOnInfo.ConnectionInfo = myConnectionInfo

[C#]

tableLogOnInfo.ConnectionInfo = connectionInfo;

El procedimiento de este paso ha creado un método para establecer la conexión de la base de datos. Sinembargo, debe modificar el método ConfigureCrystalReports() para direccionar este método, con elfin de que el informe sepa que tiene información sobre conexión de base de datos.

La modificación del método ConfigureCrystalReports() requiere dos acciones:

• Configurar la instancia de ConnectionInfo.• Llamar al método SetDBLogonForReport().

Para modificar el método ConfigureCrystalReports() para direccionar el código de conexióncon la base de datos 

1. En el método ConfigureCrystalReports(), agregue un par de saltos de línea en el códigosobre la línea que enlaza el informe al control CrystalReportViewer.

2. En los saltos de línea, declare y cree una instancia de la clase ConnectionInfo.

[Visual Basic]

Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()

[C#]

ConnectionInfo connectionInfo = new ConnectionInfo();

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

Page 13: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 13/80

Nota Por razones de seguridad, es importante utilizar una cuenta de base de datos conpermisos de acceso limitado. Para obtener más información, véase Seguridad: Crear una cuentade acceso limitado a la base de datos.

En el código que escriba, reemplace la contraseña de ejemplo 1234 (que se muestra más abajo)por su propia contraseña.

[Visual Basic]

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

[C#]

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

4. Debajo del código que enlaza el control CrystalReportViewer, llame al métodoSetDBLogonForReport()y pásele la instancia de ConnectionInfo.

[Visual Basic]

SetDBLogonForReport(myConnectionInfo)

[C#]

SetDBLogonForReport(connectionInfo);

Ahora estará listo para crear y ejecutar el proyecto. El informe se debe cargar correctamente, ya que haagregado código para conectar con la base de datos.

Para probar la carga del informe NorthwindCustomers 

1. En el menú Crear, seleccione 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.

El informe NorthwindCustomers se mostrará correctamente.

4.Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

En la siguiente sección, aprenderá a cambiar la ubicación de la base de datos en tiempo de ejecución.

Continúe con Agregar la posibilidad de cambiar la ubicación de la base de datos en tiempo de ejecución.

Agregar la posibilidad de cambiar la ubicación de la base de datos en tiempo deejecución

En esta sección, aprenderá a cambiar la ubicación de la base de datos en tiempo de ejecución. Sólorequiere una pequeña modificación de la instancia de ConnectionInfo.

Para cambiar la ubicación de la base de datos en tiempo de ejecución 

Page 14: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 14/80

1. En el método ConfigureCrystalReports(), cree un par de saltos de línea en el código detrásde la línea que declara y crea una instancia de la clase ConnectionInfo.

2. En los saltos de línea, establezca la propiedad ServerName de la instancia de ConnectionInfo.

Nota En el código que escriba, reemplace el nombre del servidor de ejemplo DevDatabase (queaparece más abajo) por el nombre de su servidor.

[Visual Basic]

myConnectionInfo.ServerName = "DevDatabase"

[C#]

connectionInfo.ServerName = "DevDatabase";

Ahora estará listo para crear y ejecutar el proyecto. El informe se debe redirigir al servidor de base dedatos alternativo en tiempo de ejecución.

Para probar si el informe se puede restablecer a un servidor de base de datos alternativo entiempo de ejecución 

1. En el menú Crear, seleccione 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.

El informe NorthwindCustomers se mostrará correctamente.

4. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Continúe con Conclusión.

Conclusión

Ha configurado correctamente el código para conectar con la base de datos de SQL Server y cambiar laubicación de la base de datos en tiempo de ejecución.

Cuando pueda agregar subinformes al informe principal (NorthwindCustomers.rpt), no necesita códigoadicional.

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ámetrodiscreto.

Haga clic en el vínculo adecuado para pasar a esa sección:

• Introducción• Crear un informe con parámetros

Page 15: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 15/80

• 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, a diferencia de un parámetro de rango, que hace referencia aun rango de valores. A los elementos de texto (como ciudades) se tiene acceso normalmente medianteparámetros discretos. A los elementos numéricos(como sueldos de empleados) se suele accedermediante parámetros de rango.

En este tutorial establecerá un valor de un parámetro discreto para ver un informe de clientes basado enun solo campo. El informe muestra únicamente los clientes que viven en las ciudades seleccionadas enuna lista de ciudades. La lista de ciudades proviene de los valores predeterminados del parámetro deciudad. Dichos valores predeterminados del parámetro de ciudad se encapsulan dentro del informe.

Para empezar, va a crear un informe de clientes con un parámetro de ciudad. Los datos del informeproceden de la base de datos de muestra incluida en Crystal Reports para Visual Studio. Al crear unainstancia del informe en el código, generará un ArrayList que contiene nombres de ciudades (París,

 Tokio) y pasará dicha instancia de ArrayList a un método de ayuda que establezca estos nombres comolos valores actuales del parámetro de ciudad. A continuación, enlazará el informe al controlCrystalReportViewer y verá el informe que mostrará únicamente los clientes que vivan en París y Tokio.

En la siguiente parte del tutorial, realizará las siguientes acciones:

• Crear un método que obtenga todos los valores predeterminados y los devuelva en un ArrayList.

• Agregar un control ListBox al formulario y rellenarlo a partir de ArrayList.• Agregar un control Button para volver a mostrar el informe basado en las selecciones de ListBox.

En la parte final del tutorial, codificará el evento de clic de botón para obtener los elementosseleccionados en el control ListBox y establecerlos para que sean los valores actuales del parámetro deciudad. El informe se volverá a mostrar incluyendo únicamente los clientes que vivan en las ciudadesseleccionadas en el control ListBox.

Este tutorial también se puede realizar con clases del modelo de objetos ReportDocument; vea Leer yconfigurar parámetros discretos mediante el modelo de objetos ReportDocument. Para obtener másinformación sobre el modelo de objetos que se debe utilizar, vea ¿Cuál es el modelo de objetos que sedebe utilizar?.

Continúe con Crear un informe con parámetros.

Crear un informe con parámetros

Para empezar, cree un informe que obtenga su información de la base de datos de muestra de MicrosoftAccess que se incluye con Crystal Reports.

Nota Xtreme.mdb es la base de datos de muestra incluida con Crystal Reports. Para localizar el archivoxtreme.mdb correspondiente a su versión de Crystal Reports en el disco duro, vea Ubicación de la base

de datos de ejemplo Xtreme. Tiene que conectarse a la base de datos a través de su entrada ODBC DSN.Para saber el nombre de esta entrada según su versión de Crystal Reports, vea Entrada ODBC DSN parala base de datos de ejemplo Xtreme.

Page 16: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 16/80

Para crear un informe con parámetros

Nota Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración deproyectos. La Configuración de proyectos contiene referencias específicas a espacios de nombres yconfiguración de códigos necesarios para este procedimiento, y éste no se podrá completar sin dichaconfiguración. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasos

de Configuración de proyectos.

1. En Explorador de soluciones, haga clic con el botón derecho en el nombre de proyecto ennegrita, elija Agregar y, a continuación, haga clic en Agregar nuevo elemento.

2. En el cuadro de diálogo Agregar nuevo elemento, en la vista Plantillas, seleccione la plantillaCrystal Report.

3. En el campo Nombre, escriba el nombre "CustomersByCity.rpt" y haga clic en Agregar.

Nota En Visual Studio .NET 2002 o 2003, el botón se denomina Abrir.

Si no se ha registrado anteriormente, se le pedirá que se registre. Para saber cómo registrarse,vea Registro y código de clave de Crystal Reports.

4. En el panel Crear un nuevo documento de Crystal Report del cuadro de diálogo Galería deCrystal Report, seleccione Usar asistente de informes.

5. En el panel Elegir un Asistente, seleccione Estándar y, a continuación, haga clic en Aceptar.

6. En el panel Orígenes de datos disponibles de la ventana Asistente para la creación deinformes estándar, expanda la carpeta Crear nueva conexión.

Nota En Visual Studio .NET 2002 o 2003, donde Crystal Reports no se ha actualizado a CrystalReports Developer, no existe la carpeta Crear nueva conexión; el contenido se mostrará en elnivel superior.

7. En la subcarpeta que se abre, expanda la carpeta ODBC (RDO).

8. En la ventana ODBC (RDO), seleccione la entrada DSN de ODBC correcta para su versión deCrystal Reports, como se explica en Entrada DSN de ODBC para la base de datos de ejemploXtreme y, a continuación, haga clic en Finalizar.

Se expandirá la carpeta ODBC (RDO) y mostrará la base de datos de ejemplo Xtreme.

9. Expanda el nodo Tablas, haga doble clic en la tabla Cliente para mover la tabla al panel Tablasseleccionadas y, a continuación, haga clic en Siguiente.

10. Expanda la tabla Cliente, mantenga presionada CTRL y haga clic en Nombre del cliente,Título del contacto, Dirección1, Apellido del contacto y Ciudad.

11. Haga clic en el símbolo > para mover estos campos en el panel Campos para mostrar y, acontinuación, haga clic en el botón Siguiente.

12. En el panel Campos disponibles, en Campos del informe, haga doble clic en Cliente.Ciudadpara mover el campo al panel Agrupar por y, a continuación, haga clic en el botón Finalizar.

Se creará el informe CustomersByCity y se cargará en la ventana principal de Visual Studio.

Ahora ya podrá agregar un parámetro denominado Ciudad y ocuparlo con valores predeterminados.

El Explorador de campos debe estar visible, porque proporciona acceso a las distintas funciones delinforme, incluidos los parámetros. Para ver el Explorador de campos, en el menú Crystal Reports, hagaclic en Explorador de campos.

Para agregar un parámetro Ciudad 

Page 17: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 17/80

1. Si el Explorador de campos no está visible, en la barra de herramientas de Crystal Reports,haga clic en Cambiar la vista del campo.

Nota Otro modo de ver el Explorador de campos es haciendo clic en Explorador decampos en el menú Crystal Reports.

2. En el Explorador de campos, haga clic con el botón derecho en Campos de parámetro yseleccione Nuevo...

3. En el cuadro de diálogo Crear campo de parámetro:• Defina el Nombre como "Ciudad".• Defina el Texto de solicitud como "Seleccione una o varias ciudades".• Establezca Tipo de valor en Cadena.• Seleccione Permitir valores múltiples.• Seleccione Valores discretos.• Haga clic en Valores predeterminados... 

Nota En Visual Studio .NET 2002 o 2003 donde Crystal Reports no se ha actualizado aCrystal Reports Developer, este botón se denomina Establecer valores predeterminados.

4. En el cuadro de diálogo Establecer valores predeterminados:• Defina Examinar tabla como "Cliente".• Defina Examinar campo como "Ciudad".• Haga clic en >> (la doble flecha hacia la derecha) para mover toda la lista de ciudades a

la lista Valores predeterminados.5. Haga clic en Aceptar para cerrar el cuadro de diálogo Establecer valores predeterminados.

6. Haga clic en Aceptar para cerrar el cuadro de diálogo Crear campo de parámetro.

Acaba de establecer los valores predeterminados para que contengan una amplia lista de ciudades.Posteriormente, en este tutorial, va a tener acceso a esta misma lista de valores predeterminados

mediante programación, a través de la propiedad ParameterFieldInfo de la clase CrystalReportViewer.

Ahora va a utilizar el Asistente de selección para establecer una fórmula que conecte la columna de basede datos Ciudad con el campo de parámetro Ciudad creado recientemente.

Para conectar el parámetro Ciudad a la columna de base de datos Ciudad 

1. En la barra de herramientas de Crystal Reports, haga clic en Asistente de selección.

2. En el cuadro de diálogo Elegir campo, en Campos del informe, seleccione Cliente.Ciudad y,a continuación, haga clic en Aceptar.

3. En el cuadro de diálogo Asistente de selección, en la ficha Cliente.Ciudad, establezca la listadesplegable como "es igual a".

4. En la nueva lista desplegable que aparece a la derecha, seleccione la primera opción de la lista,{?City} y, a continuación, haga clic en Aceptar.

Nota Esta selección, {?City}, es el parámetro Ciudad creado anteriormente.

5. Desde el menú Archivo, seleccione Guardar todo.

Ahora podrá enlazar el informe al control CrystalReportViewer y establecer el parámetro de ciudad condos valores iniciales, París y Tokio.

Continúe con Enlazar el informe.

Enlazar el informe

Page 18: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 18/80

Al seguir las instrucciones de Configuración de proyectos para preparar este tutorial, ha colocado uncontrol CrystalReportViewer en el formulario Web Forms o Windows Forms. En los pasos anteriores,agregó un informe CustomersByCity al proyecto.

En esta sección enlazará la ruta de directorio de archivos del informe CustomersByCity al controlCrystalReportViewer. A continuación, probará si el informe se muestra correctamente cuando no se han

establecido valores actuales para su campo de parámetro.

Para enlazar la ruta de directorio de archivos del informe CustomersByCity al controlCrystalReportViewer 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código para ver la clase de código subyacente de este formulario

Web Forms o Windows Forms.3. Busque el método ConfigureCrystalReports() , que ha creado en Configuración de proyectos.4. Declare una variable de cadena, llámela reportPath y asígnele una ruta en tiempo de ejecución al

informe local. Esta ruta se determina de forma diferente para los sitios Web y los proyectos paraWindows:

Para un sitio Web, pase el nombre del archivo de informe local como un parámetro decadena en el método Server.MapPath() . Esto asigna el informe local a la ruta deldirectorio de archivos de la unidad de disco duro en tiempo de ejecución.

[Visual Basic]

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

[C#]

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

• Para un proyecto para Windows, concatene la propiedad Application.StartupPathconuna barra invertida y el nombre del archivo de informe local. Esto asigna el informe almismo directorio del archivo ejecutable de Windows.

Nota En la fase de compilación se copiará el informe al directorio que contiene elarchivo ejecutable.

[Visual Basic]

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

[C#]

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

5. Asigne la ruta del directorio de archivos del informe CustomersByCity a la propiedadReportSource del control CrystalReportViewer.

[Visual Basic]

myCrystalReportViewer.ReportSource = reportPath

[C#]

crystalReportViewer.ReportSource = reportPath;

Page 19: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 19/80

Ahora estará listo para crear y ejecutar el proyecto. Está previsto que falle la carga del informe, porqueaún no se ha escrito el código para establecer un valor para el campo de parámetro Ciudad.

Para probar la carga del informe CustomersByCity 

1. En el menú Crear, seleccione 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, acontinuación, copie el informe en dicho subdirectorio.

Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo deejecución, el informe deberá estar almacenado en el mismo directorio que el archivo ejecutablede 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 hainiciado la depuración, aparecerá un cuadro de diálogo en el que se indica que el archivoWeb.config se debe modificar. Haga clic en el botón Aceptar para habilitar la depuración.

No se muestra el informe CustomersByCity. Se muestra después de agregar un valor para elparámetro Ciudad más adelante en este tutorial.

Nota Los resultados pueden variar, según la versión de Crystal Reports que utilice. Enversiones más recientes, verá un formulario que le pedirá que indique valores de parámetro paradicho informe. En versiones anteriores, se produce una excepción "Falta el valor actual delcampo de parámetro". En cualquiera caso, debe agregar código adicional para que la aplicaciónsea completamente funcional.

5. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Continúe con Configurar parámetros manualmente en el código.

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 informeCustomersByCity.

Esto implica codificación, que puede separar en los siguientes procesos:

• Necesita una constante PARAMETER_FIELD_NAME para contener el nombre de campo deparámetro "Ciudad".

• El código para agregar los valores actuales al parámetro Ciudad se utiliza en distintas partes deeste tutorial; por lo tanto, este código se creará como un método de ayuda independiente.

• En el método ConfigureCrystalReports(), va a agregar los parámetros "París" y "Tokio" a unainstancia de ArrayList y a pasar el informe y la instancia de ArrayList al método de ayuda paraque se procesen.

Para crear una constante PARAMETER_FIELD_NAME 

1. Regrese a la clase de código subyacente de este Web Forms o Windows Forms.2. En el nivel de clase, cree una nueva constante de cadena, PARAMETER_FIELD_NAME, y

establezca su valor como "Ciudad".

[Visual Basic]

Page 20: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 20/80

Private Const PARAMETER_FIELD_NAME As String = "City"

[C#]

private const string PARAMETER_FIELD_NAME = "City";

Ahora ya puede crear el método de ayuda que agregue los valores actuales al parámetro del informe.

Para crear un método de ayuda que agregue los valores actuales al parámetro del informe 

1. Regrese a la clase de código subyacente de este Web Forms o Windows Forms.2. 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.Collections (si todavía no seha declarado este espacio de nombres).

[Visual Basic]

Imports System.Collections

[C#]

using System.Collections;

Nota Esta declaración se necesita para tener acceso a la clase ArrayList.

3. En la parte inferior de la clase, cree un nuevo método privado denominadoSetCurrentValuesForParameterField() con dos variables en la firma del método:ParameterFields y ArrayList.

[Visual Basic]

Private Sub SetCurrentValuesForParameterField(ByVal myParameterFields AsParameterFields, ByVal myArrayList As ArrayList)

End Sub

[C#]

private void SetCurrentValuesForParameterField(ParameterFieldsparameterFields, ArrayList arrayList){}

4. En este método, declare y cree una instancia de la clase indizada ParameterValues como lavariable currentParameterValues.

Nota Para que se pueda tener acceso a la clase ParameterValues, debe haber incluido unadeclaración "Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase decódigo subyacente del espacio de nombres CrystalDecisions.Shared. (Esta declaración se haagregado en Configuración de proyectos.)

[Visual Basic]

Dim currentParameterValues As ParameterValues = New ParameterValues()

[C#]

Page 21: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 21/80

ParameterValues currentParameterValues = new ParameterValues();

5. Cree un bucle foreach para obtener todos los valores enviados (como el tipo Objeto) de lainstancia de ArrayList.

Nota En este método, recupera valores de ArrayList. Posteriormente, va a escribir código que

agregue valores a ArrayList.

[Visual Basic]

For Each submittedValue As Object In myArrayList

Next

[C#]

foreach(object submittedValue in arrayList){

}

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

[Visual Basic]

Dim myParameterDiscreteValue As ParameterDiscreteValue = NewParameterDiscreteValue()

[C#]

ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();

7. En el bucle foreach, convierta submittedValue en una cadena y pásela a la propiedad Value de lainstancia de ParameterDiscreteValue.

[Visual Basic]

myParameterDiscreteValue.Value = submittedValue.ToString()

[C#]

parameterDiscreteValue.Value = submittedValue.ToString();

8. En el bucle foreach, agregue la instancia de ParameterDiscreteValue a la clase indizadacurrentParameterValues.

[Visual Basic]

currentParameterValues.Add(myParameterDiscreteValue)

[C#]

currentParameterValues.Add(parameterDiscreteValue);

Esto completará el código en el bucle foreach. Coloque el código restante (a partir de los pasos

siguientes) después del bucle foreach.

Page 22: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 22/80

9. Fuera del bucle foreach, obtenga la instancia de ParameterField de la clase indizadaParameterFields que se basada en la entrada de índice de la constante PARAMETER_FIELD_NAME.

[Visual Basic]

Dim myParameterField As ParameterField =

myParameterFields(PARAMETER_FIELD_NAME)

[C#]

ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];

10. Pase la instancia de currentParameterValues al método CurrentValues de la instancia deParameterField.

[Visual Basic]

myParameterField.CurrentValues = currentParameterValues

[C#]

parameterField.CurrentValues = currentParameterValues;

Este procedimiento de varios pasos ha mostrado el modo de crear un método que obtiene los valoresenviados desde una instancia de ArrayList y los coloca como valores actuales en una instancia deParameterField. Ahora, debe llamar a este método antes de enlazar el informe al controlCrystalReportViewer, para que el informe sepa que tiene configuración de parámetros.

Para llamar al método SetCurrentValuesForParameterField () antes de enlazar el informe alcontrol CrystalReportViewer 

1. En el método ConfigureCrystalReports(), declare y cree una instancia de ArrayList encimade la línea que enlaza el informe al control CrystalReportViewer.

[Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()

[C#]

ArrayList arrayList = new ArrayList();

2. Agregue los nombres de ciudad "París" y "Tokio" como cadenas a la instancia de ArrayList.

[Visual Basic]

myArrayList.Add("Paris")myArrayList.Add("Tokyo")

[C#]

arrayList.Add("Paris");arrayList.Add("Tokyo");

3. Debajo del código que enlaza el control CrystalReportViewer, obtenga la instancia deParameterFields de la propiedad ParameterFieldInfo del control CrystalReportViewer.

Page 23: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 23/80

[Visual Basic]

Dim myParameterFields As ParameterFields =myCrystalReportViewer.ParameterFieldInfo

[C#]

ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;

4. Llame al método SetCurrentValuesForParameterField() y pásele la instancia deParameterFields y la instancia de ArrayList.

[Visual Basic]

SetCurrentValuesForParameterField(myParameterFields, myArrayList)

[C#]

SetCurrentValuesForParameterField(parameterFields, arrayList);

Ahora estará listo para crear y ejecutar el proyecto. Se espera que el informe se muestre correctamente,porque ahora existe código escrito para establecer los valores actuales en el campo de parámetro.

Para probar la carga del informe CustomersByCity 

1. En el menú Crear, seleccione 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.

El informe CustomersByCity aparecerá correctamente, mostrando la lista de los clientes de Parísy Tokio.

4. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

En la siguiente sección, aprenderá como obtener los valores predeterminados del campo de parámetro yestablecerá dichos valores en un control ListBox. Éstos se utilizan al final del tutorial para seleccionarnuevas ciudades dinámicamente y filtrar el informe basándose en las ciudades seleccionadasrecientemente.

Continúe con Crear un control ListBox que muestre los parámetros predeterminados.

Crear un control ListBox que muestre los parámetrospredeterminados

El resto del tutorial trata sobre la visualización de una lista completa de valores predeterminados delcampo de parámetro en un control ListBox, y basado en las selecciones que realice en dicho controlListBox, volviendo a filtrar los contenidos del informe.

En esta sección aprenderá a rellenar el control ListBox con los valores predeterminados del campo deparámetro.

Nota Recuerde que ya estableció los Valores predeterminados, una amplia lista de ciudades, al creareste informe al principio del tutorial.

Page 24: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 24/80

Para hacerlo, deberá agregar y configurar un control ListBox y, a continuación, crear un método deayuda para rellenar el control ListBox.

Para crear y configurar un control ListBox en el formulario 

1. Abra el formulario Web Forms o Windows Forms.

2. En el menú Ver, haga clic en 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.

El control CrystalReportViewer bajará una línea.

4. Si está desarrollando un proyecto de Windows, realice las siguientes acciones:a. Haga clic en el control CrystalReportViewer para seleccionarlo.

 b. En la ventana Propiedades, establezca Dock en "Bottom".

c. Ajuste el tamaño del control CrystalReportViewer, con el fin de que disponga delespacio necesario sobre él para un control ListBox.

d. En la ventana Propiedades, establezca Anchor en "Top, Bottom, Left, Right".

5. En el Cuadro de herramientas, arrastre un control ListBox sobre el controlCrystalReportViewer.

Nota Si aparece una Tarea inteligente en ListBox (si se utiliza Visual Studio 2005), presione Escpara cerrarla.

6. Haga clic en el control ListBox para seleccionarlo.

7. Desde la ventana Propiedades siga estos pasos:

Establezca ID o Nombre en "defaultParameterValuesList". Establezca SelectionMode en "Multiple" (en un proyecto de Windows, "MultiExtended").

2. Desde el menú Archivo, seleccione Guardar todo.

Ahora ya podrá crear un método de ayuda que obtenga los valores predeterminados del campo deparámetro.

Para crear un método de ayuda que obtenga los valores predeterminados del campo deparámetro 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código.

3. En la parte inferior de la clase, cree un nuevo método privado denominadoGetDefaultValuesFromParameterField() que devuelva una instancia de ArrayList, habiendopasado ParameterFields a la firma del método.

[Visual Basic]

Private Function GetDefaultValuesFromParameterField(ByVal myParameterFieldsAs ParameterFields) As ArrayList

End Function

[C#]

private ArrayList GetDefaultValuesFromParameterField(ParameterFieldsparameterFields)

Page 25: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 25/80

{}

4. Obtenga la instancia de ParameterField de la clase indizada ParameterFields basada en laentrada de índice de la constante PARAMETER_FIELD_NAME.

[Visual Basic]

Dim myParameterField As ParameterField =myParameterFields(PARAMETER_FIELD_NAME)

[C#]

ParameterField parameterField = parameterFields[PARAMETER_FIELD_NAME];

5. Obtenga una clase indizada ParameterValues (como la variable defaultParameterValues) a partirde la propiedad DefaultValues de la instancia de ParameterField.

[Visual Basic]

Dim defaultParameterValues As ParameterValues =myParameterField.DefaultValues

[C#]

ParameterValues defaultParameterValues = parameterField.DefaultValues;

6. Declare y cree una instancia de ArrayList.

[Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()

[C#]

ArrayList arrayList = new ArrayList();

7. Cree un bucle foreach que obtenga cada instancia de ParameterValue a partir dedefaultParameterValues.

[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ámetrosdiscretos (en oposición a parámetros de rango). Existen dos versiones de este bloque condicional

porque la API ha cambiado ligeramente en las distintas versiones de Crystal Reports para VisualStudio. Compruebe su API (mediante IntelliSense) para ver qué propiedad está disponible enParameterValue:

Page 26: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 26/80

8. Si la propiedad disponible es IsRange, en el bucle foreach, escriba este código:

[Visual Basic]

If (Not myParameterValue.IsRange) Then

End If

[C#]

if(!parameterValue.IsRange){}

9. O, si la propiedad disponible es Kind (DiscreteOrRangeKind, una enumeración con tres valores:DiscreteValue, RangeValue, DiscreteAndRangeValue), escriba este código, en el bucle foreach, ensu lugar:

[Visual Basic]

If (myParameterValue.Kind = DiscreteOrRangeKind.DiscreteValue) Then

End If

[C#]

if(parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue){}

10. En este bloque condicional anidado, proyecte la instancia de ParameterValue a su claseampliada, DiscreteParameterValue.

[Visual Basic]

Dim myParameterDiscreteValue As ParameterDiscreteValue =CType(myParameterValue, ParameterDiscreteValue)

[C#]

ParameterDiscreteValue parameterDiscreteValue =(ParameterDiscreteValue)parameterValue;

11. Además, en el bloque condicional anidado, agregue la propiedad Value de la instancia deParameterDiscreteValue (convertida en cadena) a la instancia de ArrayList.

[Visual Basic]

myArrayList.Add(myParameterDiscreteValue.Value.ToString())

[C#]

arrayList.Add(parameterDiscreteValue.Value.ToString());

12. Fuera del bloque condicional y del bucle foreach, al final del método, devuelva la instancia deArrayList del método.

Page 27: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 27/80

[Visual Basic]

Return myArrayList

[C#]

return arrayList;

Ha obtenido los valores predeterminados del campo de parámetro y los ha devuelto del método como unArrayList. Ahora enlace este ArrayList al control ListBox defaultParameterValuesList.

El código varía ligeramente en función de si se utiliza un proyecto Web o un proyecto de Windows; por lotanto, asegúrese de que sólo realiza el procedimiento para Web o para Windows.

Para enlazar el ArrayList devuelto del método al ListBox de un proyecto Web 

1. En el método ConfigureCrystalReports(), agregue un par de saltos de línea en el códigoinmediatamente después de la línea de código que obtiene la instancia de ParameterFields.

En los saltos de línea, ahora puede escribir código adicional que establece el origen de datospara el control ListBox defaultParameterValuesList ListBox cuando la página se carga por primeravez.

2. En los saltos de línea, cree un bloque condicional Not IsPostBack.

[Visual Basic]

If Not IsPostBack Then

End If

[C#]

if(!IsPostBack){}

Nota El bloque condicional Not IsPostBack se usa para encapsular código que sólo se debeejecutar la primera vez que se carga la página. Los controles se suelen enlazar a los valores dedatos en bloques condicionales Not IsPostBack para que sus valores de datos (y los eventos decontrol subsiguientes) no se restablezcan cuando se vuelva a cargar la página.

3. En el bloque condicional Not IsPostBack, establezca la propiedad DataSource del ListBoxdefaultParameterValuesList al método de ayuda GetDefaultValuesFromParameterField() ,pasando la instancia de ParametersFields como un parámetro de método.

[Visual Basic]

defaultParameterValuesList.DataSource =GetDefaultValuesFromParameterField(myParameterFields)

[C#]

defaultParameterValuesList.DataSource =GetDefaultValuesFromParameterField(parameterFields);

Page 28: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 28/80

4. Aún en el bloque condicional Not IsPostBack, llame al método DataBind() del ListBoxdefaultParameterValuesList.

[Visual Basic]

defaultParameterValuesList.DataBind()

[C#]

defaultParameterValuesList.DataBind();

Para enlazar el ArrayList devuelto del método al ListBox de un proyecto de Windows 

1. En el método ConfigureCrystalReports(), agregue un par de saltos de línea en el códigoinmediatamente después de la línea de código que obtiene la instancia de ParameterFields.

En los saltos de línea, 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 primeravez.

2. En los saltos de línea, establezca la propiedad DataSource del ListBoxdefaultParameterValuesList al método de ayuda GetDefaultValuesFromParameterField() ,pasando la instancia de ParametersFields como un parámetro de método.

[Visual Basic]

defaultParameterValuesList.DataSource =GetDefaultValuesFromParameterField(myParameterFields)

[C#]

defaultParameterValuesList.DataSource =GetDefaultValuesFromParameterField(parameterFields);

Ahora estará listo para crear y ejecutar el proyecto para verificar si el ListBoxdefaultParameterValuesList está relleno.

Para probar si está relleno el control ListBox defaultParameterValuesList 

1. En el menú Crear, seleccione 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.

El control ListBox defaultParameterValuesList mostrará una lista completa de valorespredeterminados (ciudades, en nuestro tutorial).

4. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

En la siguiente sección, agregará un botón para volver a mostrar el informe basado en las seleccionesdel control ListBox defaultParameterValuesList.

Continúe con Configurar parámetros a partir de las selecciones de ListBox.

Page 29: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 29/80

Configurar parámetros a partir de las selecciones de ListBox

En esta sección, agregará un botón para volver a mostrar el informe basado en las selecciones delcontrol ListBox defaultParameterValuesList. En el método de evento de este botón, llamará al mismométodo que se llama al cargar la página por primera vez: SetCurrentValuesForParameterField() .Pero esta vez, en lugar de pasar valores arbitrarios (París y Tokio), pasará los valores seleccionados en elcontrol ListBox defaultParameterValuesList.

Para crear y configurar un botón que vuelva a mostrar el informe en el formulario 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Diseñador.

3. En la Caja de herramientas, arrastre un control Button a la derecha del control ListBox.

4. Haga clic en el control Button para seleccionarlo.

5. Desde la ventana Propiedades siga estos pasos:• Establezca el valor de ID o Nombre en "redisplay".• Establezca Text como "Volver a mostrar el informe".

Ahora podrá crear un método de evento de clic de botón que busque los elementos seleccionados en elcontrol ListBox y los pase al método SetCurrentValuesForParameterField().

El código varía ligeramente para un proyecto Web o un proyecto de Windows; por lo tanto, realice sólo elprocedimiento para Web o para Windows.

Para crear el método de evento de clic del botón que vuelve a mostrar el informe en unproyecto Web 

1. Haga doble clic en el botón Volver a mostrar el informe.

Pasa a la clase de código subyacente en la que se ha generado automáticamente un método deevento redisplay_Click().

2. 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.Web.UI.WebControls (sitodavía no se ha declarado este espacio de nombres).

[Visual Basic]

Imports System.Web.UI.WebControls

[C#]

using System.Web.UI.WebControls;

Nota Esta declaración se necesita para tener acceso a la clase ListItem.

3. En el método de evento redisplay_Click() que se acaba de generar automáticamente,declare y cree una instancia de ArrayList.

[Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()

[C#]

Page 30: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 30/80

ArrayList arrayList = new ArrayList();

4. Cree un bucle foreach para obtener cada instancia de ListItem a partir de la propiedad Items delListBox defaultParameterValuesList.

[Visual Basic]

For Each item As ListItem In defaultParameterValuesList.Items

Next

[C#]

foreach(ListItem item in defaultParameterValuesList.Items){}

5. En el bucle foreach, cree un bloque condicional anidado que compruebe si la propiedad Selected

de la instancia de Item actual está establecida como True.

[Visual Basic]

If item.Selected Then

End If

[C#]

if(item.Selected){

}

6. En el bloque condicional, agregue la propiedad Value de la instancia de Item a la instancia deArrayList.

[Visual Basic]

myArrayList.Add(item.Value)

[C#]

arrayList.Add(item.Value);

7. Fuera del bloque condicional y del bucle foreach, vuelva a enlazar la ruta de directorio dearchivos del informe CustomersByCity a la propiedad ReportSource de la claseCrystalReportViewer.

Nota La ruta de directorio de archivos que se muestra más abajo es la de un proyecto de VisualStudio 2005. "ProjectName" se reemplaza por el nombre del sitio Web. "UserName" se reemplazapor el nombre de conexión.

La ruta predeterminada para un proyecto de sitio Web:

[Visual Basic]

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

Page 31: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 31/80

[C#]

crystalReportViewer.ReportSource ="C:\\WebSites\\ProjectName\\CustomersByCity.rpt";

8. Asigne la instancia de ParameterFields de la propiedad ParameterFieldInfo del control

CrystalReportViewer.

[Visual Basic]

Dim myParameterFields As ParameterFields =myCrystalReportViewer.ParameterFieldInfo

[C#]

ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;

9. Pase la instancia de ParameterFields y de ArrayList al métodoSetCurrentValuesForParameterField() .

[Visual Basic]

SetCurrentValuesForParameterField(myParameterFields, myArrayList)

[C#]

SetCurrentValuesForParameterField(parameterFields, arrayList);

Para crear el método de evento de clic del botón que vuelve a mostrar el informe en unproyecto de Windows 

1. Haga doble clic en el control Button que vuelve a mostrar el informe.

Pasa a la clase de código subyacente en la que se ha generado automáticamente un método deevento redisplay_Click().

2. En el método de evento redisplay_Click() que se acaba de generar automáticamente,declare y cree una instancia de ArrayList.

[Visual Basic]

Dim myArrayList As ArrayList = New ArrayList()

[C#]

ArrayList arrayList = new ArrayList();

3. Cree un bucle foreach para obtener cada elemento (como una cadena) de la propiedadSelectedItems del ListBox defaultParameterValuesList.

[Visual Basic]

For Each item As String In defaultParameterValuesList.SelectedItems

Next

Page 32: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 32/80

[C#]

foreach(string item in defaultParameterValuesList.SelectedItems){}

4. En el bloque foreach, agregue la instancia de cadena Item a la instancia de ArrayList.

[Visual Basic]

myArrayList.Add(item)

[C#]

arrayList.Add(item);

5. Fuera del bucle foreach, vuelva a enlazar la ruta de directorio de archivos del informeCustomersByCity 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 VisualStudio 2005. "ProjectName" se reemplaza por el nombre del proyecto de Windows. "UserName"se reemplaza por el nombre de conexión.

La ruta predeterminada para un proyecto de Windows:

[Visual Basic]

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

[C#]

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

6. Asigne la instancia de ParameterFields de la propiedad ParameterFieldInfo del controlCrystalReportViewer.

[Visual Basic]

Dim myParameterFields As ParameterFields =myCrystalReportViewer.ParameterFieldInfo

[C#]

ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo;

7. Pase la instancia de ParameterFields y de ArrayList al métodoSetCurrentValuesForParameterField() .

[Visual Basic]

SetCurrentValuesForParameterField(myParameterFields, myArrayList)

[C#]

Page 33: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 33/80

SetCurrentValuesForParameterField(parameterFields, arrayList);

Ahora que se ha aplicado los valores seleccionados del control ListBox como los valores actuales delcampo de parámetro, estará listo para volver a mostrar el informe.

Ahora estará preparado para generar y ejecutar el proyecto para verificar que el campo de parámetro se

ha restablecido correctamente.

Para probar si está relleno el control ListBox defaultParameterValuesList 

1. En el menú Crear, seleccione 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 ListBox, presione la tecla CTRL mientras hace clic para seleccionar ciudadesdiferentes en la lista.

5. 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 lalista de ciudades que ha seleccionado.

6. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Continúe con Configurar la persistencia de parámetros.

Configurar la persistencia de parámetros

En esta sección configurará la persistencia (en un tutorial basado en Web) de las selecciones de campode parámetro que se han realizado en el control ListBox.

Para demostrar la falta de persistencia de las selecciones de parámetro 

1. En el menú Crear, seleccione 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 ListBox, presione la tecla Mayús mientras hace clic para seleccionar todas lasciudades de la lista.

5. Haga clic en Volver a mostrar el informe.

La página se vuelve a cargar y, a continuación, muestra los registros de cliente de todos losclientes de todas las ciudades. Es un informe extenso que contiene muchas páginas.

6. En la barra de herramientas CrystalReportViewer, haga clic en Página siguiente.

No se conserva la lista de las ciudades seleccionadas. La página 2 del informe no se muestra. Ensu lugar, vuelve a aparecer la configuración de parámetros de inicio (París y Tokio).

Nota En Visual Studio .NET 2002, la lista de las ciudades seleccionar se puede conservar debidoa diferencias de versión.

7. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Debe agregar código de persistencia a la aplicación para que se conserven los cambios efectuadoscuando se vuelvan a cargar las páginas Web.

Page 34: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 34/80

Para comenzar, va a agregar código de conservación al método ConfigureCrystalReports()agregando un bloque Else al bloque condicional If Not IsPostBack. A continuación, va a establecervalores únicos para la instancia de ArrayList por cada condición del bloque condicional. Al iniciarse lapágina, va a establecer los valores predeterminados ("París" y "Tokio") en la instancia de ArrayList. Alvolver a cargarse la página, va a recuperar la instancia de ArrayList que está almacenada en Session.

Para agregar código de persistencia al método ConfigureCrystalReports() 

1. En el método ConfigureCrystalReports(), corte y pegue las dos líneas de código queagregan París y Tokio al ArrayList en la parte inferior del bloque condicional Not IsPostBack.

Cuando haya terminado, el aspecto del bloque condicional debe ser parecido al siguiente:

[Visual Basic]

If Not IsPostBack ThendefaultParameterValuesList.DataSource =

GetDefaultValuesFromParameterField(myParameterFields)

defaultParameterValuesList.DataBind()myArrayList.Add("Paris")myArrayList.Add("Tokyo")

End If

[C#]

if (!IsPostBack){

defaultParameterValuesList.DataSource =GetDefaultValuesFromParameterField(parameterFields);

defaultParameterValuesList.DataBind();arrayList.Add("Paris");arrayList.Add("Tokyo");

}

2. Agregue una línea final de código al bloque condicional que asigna la instancia ArrayList aSession.

Nota Puede agregar el nombre de variable como el identificador de cadena para el Session queagregue.

[Visual Basic]

Session("myArrayList") = myArrayList

[C#]

Session["arrayList"] = arrayList;

3. Agregue una condición Else al bloque condicional Not IsPostBack.4. En el bloque Else, obtenga la instancia de ArrayList de Session y proyéctela en ArrayList.

[Visual Basic]

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

[C#]

Page 35: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 35/80

arrayList = (ArrayList)Session["arrayList"];

Cuando haya terminado, el aspecto del bloque condicional debe ser parecido al siguiente:

[Visual Basic]If Not IsPostBack Then

defaultParameterValuesList.DataSource =GetDefaultValuesFromParameterField(myParameterFields)

defaultParameterValuesList.DataBind()myArrayList.Add("Paris")myArrayList.Add("Tokyo")Session("myArrayList") = myArrayList

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

End If[C#]if (!IsPostBack){

defaultParameterValuesList.DataSource =

GetDefaultValuesFromParameterField(parameterFields);defaultParameterValuesList.DataBind();arrayList.Add("Paris");arrayList.Add("Tokyo");Session["arrayList"] = arrayList;

}else{

arrayList = (ArrayList)Session["arrayList"];}

Estas modificaciones en el método ConfigureCrystalReports() garantizan que siempre se pase lainstancia actual de ArrayList al método SetCurrentValuesForParameterField() .

En la siguiente sección, realizará dos cambios en el código del evento de clic de botón:

•  Tomar el ArrayList que ha creado y asignarlo a Session.• 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 conjuntocomún de código.

Para modificar el código del método de evento de clic de botón para que funcione con lapersistencia de Session 

1. Elimine las tres últimas líneas de código del método de evento de clic de botón.• 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.• La tercera línea de código que se eliminará es la llamada al método

SetCurrentValuesForParameterField() .

En el siguiente paso agregará dos nuevas líneas de código para reemplazar el código eliminado.

2. En el método de evento de clic de botón, inmediatamente fura del bucle foreach, agregue unalínea de código que asigne la instancia de ArrayList a Session.

Nota Puede agregar el nombre de variable como el identificador de cadena para el Session queagregue.

Page 36: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 36/80

[Visual Basic]

Session("myArrayList") = myArrayList

[C#]

Session["arrayList"] = arrayList;

3. Llame al método ConfigureCrystalReports().

De este modo se obtiene la instancia de ArrayList, la aplica al informe y enlaza el informe alcontrol CrystalReportViewer.

[Visual Basic]

ConfigureCrystalReports()

[C#]

ConfigureCrystalReports();

Ahora estará preparado para generar y ejecutar el proyecto para verificar que el campo de parámetro seha restablecido correctamente.

Para probar si está relleno el control ListBox defaultParameterValuesList 

1. En el menú Crear, seleccione 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 ListBox, presione la tecla Mayús mientras hace clic para seleccionar todas lasciudades de la lista.

5. Haga clic en Volver a mostrar el informe.

La página se vuelve a cargar y muestra los registros de cliente de todos los clientes de todas lasciudades. Es un informe extenso que contiene muchas páginas.

6. En la barra de herramientas CrystalReportViewer, haga clic en Página siguiente.7. Ahora se conserva la lista de las ciudades seleccionadas. Se muestra la página 2 del informe.8. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Continúe con Conclusión.

Conclusión

Ha creado correctamente un informe con un valor de parámetro discreto, ha creado método de ayudaque acepta cualquier conjunto de valores en un formato común (un ArrayList) y ha aplicado dichosvalores a un informe basado en un nombre de campo de parámetro específico (la constantePARAMETER_FIELD_NAME).

 También ha aprendido a llenar el un control ListBox con los valores predeterminados de un campo deparámetro particular. Ha aprendido a obtener los valores seleccionados del ListBox y colocarlos en unArrayList para volver a llamar al método de ayuda original y cambiar la lista de valores de parámetro, así como la presentación del informe.

Page 37: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 37/80

Nota Ahora puede seguir trabajando con este tutorial y agregar un subinforme al informe y, acontinuación, configurar dicho subinforme con un parámetro de rango. Si lo desea, continúe con elsiguiente tutorial, que modifica el tutorial actual, Leer y configurar parámetros de rango con unsubinforme.

Tutorial: Leer y configurar parámetros de rango para unsubinforme

En este tutorial explorará una complicación adicional: ¿qué sucede si el informe contiene un subinformeque necesita parámetros distintos?

Para llevar a cabo este tutorial, debe realizar el tutorial anterior, Leer y configurar parámetros discretos.

Haga clic en el vínculo adecuado para pasar a esa sección:

• Introducción

Page 38: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 38/80

• 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, Leer y configurar parámetros discretos, obtuvo información sobre cómo crear uninforme con un parámetro discreto y cómo escribir código que estableciera dicho parámetro en tiempode ejecución, tanto con valores de parámetro codificados como con valores de parámetros pasadosdesde un control ListBox o TextBox.

En este tutorial, aprenderá a agregar parámetros de rango a un subinforme.

Necesita realizar cuatro modificaciones al proyecto que ha creado en Leer y configurar parámetrosdiscretos:

• Agregará un subinforme al informe original.

Este subinforme direcciona la tabla Pedidos de la base de datos Xtreme. La tabla Pedidos estárelacionada con la tabla Clientes que se ha utilizado en el tutorial anterior mediante una claveexterna ID del cliente.

• Agregará un parámetro de rango al subinforme que filtre por un rango de fechas de pedido.• Agregará dos controles Text al formulario: orderStartDate y orderEndDate, para establecer el

rango de fechas de pedido en tiempo de ejecución.•

Modificará el método SetCurrentValuesForParameter() que ha creado en el tutorial anterior.

Este método crea una instancia de ParameterRangeValue que contiene los valores startDate yendDate values, y, a continuación, pasa dicha instancia de ParameterRangeValue al parámetrode rango en el subinforme.

Cuando termine este tutorial, podrá filtrar los valores que se muestran en el informe en tiempo deejecución. El código que agregue limita el número de ciudades que se muestran en el informe principal,así como el rango de las fechas de pedido que se muestran en el subinforme.

Este tutorial también se puede realizar con clases del modelo de objetos ReportDocument; vea Leer yconfigurar parámetros con un subinforme mediante el modelo de objetos ReportDocument. Para obtenermás información sobre el uso del modelo de objetos, vea ¿Cuál es el modelo de objetos que se debe

utilizar?.

Continúe con Agregar un subinforme al informe original.

Agregar un subinforme al informe original

Para empezar, agregará un subinforme al informe original.

Para agregar un subinforme 

1. Abra el proyecto que ha creado en el tutorial anterior, Leer y configurar parámetros discretos.

2. En Explorador de soluciones, haga doble clic en el informe CustomersByCity para abrirlo.

Page 39: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 39/80

3. Haga clic con el botón derecho en la barra gris Detalles y seleccione Insertar sección abajo.

4. Haga clic con el botón derecho en la nueva sección Detalles b que ha creado, seleccioneInsertar y, a continuación, haga clic en Subinforme.

Aparece un cuadrado gris alrededor del cursor del mouse.

5. Arrastre el rectángulo gris en la nueva sección Detalles b y, a continuación, haga clic parasoltarlo.

6. En el cuadro de diálogo Insertar un subinforme, en la ficha Subinforme, seleccione Crear unsubinforme con el Asistente de informes.

Nota El cuadro de diálogo Insertar un subinforme incluye otras opciones que permiten elegir uninforme existente y subinformes a petición. Para obtener más información sobre estas funciones,vea Insertar un subinforme (cuadro de diálogo).

7. En el campo Nombre del informe nuevo, escriba "PedidosClientes".

8. Haga clic en Asistente de informes...

9. En el panel Orígenes de datos disponibles de la ventana Asistente para la creación deinformes estándar, expanda la carpeta Crear nueva conexión.

Nota En Visual Studio .NET 2002 o 2003, donde Crystal Reports no se ha actualizado a CrystalReports Developer, no existe la carpeta Crear nueva conexión; el contenido se mostrará en elnivel superior.

10. En la subcarpeta que se abre, expanda la carpeta ODBC (RDO).

11. En la ventana ODBC (RDO), seleccione la entrada DSN de ODBC correcta para su versión deCrystal Reports, como se explica en Entrada DSN de ODBC para la base de datos de ejemploXtreme y, a continuación, haga clic en Finalizar.

Se expandirá la carpeta ODBC (RDO) y mostrará la base de datos de ejemplo Xtreme.

12. Seleccione la tabla Pedidos y haga clic en el símbolo > para mover la tabla Pedidos al panelSeleccionar tablas y, a continuación, haga clic en Siguiente.

13. En el panel Campos disponibles, seleccione ID del pedido, Fecha del pedido, Fecha deenvío y Enviar vía.

14. Haga clic en el símbolo > para mover estos campos al panel Campos para mostrar y, acontinuación, haga clic en Finalizar.

15. En el cuadro de diálogo Insertar un subinforme, seleccione la ficha Vínculo.

16. En el panel Campo(s) del informe contenedor para vincular, en la lista Camposdisponibles, expanda la tabla Clientes, seleccione ID del cliente y, a continuación, haga clicen el símbolo >.

17. En el panel Vínculo de campo Clientes.ID del cliente que aparece, deje las seleccionespredeterminadas inalteradas.

Estas selecciones de parámetros y de datos generan automáticamente entre el informe principaly el subinforme.

18. Haga clic en Aceptar.

El nuevo subinforme, PedidosClientes, se muestra en la sección Detalles b del informe principal.

Nota Al agregar un subinforme a la sección Detalles, el subinforme se muestra por cada fila, loque agrega un costo de rendimiento al informe. Si no necesita información de subinforme a ese

nivel de granularidad, coloque el subinforme en una sección Grupo en vez de hacerlo en unasección Detalles.

Page 40: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 40/80

Ahora está listo para verificar la configuración del subinforme.

Para verificar la configuración del subinforme 

1. En la sección Detalles, haga doble clic en el subinforme PedidosClientes para verlo.

En la parte inferior de la vista del diseñador, aparecen botones de desplazamiento para elinforme principal y el subinforme PedidosClientes.

2. Si el Explorador de campos no está visible, en la barra de herramientas de Crystal Reports,haga clic en Cambiar la vista del campo.

Nota Otro modo de ver el Explorador de campos es haciendo clic en Explorador decampos en el menú Crystal Reports.

3. En el Explorador de campos, expanda Campos de parámetro.

4. Verifique que el campo de parámetro Pm-Clientes.ID del cliente se ha generado

automáticamente al vincular el subinforme.5. En la barra de herramientas de Crystal Reports, haga clic en Asistente de selección.

6. En el cuadro de diálogo Asistente de selección, verifique que está establecido el criterioPedidos.ID del cliente es igual a {Pm-Clientes.ID del cliente} y, a continuación, haga clicen Aceptar.

7. Desde el menú Archivo, seleccione Guardar todo.

Ha agregado correctamente un subinforme PedidosClientes al informe CustomersByCity. En lasección siguiente agregará un parámetro OrderDateRange al subinforme.

Para agregar un parámetro OrderDateRange al subinforme 

1. En el Explorador de campos, haga clic con el botón derecho en Campos de parámetro yseleccione Nuevo...

2. En el cuadro de diálogo Crear campo de parámetro:• Defina el Nombre como "OrderDateRange".• Defina Texto de solicitud como "Especifique un rango de fechas de pedidos para

mostrar".• Defina Tipo de valor como "Fecha".• Defina Opciones como una sola selección, "Rango de valores".

3. Haga clic en Aceptar.

4. En la barra de herramientas de Crystal Reports, haga clic en Asistente de selección.

5. Haga clic en la ficha Nuevo.

6. En el cuadro de diálogo Elegir campo, expanda la tabla Pedidos, seleccione Fecha del pedidoy, a continuación, haga clic en Aceptar.

7. En la nueva ficha Pedidos.Fecha del pedido, en la lista desplegable de criterios, seleccionefórmula:

8. Escriba la siguiente fórmula:

{Orders.Order Date} in {?OrderDateRange} 

9. Haga clic en Aceptar.

10. Desde el menú Archivo, seleccione Guardar todo.

Ha agregado correctamente un parámetro OrderDateRange al subinforme y lo ha vinculado a la

columna Pedidos.Fecha del pedido. En la sección siguiente agregará código para direccionar elparámetro OrderDateRange en el subinforme.

Page 41: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 41/80

Continúe con Agregar el código de parámetro de subinforme.

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. Para empezar, cree un método de ayuda privado, SetDateRangeForOrders().

Para crear y codificar el método SetDateRangeForOrders() 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código.3. En la parte superior de la clase, agregue dos nuevas constantes debajo de la constante

PARAMETER_FIELD_NAME agregada en el tutorial anterior.

[Visual Basic]

Private Const SUBREPORT_PARAMETER_FIELD_NAME As String = "OrderDateRange"Private Const SUBREPORT_NAME As String = "CustomerOrders"

[C#]

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

4. En la parte inferior de la clase, cree un nuevo método privado denominadoSetDateRangeForOrders()con tres parámetros: ParameterFields, string startDate y stringendDate.

[Visual Basic]

Private Sub SetDateRangeForOrders(ByVal myParameterFields As ParameterFields,ByVal startDate As String, ByVal endDate As String)

End Sub

[C#]

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

5. En este método, declare y cree una instancia de la clase ParameterRangeValue.

[Visual Basic]

Dim myParameterRangeValue As ParameterRangeValue = New ParameterRangeValue()

[C#]

ParameterRangeValue parameterRangeValue = new ParameterRangeValue();

Nota Para que la clase ParameterRangeValue sea accesible, deberá incluir un enunciado"Imports" [Visual Basic] o "using" [C#] en la parte superior de la clase de códigosubyacente del espacio de nombres CrystalDecisions.Shared. (Esta declaración se ha agregadoen Configuración de proyectos.)

Page 42: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 42/80

6. Establezca la propiedad StartValue de la instancia de ParameterRangeValue en el parámetro demétodo startDate.

[Visual Basic]

myParameterRangeValue.StartValue = startDate

[C#]

parameterRangeValue.StartValue = startDate;

Nota Las propiedades StartValue y EndValue de la clase ParameterRangeValue aceptan valoresde tipo Object. Este tipo genérico permite que el valor de rango que se pasa sea de muchostipos, incluidos: texto, número, fecha, moneda u hora.

7. Establezca la propiedad EndValue de la instancia de ParameterRangeValue en el parámetro demétodo endDate.

[Visual Basic]

myParameterRangeValue.EndValue = endDate

[C#]

parameterRangeValue.EndValue = endDate;

8. Establezca los límites inferior y superior para que sean bound-inclusive.

[Visual Basic]

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

[C#]

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

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

Ahora está preparado para asignar la instancia de ParameterRangeValue al parámetro delsubinforme.

9. Obtenga la instancia de ParameterField de la clase indizada ParameterFields basada dos valoresindizados: el nombre de campo de parámetro de subinforme y el nombre de subinforme. Pase losdos valores de constante que ha declarado al principio de la clase.

[Visual Basic]

Dim myParameterField As ParameterField =myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME)

[C#]

ParameterField parameterField =parameterFields[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];

Page 43: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 43/80

10. Llame al método Clear() de la propiedad CurrentValues de la instancia de ParameterField paraeliminar cualquier valor existente de la propiedad CurrentValues.

[Visual Basic]

myParameterField.CurrentValues.Clear()

[C#]

parameterField.CurrentValues.Clear();

11. Agregue la instancia de ParameterRangeValue, que ha creado anteriormente, a la propiedadCurrentValues de la instancia de ParameterField.

[Visual Basic]

myParameterField.CurrentValues.Add(myParameterRangeValue)

[C#]

parameterField.CurrentValues.Add(parameterRangeValue);

Este procedimiento de varios pasos ha establecido los valores de fecha inicial y final en una instancia deParameterRangeValue y los ha pasado al parámetro OrderDateRange del subinforme PedidosClientes.

Continúe con Agregar controles TextBox para contener valores de parámetro de rango.

Agregar controles TextBox para contener valores de parámetro de rango

En esta sección, agregará dos controles TextBox que proporcionan los valores de fecha inicial y final entiempo de ejecución al parámetro de rango OrderDateRange del informe PedidosClientes.

Nota Si implementa este tutorial en un sitio Web, la persistencia de los valores de fecha que el usuarioescribe en los cuadros de texto se mantiene mediante ViewState.

Para crear y configurar un botón que vuelva a mostrar el informe en el formulario 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Diseñador.3. Si está desarrollando un sitio Web, realice las siguientes acciones:

a. Haga clic entre el control ListBox y el control Button.

b. Presione INTRO tres veces para crear dos líneas entre el control ListBox y el controlButton.c. En la primera línea creada debajo del control ListBox, escriba "Fecha inicial de pedidos".

d. En la segunda línea creada debajo del control ListBox, escriba "Fecha final de pedidos".4. Si está desarrollando un proyecto de Windows, realice las siguientes acciones:

a. En la Caja de herramientas, arrastre dos controles Label a la derecha del controlListBox. Coloque una etiqueta encima de la otra y ambas encima del control Button.

 b. Seleccione el primer control Label y, a continuación, en la ventana Propiedades,establezca la propiedad Text en "Fecha inicial de pedidos".

c. Seleccione el segundo control Label y, a continuación, en la ventana Propiedades,establezca la propiedad Text en "Fecha final de pedidos".

Los pasos restantes se aplican tanto a los proyectos Web como a los de Windows.

Page 44: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 44/80

1. En Cuadro de herramientas, arrastre un control TextBox hasta la derecha de "Fecha inicial depedidos".

2. Haga clic en el control TextBox para seleccionarlo.

3. En la ventana Propiedades, establezca ID (o Name) en "orderStartDate".

4. En Cuadro de herramientas, arrastre un control TextBox hasta la derecha de "Fecha final de

pedidos".5. Haga clic en el control TextBox para seleccionarlo.

6. En la ventana Propiedades, establezca ID (o Name) en "orderEndDate".

7. Desde el menú Archivo, seleccione Guardar todo.

Continúe con Modificar métodos para llamar al subinforme.

Modificar métodos para llamar al subinforme

Ahora debe modificar el método ConfigureCrystalReports()y el método de eventoredisplay_Click() para recibir información de estos controles TextBox y aplicarlos al métodoSetDateRangeForOrders(), para que se procese la información de parámetro para los subinformes.

En el tutorial anterior, Leer y configurar parámetros discretos, ha diseñado estos métodos de dos formasdistintas, en función de si incluía la persistencia de Session.

Nota Los proyectos de Windows no requieren persistencia de Session. Los sitios Web normalmenterequieren persistencia de Session.

Elija uno (pero no ambos) de los procedimientos de varios pasos siguientes. Modifique los métodos queexcluyen la persistencia de Session o modifique los que incluyan persistencia de Session:

• Modificar los métodos que excluyen la persistencia de Session.• Modificar los métodos que incluyen la persistencia de Session.

Modificar los métodos que excluyen la persistencia de Session

Si ha terminado el tutorial anterior, Leer y configurar parámetros discretos, y ha excluido la persistenciade Session, realice los siguientes procedimientos. De lo contrario, vaya a Modificar los métodos queincluyen la persistencia de Session.

Para modificar el método ConfigureCrystalReports() que excluye la persistencia de Session 

1. En el método ConfigureCrystalReports(), agregue un par de saltos de línea en el códigodespués de las líneas que asignan "París" y "Tokio" como variables ArrayList.

2. En los saltos de línea, declare y establezca valores codificados para dos variables de cadena,startDate y endDate.

[Visual Basic]

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

[C#]

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

Page 45: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 45/80

3. Debajo del código que llama a SetCurrentValuesForParameterField() , llame al métodoSetDateRangeForOrders()y pásele la instancia de ParameterFields y las variables startDate yendDate.

[Visual Basic]

SetDateRangeForOrders(myParameterFields, startDate, endDate)

[C#]

SetDateRangeForOrders(parameterFields, startDate, endDate);

4. Desde el menú Archivo, seleccione Guardar todo.

A continuación, modificará el método de evento redisplay_Click.

Para modificar el método redisplay_Click() que excluye la persistencia de Session 

1. En el método de evento redisplay_Click(), agregue un par de saltos de línea en el códigoencima de la línea que enlaza el informe al control CrystalReportViewer.

2. En los saltos de línea, declare y establezca valores para dos variables de cadena, startDate yendDate, de los controles TextBox que ha agregado al formulario Web Forms o Windows Forms.

[Visual Basic]

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

[C#]

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

3. Debajo del código que llama a SetCurrentValuesForParameterField() , llame al métodoSetDateRangeForOrders()y pásele la instancia de ParameterFields y las variables startDate yendDate.

[Visual Basic]

SetDateRangeForOrders(myParameterFields, startDate, endDate)

[C#]

SetDateRangeForOrders(parameterFields, startDate, endDate);

4. Desde el menú Archivo, seleccione Guardar todo.

Modificar los métodos que incluyen la persistencia de Session

Si ha terminado el tutorial anterior, Leer y configurar parámetros discretos, y ha incluido la persistenciade Session, realice los siguientes procedimientos. De lo contrario, continúe con Modificar los métodosque excluyen la persistencia de Session.

Page 46: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 46/80

Para modificar el método ConfigureCrystalReports() que incluye la persistencia de Session 

1. En el método ConfigureCrystalReports(), agregue un par de saltos de línea en el códigodespués de la línea que declara y crea una instancia de ArrayList.

2. En los saltos de línea, declare dos variables de cadena, startDate y endDate.

[Visual Basic]

Dim startDate As StringDim endDate As String

[C#]

string startDate;string endDate;

3. En el bloque condicional Not IsPostBack, escriba los valores predeterminados para lasvariables startDate y endDate.

[Visual Basic]

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

[C#]

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

4.En el bloque condicional Not IsPostBack, asigne las variables startDate y endDate a Session.

[Visual Basic]

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

[C#]

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

5. En el bloque Else, después de obtener la instancia de ArrayList de Session, obtenga las variablesstartDate y endDate de Session.

[Visual Basic]

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

[C#]

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

Page 47: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 47/80

Con este enfoque, se llega al final del bloque con las variables de fecha asignadas en cualquiercaso. De este modo se sigue la lógica paralela a la asignación de la variable ArrayList que haconfigurado en el tutorial anterior.

6. Debajo del código que llama a SetCurrentValuesForParameterField() , llame al métodoSetDateRangeForOrders()y pásele la instancia de ParameterFields y las variables startDate y

endDate.

[Visual Basic]

SetDateRangeForOrders(myParameterFields, startDate, endDate)

[C#]

SetDateRangeForOrders(parameterFields, startDate, endDate);

7. Desde el menú Archivo, seleccione Guardar todo.

A continuación, modificará el método de evento redisplay_Click.

Para modificar el método redisplay_Click() que incluye la persistencia de Session 

1. En el método de evento redisplay_Click(), agregue un par de saltos de línea en el códigodespués de la línea que asigna la instancia de ArrayList a Session.

2. En los saltos de línea, asigne la propiedad Text del TextBox orderStartDate y orderEndDate avariables de Session.

[Visual Basic]

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

[C#]

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

3. Desde el menú Archivo, seleccione Guardar todo.

Se recuperan y aplican estos valores de startDate y endDate Session cuando se llama al métodoConfigureCrystalReports().

Ahora estará preparado para generar y ejecutar el proyecto para verificar que los valores TextBoxrestablecen el parámetro de rango del subinforme.

Continúe con Probar el parámetro de subinforme.

Probar el parámetro de subinforme

 Ya está preparado para probar la configuración del parámetro de subinforme desde los valores TextBox.

Para probar la configuración del parámetro de subinforme 

Page 48: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 48/80

1. En el menú Crear, seleccione 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 ListBox, presione la tecla CTRL mientras hace clic para seleccionar al menos cuatrociudades diferentes en la lista.

5. En el control TextBox startDate, escriba "1/1/1997".

6. En el control TextBox endDate, escriba "31/8/1997".

7. Haga clic en el 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 enlas ciudades de la lista que acaba de seleccionar, así como un subinforme que muestra lospedidos del rango de fechas especificado anteriormente.

8. En el control CrystalReportViewer, aumente el nivel de Zoom al 125%.

La página se recargará al 125% de zoom. Se conservan los valores que están seleccionados paraambas ciudades y el rango de fechas de pedido.

9. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Continúe con Conclusión.

Conclusión

Ha modificado correctamente el proyecto del tutorial para utilizar un informe que contiene unsubinforme y ha establecido un rango de fechas de pedidos en el parámetro de rango que se crea en elsubinforme.

Tutorial: Filtrar datos con fórmulas de selección

En este tutorial, aprenderá a usar las fórmulas de selección para filtrar los registros que desee mostraren un informe de Crystal.

Haga clic en el vínculo adecuado para pasar a esa sección:

• Introducción

Page 49: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 49/80

• 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 deCrystal. Para escribir fórmulas de selección, puede usar las sintaxis Basic y Crystal. Para obtener másinformación sobre cómo se escriben las fórmulas de selección, vea Referencia de fórmulas.

En este tutorial, va a crear una fórmula de selección para filtrar los registros de los clientes cuyo campoVentas del año pasado es mayor que un valor especificado y el campo Nombre del cliente se comparacon otra cadena. Se utiliza un control ListBox con el fin de seleccionar un operador de comparación parael campo Nombre del cliente. Puede elegir que se muestren los nombres de los clientes que son igualesa, menores que, mayores que, menores o iguales que, iguales o mayores que o que no son iguales queel valor de cadena especificado.

La fórmula se pasa como variable de cadena a la propiedad SelectionFormula de la claseCrystalReportViewer. Una vez establecida la propiedad, el informe de Crystal que enlaza con el controlCrystalReportViewer se filtra antes de mostrarse.

Continúe con Crear un informe con una fórmula de selección.

Crear un informe con una fórmula de selección

En esta sección, va a crear un informe que obtenga su información de la base de datos de ejemplo deMicrosoft Access que se incluye con Crystal Reports.

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 deproyectos. La Configuración de proyectos contiene referencias específicas a espacios de nombres yconfiguración de códigos necesarios para este procedimiento, y éste no se podrá completar sin dichaconfiguración. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasosde Configuración de proyectos.

1. En Explorador de soluciones, haga clic con el botón derecho en el nombre de proyecto ennegrita, elija Agregar y, a continuación, haga clic en Agregar nuevo elemento.

2. En el cuadro de diálogo Agregar nuevo elemento, en la vista Plantillas, seleccione la plantillaCrystal Report.

3. En el campo Nombre, especifique el nombre "CustomersBySalesName.rpt" y haga clic enAgregar.

Nota En Visual Studio .NET 2002 o 2003, el botón se denomina Abrir.

Si no se ha registrado anteriormente, se le pedirá que se registre. Para saber cómo registrarse,vea Registro y código de clave de Crystal Reports.

4. En el panel Crear un nuevo documento de Crystal Report del cuadro de diálogo Galería deCrystal Report, seleccione Usar asistente de informes.

5. En el panel Elegir un Asistente, seleccione Estándar y, a continuación, haga clic en Aceptar.

Page 50: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 50/80

6. En el panel Orígenes de datos disponibles de la ventana Asistente para la creación deinformes estándar, expanda la carpeta Crear nueva conexión.

Nota En Visual Studio .NET 2002 o 2003, donde Crystal Reports no se ha actualizado a laversión completa, no existe la carpeta Crear nueva conexión; el contenido se mostrará en el nivelsuperior.

7. En la subcarpeta que se abre, expanda la carpeta ODBC (RDO).

8. En la ventana ODBC (RDO), seleccione la entrada DSN de ODBC correcta para su versión deCrystal Reports, como se explica en Entrada DSN de ODBC para la base de datos de ejemploXtreme y, a continuación, haga clic en Finalizar.

Se expandirá la carpeta ODBC (RDO) y mostrará la base de datos de ejemplo Xtreme.

9. Expanda el nodo Tablas y, a continuación, haga doble clic en la tabla Cliente para mover latabla al panel Tablas seleccionadas y, a continuación, haga clic en Siguiente.

10. Expanda la tabla Cliente y, a continuación, haga clic y presione CTRL en Nombre del cliente yVentas del año pasado.

11. Haga clic en el símbolo > para mover estos campos al panel Campos para mostrar y, acontinuación, haga clic en Siguiente.

12. En el panel Campos disponibles, en Campos del informe, haga doble clic enCustomer.Customer Name, haga doble clic en el símbolo > para mover el campo al panelAgrupar por y, a continuación, haga clic en Finalizar.

Se crea el informe CustomersBySalesName y se carga en la ventana principal de Visual Studio.

Después, cree una fórmula de selección para filtrar los datos basándose en el valor del campo Ventas delaño pasado.

Para crear una fórmula de selección basada en las ventas del año pasado 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código para ver la clase de código subyacente de este formulario

Web Forms o Windows Forms.3. En los sitios Web, en el método ConfigureCrystalReports() (el que ha creado en

Configuración de proyectos), cree un bloque condicional Not IsPostBack.

[Visual Basic]

If Not IsPostBack Then

End If

[C#]

if(!IsPostBack){}

Nota El bloque condicional Not IsPostBack encapsula el código que se debería ejecutar sólola primera vez que se carga la página.

4. En los sitios Web, agregue las siguientes líneas de código en el bloque condicional Not

IsPostBack.

Page 51: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 51/80

En los proyectos de Windows, agregue el código al método ConfigureCrystalReports(), sin elbloque condicional Not IsPostBack.

a. Especifique la fórmula para seleccionar sólo los registros cuyo valor del campo Ventas delaño pasado sea mayor que $11000,00 y cuyos nombres de clientes empiecen por la letra"A".

[Visual Basic]

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

[C#]

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

b. Asigne la cadena de la fórmula de selección a la propiedad SelectionFormula del controlCrystalReportViewer.

[Visual Basic]

myCrystalReportViewer.SelectionFormula = mySelectFormula

[C#]

crystalReportViewer.SelectionFormula = selectFormula;

Continúe con Enlazar el informe.

Enlazar el informe

Cuando siguió las instrucciones de la sección Configuración de proyectos para preparase para estetutorial, colocó un control CrystalReportViewer en el formulario Web Forms o Windows Forms. En lospasos anteriores, agregó un informe CustomersBySalesName y una fórmula de selección al proyecto.

En esta sección, va a enlazar la ruta de directorio de archivos del informe CustomersBySalesName alcontrol CrystalReportViewer. Después, va a comprobar si el informe se muestra correctamente con losregistros filtrados por la fórmula de selección.

Para enlazar la ruta de directorio de archivos del informe CustomersBySalesName al control

CrystalReportViewer 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código para ver la clase de código subyacente de este formulario

Web Forms o Windows Forms.3. Busque el método ConfigureCrystalReports() , que ha creado en Configuración de proyectos.4. Declare una variable de cadena, llámela reportPath y asígnele una ruta en tiempo de ejecución al

informe local. Esta ruta se determina de forma diferente para los sitios Web y los proyectos paraWindows:

• Para un sitio Web, pase el nombre del archivo de informe local como un parámetro decadena en el método Server.MapPath() . Esto asigna el informe local a la ruta deldirectorio de archivos de la unidad de disco duro en tiempo de ejecución.

[Visual Basic]

Page 52: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 52/80

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

[C#]

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

• Para un proyecto para Windows, concatene la propiedad Application.StartupPathconuna barra invertida y el nombre del archivo de informe local. Esto asigna el informe almismo directorio del archivo ejecutable de Windows.

Nota En la fase de compilación se copiará el informe al directorio que contiene elarchivo 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 propiedadReportSource 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, acontinuación, copie el informe en dicho subdirectorio.

Nota Para que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo deejecución, el informe deberá estar almacenado en el mismo directorio que el archivo ejecutablede 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 hainiciado la depuración, aparecerá un cuadro de diálogo en el que se indica que el archivoWeb.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 BicycleCompany, Arsenault et Maurier y Athens Bicycle Co.

5. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Page 53: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 53/80

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 elvalor 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 vana 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íneasaproximadamente 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 delas 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 estospasos:

Establezca el valor de ID (o Nombre) en "lastYearsSales".

Establezca el valor de Text en "11000,00".

2. Si está desarrollando un sitio Web, en la segunda línea, escriba "Mostrar el nombre de losclientes".3. Si está desarrollando un proyecto de Windows, realice las siguientes acciones:

a. En Cuadro de herramientas, arrastre un control Label hasta la segunda línea delformulario.

 b. En la ventana Propiedades, establezca el valor de la propiedad Text en "Mostrar elnombre de los clientes".

6. En Cuadro de herramientas, arrastre un control DropDownList (ComboBox para un proyectode Windows) hasta la derecha del texto.

7. Seleccione el control DropDownList (ComboBox) y, a continuación, en la ventana

Propiedades, establezca el valor de ID (o Nombre) en "selectOperatorList".

Page 54: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 54/80

8. En Cuadro de herramientas, arrastre un control TextBox hasta la derecha del controlDropDownList.

9. Seleccione el control TextBox y, a continuación, desde la ventana Propiedades, siga estospasos:

Establezca el valor de ID (o Nombre) en "customerName". Establezca el valor de Text en "A".2. En el Cuadro de texto, arrastre un control Button hasta la tercera línea del formulario y sobre el

control CrystalReportViewer.3. 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".

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ódigosubyacente.

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 generadoautomá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 loscontroles 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 delastYearsSales. Para el campo Nombre del cliente, utilice el valor del control TextBox decustomerName.

[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

Page 55: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 55/80

[C#]

crystalReportViewer.SelectionFormula = selectFormula;

6. Vuelva a enlazar el informe CustomerBySalesName a la propiedad ReportSource del controlCrystalReportViewer.

Nota La ruta de directorio de archivos que se muestra aquí es la de un proyecto de Visual Studio2005. [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\MyDocuments\Visual Studio\Projects\ProjectName\CustomersBySalesName.rpt"

[C#]

crystalReportViewer.ReportSource = "C:\\Documents and Settings\\UserName\\MyDocuments\\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 deBicicletas El Pardo.

Se muestran sólo los registros de clientes con nombres mayores que "SAB" y ventas del añopasado 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.

Page 56: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 56/80

Utilizar un control DropDownList para modificar la fórmula deselección

En esta sección, va a llenar el control DropDownList con operadores de comparación. Va a crear unaenumeración que contiene los operadores de comparación.

El control DropDownList selecciona si desea mostrar los nombres de los clientes que sean iguales a,menor que, mayor que, menor o igual que, mayor o igual o no es igual que el texto especificado en elcontrol TextBox.

En el método de evento redisplay_Click(), va a modificar la cadena actualmente asignada a la propiedadSelectionFormula del control CrystalReportViewer.

Para crear la enumeración CeComparisonOperator 

1. En Explorador de soluciones, haga clic con el botón derecho en el nombre de proyecto ennegrita, elija Agregar y, a continuación, haga clic en Agregar nuevo elemento.2. En el cuadro de diálogo Agregar nuevo elemento, seleccione Clase desde la vista Plantillas.

3. En el campo Nombre, escriba "CeComparisonOperator" y, a continuación, haga clic en Agregar.

Nota En Visual Studio 2005, puede que se le pida que coloque esta clase en un directorio decódigo. Haga clic en el botón Sí.

4. En la firma de clase, cambie la palabra clase por enum para convertir la clase en unaenumeración.

En un proyecto de Windows de C# para Visual Studio 2005, también debe cambiar el espacio de

nombres al nombre del proyecto.

Nota En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase aenumeración.

5. Puesto que las enumeraciones no tienen constructores, elimine el método constructorpredeterminado que se proporciona en la versión de C# del código.

6. En la enumeración, especifique los valores:

[Visual Basic]

EqualTo

LessThanGreaterThanLessThan_or_EqualToGreaterThan_or_EqualToNot_EqualTo

[C#]

EqualTo,LessThan,GreaterThan,LessThan_or_EqualTo,GreaterThan_or_EqualTo,

Not_EqualTo

Page 57: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 57/80

Los siguientes procedimientos explican cómo enlazar la enumeración CeComparisonOperator al controlDropDownList de un sitio Web o un proyecto para Windows. Siga las instrucciones de uno de lossiguientes procedimientos de varios pasos.

Para llenar el control DropDownList desde la enumeración CeComparisonOperator para unsitio Web 

1. Abra el formulario Web Forms.2. En el menú Ver, haga clic en Código.

3. En el bloque condicional Not IsPostBack del método ConfigureCrystalReports() , delantede la declaración de cadena de la fórmula de selección, establezca el valor de la propiedadDataSource del control DropDownList en los valores de la enumeración CeComparisonOperator.

[Visual Basic]

selectOperatorList.DataSource =System.Enum.GetValues(GetType(CeComparisonOperator))

[C#]

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

4. Ahora, llame al método DataBind() del control DropDownList de selectOperatorList paraenlazar los valores al control.

[Visual Basic]

selectOperatorList.DataBind()

[C#]

selectOperatorList.DataBind();

Para llenar el control DropDownList desde la enumeración CeComparisonOperator para unproyecto de Windows 

1. Abra el formulario Windows Forms.2. En el menú Ver, haga clic en Código.

3. En el método ConfigureCrystalReports(), delante de la declaración de cadena de la fórmulade selección, establezca el valor de la propiedad DataSource del control ComboBox deselectOperatorList en los valores de la enumeración CeComparisonOperator.

[Visual Basic]

selectOperatorList.DataSource =System.Enum.GetValues(GetType(CeComparisonOperator))

[C#]

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

Después, va a crear el método de ayuda GetSelectedCompareOperator() para que devuelva el índiceseleccionado como cadena que representa un signo de operador de comparación.

Page 58: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 58/80

Para crear el método de ayuda GetSelectedCompareOperator() 

1. En la parte inferior de la clase, cree un método de ayuda privado denominadoGetSelectedCompareOperator() que devuelva una variable de cadena.

[Visual Basic]

Private Function GetSelectedCompareOperator() As String

End Function

[C#]

private string GetSelectedCompareOperator(){}

2. En el método, cree una instrucción "Select Case" [Visual Basic] o "switch" [C#] quehaga referencia a los miembros de la enumeración CeComparisonOperator y devuelva el signodel operador de comparación como variable de cadena.

[Visual Basic]

Select Case selectOperatorList.SelectedIndexCase CeComparisonOperator.EqualTo

return "="Case CeComparisonOperator.LessThan

return "<"Case CeComparisonOperator.GreaterThan

return ">"

Case CeComparisonOperator.LessThan_or_EqualToreturn "<="

Case CeComparisonOperator.GreaterThan_or_EqualToreturn ">="

Case CeComparisonOperator.Not_EqualToreturn "<>"

Case Elsereturn "="

End Select

[C#]

switch ((CeComparisonOperator)selectOperatorList.SelectedIndex)

{case CeComparisonOperator.EqualTo:

return "=";case CeComparisonOperator.LessThan:

return "<";case CeComparisonOperator.GreaterThan:

return ">";case CeComparisonOperator.LessThan_or_EqualTo:

return "<=";case CeComparisonOperator.GreaterThan_or_EqualTo:

return ">=";case CeComparisonOperator.Not_EqualTo:

return "<>";

default:return "=";

}

Page 59: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 59/80

En el método de evento redisplay_Click(), se utiliza actualmente un signo "mayor que" (">") para laselección del campo Nombre del cliente. A continuación, aprenderá a cambiar el signo al operador decomparación seleccionado desde el control DropDownList. El signo seleccionado se devuelve comocadena al llamar al método de ayuda GetSelectedCompareOperator().

Para modificar el operador de comparación de Nombre del cliente asignado a la propiedad

SelectionFormula 

1. En la parte superior del método de evento redisplay_Click(), llame al método de ayudaGetSelectedCompareOperator() y asigne el resultado a una variable de cadena.

[Visual Basic]

Dim mySelectedOperator As String = GetSelectedCompareOperator()

[C#]

string selectedOperator = GetSelectedCompareOperator();

2. Para la variable de cadena de la fórmula de selección, reemplace el signo "mayor que" (">") porla cadena del operador seleccionado.

[Visual Basic]

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

[C#]

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

Ha creado una fórmula de selección que depende de los valores especificados para el campo Ventas delaño pasado y el campo Nombre del cliente.

Ahora puede generar y probar la fórmula de selección.

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. En el menú Depurar, haga clic en Iniciar.

a. En el control TextBox de lastYearsSales, escriba "40000".b. En el control TextBox de customerName, escriba "Athens Bicycle Co.".c. En DropDownList, seleccione "LessThan".d. Haga clic en Volver a mostrar el informe.

El informe de Crystal muestra dos registros de clientes: Alley Cat Cycles y Ankara BicycleCompany.

4. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

Page 60: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 60/80

Continúe con Conclusión.

Conclusión

Ha creado correctamente una fórmula de selección para modificar los registros mostrados en el informe

de Crystal. Ha aprendido a leer los valores de los controles TextBox y DropDownList para modificar lafórmula de selección. También ha aprendido a crear una enumeración de operadores de comparaciónque le permite seleccionar la forma en la que desea filtrar los datos.

Tutorial: Personalizar el controlCrystalReportViewer

En este tutorial, aprenderá a personalizar la presentación del informe. Asimismo, aprenderá aseleccionar un número de página o un factor de zoom específicos y a buscar texto en el informe.

Page 61: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 61/80

En un sitio Web, va a aprender a seleccionar un modo de impresión y a personalizar un borde.

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 personalizar el aspecto del control CrystalReportViewer mediante el uso delas propiedades desde su clase subyacente.

Asimismo, aprenderá a utilizar los métodos de selección de página, zoom, búsqueda e impresión.

Para comenzar, va a aprender a personalizar la barra de herramientas de CrystalReportViewer. Necesitaun control ListBox que almacene las propiedades disponibles para la barra de herramientas. Sólo laspropiedades seleccionadas desde este control se muestran en la barra de herramientas deCrystalReportViewer.

A continuación, agregará un segundo control ListBox para almacenar los elementos del informe. En lossitios Web, también puede elegir mostrar todas las páginas del informe como una sola página o comopáginas separadas.

Aprenderá a personalizar el color de fondo mediante un control DropDownList.

Después, aprenderá a seleccionar la página del informe que desee ver. Necesita un control TextBox paraespecificar el número de página y un control Button para volver a cargar el informe en la páginaseleccionada. Necesita, también, los controles TextBox y Button para modificar el factor de zoom y parabuscar texto en el informe.

En los sitios Web, tiene acceso a propiedades del control CrystalReportViewer que no están disponiblesen los proyectos para Windows: una propiedad para elegir el modo de impresión y otras propiedadespara cambiar el ancho, estilo y color de los bordes.

Continúe con Crear una tabla de configuración personalizada.

Crear una tabla de configuración personalizada

Page 62: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 62/80

En esta sección, creará y configurará una tabla (en un sitio Web) o un control TableLayoutPanel (en unproyecto para Windows) para albergar los distintos controles que forman la tabla de configuraciónpersonalizada.

Debido a que los sitios Web y los proyectos para Windows usan un tipo de tabla diferente, seleccione elprocedimiento con pasos que corresponda a su sitio Web o proyecto para Windows.

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 deproyectos. La Configuración de proyectos contiene referencias específicas a espacios de nombres yconfiguración de códigos necesarios para este procedimiento, y éste no se podrá completar sin dichaconfiguración. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasosde Configuración de proyectos.

1. Abra la página Default.aspx (el formulario Web Forms) en la vista Diseño.

2. Haga clic en el control CrystalReportViewer para seleccionarlo.

3. Presione la flecha izquierda para mover el cursor a la izquierda del control

CrystalReportViewer y presione Intro.4. Presione la flecha arriba para mover el cursor a la línea vacía situada encima del control

CrystalReportViewer.5. En el menú Diseño, haga clic en Insertar tabla.

6. En el cuadro de diálogo Insertar tabla, seleccione el botón de radio Personalizado.

Nota El botón de radio Personalizado ya está seleccionado de forma predeterminada.

7. En el panel Diseño, active la casilla de verificación Ancho y deje el valor en un 100%.

8. Aumente la cuenta de Filas a 6 y la de Columnas a 4.

9. En el panel Atributos, active la casilla de verificación Borde, y aumente la cuenta a 1.

10. Haga clic en el botón Propiedades de celda...11. En el cuadro de diálogo Propiedades de celda, en el panel Diseño, establezca el cuadro

combinado Alineación vertical a Superior.12. Active la casilla de verificación Sin ajuste de línea y, a continuación, haga clic en Aceptar.

13. Haga clic en Aceptar de nuevo para cerrar el cuadro de diálogo Insertar tabla.

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 deproyectos. La Configuración de proyectos contiene referencias específicas a espacios de nombres yconfiguración de códigos necesarios para este procedimiento, y éste no se podrá completar sin dichaconfiguración. Por lo tanto, antes de que empiece con este procedimiento, primero debe seguir los pasosde Configuración de proyectos.

1. Abra el formulario Windows Forms en la vista Diseño.2. Haga clic en la barra de título Formulario para seleccionar todo el formulario y, a continuación,

arrastre la esquina inferior derecha del formulario para ampliarlo de modo que llene el áreaprincipal.

3. Haga clic en el control CrystalReportViewer para seleccionarlo.

4. En la ventana Propiedades, establezca Dock en "Bottom".

5. En la ventana Propiedades, establezca Anchor en "Top, Bottom, Left, Right".

Page 63: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 63/80

6. En Cuadro de herramientas, arrastre un control TableLayoutPanel hasta la parte superiorizquierda del formulario Windows Forms.

Aparecerá un control TableLayoutPanel, mostrando dos columnas y dos filas.

7.Si el panel Tarea inteligente no está abierto, haga clic en el botón  triangular de la esquinasuperior derecha del control TableLayoutPanel.

Se abrirá el panel Tarea inteligente denominado "TableLayoutPanel Tasks".

8. En la etiqueta TableLayoutPanel Tasks, haga clic en el vínculo Editar filas y columnas.

9. En el cuadro de diálogo Estilos de columna y fila, en el cuadro combinado Tipo de miembro,seleccione Columnas.

10. Haga clic en Agregar hasta que tenga un total de cuatro columnas.11. Para cada columna, realice lo siguiente:

a. Seleccione la columna. b. En el panel Tipo de tamaño seleccione Porcentaje.

c. Establezca cada valor al 25%.12. En el cuadro combinado Tipo de miembro, seleccione Columnas.

13. Haga clic en Agregar hasta que tenga un total de cinco filas.

Nota La tabla de un proyecto para Windows requiere una fila menos que la tabla de un sitioWeb, porque hay menos opciones configurables en un control CrystalReportViewer de unproyecto para Windows.

14. Para cada fila, realice lo siguiente:a. Seleccione la fila. b. En el panel Tipo de tamaño seleccione Porcentaje.c. Establezca el valor de la primera fila al 40%, y para las filas subsiguientes establezca el

valor al 15%.

Nota (1 x 40%) y (4 x 15%) = 100% de espacio disponible.

15. Haga clic en Aceptar.

16. Cierre la etiqueta TableLayoutPanel Tasks.

17. Arrastre la esquina inferior derecha del control TableLayoutPanel para agrandar la tabla hastaque llene el espacio creado encima del control CrystalReportViewer.

Ahora ya estará preparado para agregar controles personalizados a esta tabla para el proyecto paraWindows.

Continúe con Elementos de barra de herramientas y de informe del control CrystalReportViewer

Elementos de barra de herramientas y de informe del controlCrystalReportViewer

En este tutorial manipulará los distintos elementos de barra de herramientas y de informe del controlCrystalReportViewer.

Elementos de visor

Los elementos predeterminados del control CrystalReportViewer varían ligeramente para los sitios Web ypara los proyectos para Windows:

•  Tanto para sitios Web como para proyectos para Windows:

Page 64: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 64/80

• Barra de herramientas: muestra una barra de herramientas encima del área principal delinforme. Los elementos individuales dentro de la barra de herramientas se controlan porseparado.

Nota Para obtener más información, vea la sección siguiente relativa a los elementos debarra de herramientas.

• Árbol de grupo: muestra los encabezados de cada grupo del informe, de forma parecidaal árbol de grupo de un informe, que aparece en el panel de la columna izquierda de éste.

• Sólo para sitios Web:• Página principal: muestra el informe en el área principal de la página.• Habilitar páginas separadas: determina si el informe se muestra en una única página Web

o como páginas formateadas independientes.• Sólo para proyectos para Windows:

• Barra de estado: muestra el número de página actual y otra información sobre el informe,en la parte inferior del área del informe.

Elementos de la barra de herramientas

Los elementos predeterminados de la barra de herramientas varían ligeramente para los sitios Web ypara 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.• Exportar: guarda el informe de Crystal en otro formato de archivo, como los archivos RPT,

PDF, DOC, XLS o RTF.• Imprimir: imprime el informe de Crystal en un archivo PDF o llama al cuadro de diálogo

Imprimir.• Exploración de páginas: le permite seleccionar la página siguiente, anterior, última o

primera para verla.

• 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.• Factor de zoom: le permite seleccionar el factor de zoom del informe.

• Sólo para sitios Web:• Lista de vista (sólo para sitios Web): elige la vista que se va a mostrar del informe, (por

ejemplo, subinformes, etc.).• 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.

• Sólo para proyectos para Windows:• Actualizar: vuelve a mostrar el informe.• Cerrar vista actual: cierra la vista actual del informe si están abiertas varias vistas.

Continúe con Agregar un mecanismo para mostrar u ocultar los elementos de barra de herramientas yde informe

Agregar un mecanismo para mostrar u ocultar los elementos de barra de herramientas yde informe

En esta sección aprenderá a agregar un mecanismo que determina qué elementos de la barra deherramientas CrystalReportViewer se muestran u ocultan.

Empezará agregando los controles ListBox y Button a la tabla en el formulario Web Forms o WindowsForms.

A continuación, creará dos enumeraciones que muestran una lista de los elementos del informe y de labarra de herramientas, y llenará cada control ListBox con los valores de una de las enumeraciones.

Page 65: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 65/80

Después, codificará el evento de clic del control Button para actualizar los elementos de la barra deherramientas.

Dentro del controlador de eventos las propiedades de la clase CrystalReportViewer se establecenbasándose en los dos controles ListBox. Si se selecciona un elemento de ListBox, la propiedad de labarra de herramientas se establece en True.

Más tarde en este tutorial, se utilizará el control Button para actualizar selecciones adicionales.

En tiempo de ejecución, puede seleccionar qué elementos del informe y de la barra de herramientasdesea mostrar.

Empezará agregando los controles a la tabla en la parte superior del formulario Web Forms o WindowsForms.

Para agregar los controles ListBox y Button 

1. Abra el formulario Web Forms o Windows Forms en la vista Diseño.

2. En el Cuadro de herramientas, arrastre un control Label a la primera fila y la columna uno dela tabla.3. Seleccione el control Label y, a continuación, en la ventana Propiedades, establezca la

propiedad Text en "Seleccionar elementos de informe para mostrar".4. En el Cuadro de herramientas, arrastre un control ListBox a la primera fila y la columna dos

de la tabla.5. Seleccione el control ListBox y, a continuación, desde la ventana Propiedades, siga estos

pasos:• Establezca el ID a "listCRVReport."• Establezca SelectionMode en "Multiple" (en un proyecto de Windows, "MultiExtended").

6. En el Cuadro de herramientas, arrastre un segundo control Label a la primera fila y lacolumna tres de la tabla.

7. Seleccione el control Label y, a continuación, en la ventana Propiedades, establezca lapropiedad Text en "Seleccionar elementos de barra de herramientas para mostrar".

8. En el Cuadro de herramientas, arrastre un control Button a la tercera fila y la columna uno dela tabla.

9. Haga clic en el control Button para seleccionarlo.

10. En la ventana Propiedades:• Establezca ID en "redisplay".• Establezca Text como "Volver a mostrar el informe".

11. En un proyecto para Windows, ajuste el tamaño del control Button para mostrar el textocompleto del botón.

Los pasos siguientes varían, dependiendo de si se crea un sitio Web o un proyecto para Windows. Elija

uno de los temas siguientes:

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

Configurar los controles ListBox de un proyecto para Windows

Esta sección explica cómo configurar los controles ListBox de un proyecto para Windows. Si va a crear unsitio Web, vea Configurar los controles ListBox de un sitio Web.

Ahora puede crear el controlador de eventos de clic para el control Button y, a continuación, agregarcódigo a este controlador de eventos. El controlador de eventos define varios valores booleanos para las

Page 66: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 66/80

propiedades de barra de herramientas de la clase CrystalReportViewer basándose en las selecciones delusuario en el control ListBox.

Antes de crear este controlador de eventos, deberá crear dos enumeraciones: CeWinCRVReportOptions yCeWinCRVToolbarOptions.

Estas enumeraciones proporcionan una lista de elementos de informe y de barra de herramientasseleccionables.

Para crear la enumeración CeWinCRVReportOptions 

1. En Explorador de soluciones, haga clic con el botón derecho en el nombre de proyecto ennegrita, elija Agregar y, a continuación, haga clic en Clase.

2. En el cuadro de diálogo Agregar nuevo elemento, en el campo Nombre, escriba"CeWinCRVReportOptions" y, a continuación, haga clic en Agregar.

Nota En Visual Studio 2005, puede que se le pida que coloque esta clase en un directorioApp_Code. Haga clic en el botón Sí.

3. En la firma de clase, cambie la palabra clase por "enum" para convertir la clase en unaenumeración.

Nota En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase aenumeración.

4. Puesto que las enumeraciones no tienen constructores, elimine el método constructorpredeterminado que se proporciona en la versión de C# del código.

5. En la enumeración, especifique los valores:

[Visual Basic]

ToolbarGroup_TreeStatus_Bar

[C#]

Toolbar,Group_Tree,Status_Bar

6. En el menú Archivo, haga clic en Guardar todo.

Para crear la enumeración CeWinCRVToolbarOptions 

1. En Explorador de soluciones, haga clic con el botón derecho en el nombre de proyecto ennegrita, elija Agregar y, a continuación, haga clic en Clase.

2. En el cuadro de diálogo Agregar nuevo elemento, en el campo Nombre, escriba"CeWinCRVToolbarOptions" y, a continuación, haga clic en Agregar.

Nota En Visual Studio 2005, puede que se le pida que coloque esta clase en un directorioApp_Code. Haga clic en el botón Sí.

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

enumeración.

Page 67: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 67/80

Nota En Visual Basic, recuerde cambiar las firmas tanto de apertura como de cierre de la clase aenumeración.

4. Puesto que las enumeraciones no tienen constructores, elimine el método constructorpredeterminado que se proporciona en la versión de C# del código.

5. En la enumeración, especifique los valores:

[Visual Basic]

Page_Navigation_ButtonGo_to_Page_ButtonClose_View_ButtonPrint_ButtonRefresh_ButtonExport_ButtonGroup_Tree_ButtonZoom_ButtonSearch_Button

[C#]

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

6. En el menú Archivo, haga clic en Guardar todo.

Ahora llene los controles ListBox con los valores de la enumeración, que representan las propiedadesdisponibles para la barra de herramientas de CrystalReportViewer.

Para llenar los controles ListBox a partir de las enumeraciones 

1. Abra el formulario Windows Forms.2. En el menú Ver, haga clic en Código.

3. En el método ConfigureCrystalReports(), establezca el valor de la propiedad DataSource delcontrol ListBox de listCRVReport en los valores de la enumeración CeWinCRVReportOptions.

Nota El método ConfigureCrystalReports() lo creó durante Configuración de proyectos alcomienzo de este tutorial. Para completar este tutorial correctamente, deberá empezarrealizando Configuración de proyectos.

[Visual Basic]

listCRVReport.DataSource =System.Enum.GetValues(GetType(CeWinCRVReportOptions))

[C#]

listCRVReport.DataSource =

System.Enum.GetValues(typeof(CeWinCRVReportOptions));

Page 68: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 68/80

4. Establezca el valor de la propiedad DataSource del control ListBox de listCRVToolbar en losvalores de la enumeración CeWinCRVToolbarOptions.

[Visual Basic]

listCRVToolbar.DataSource =System.Enum.GetValues(GetType(CeWinCRVToolbarOptions))

[C#]

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

5. Enlace el archivo Chart.rpt a la propiedad ReportSource del control CrystalReportViewer. Paraobtener información sobre informes de muestra, vea Directorio de informes de muestra.

[Visual Basic]

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

[C#]

crystalReportViewer.ReportSource = "C:\\Program Files\\Microsoft VisualStudio 8\\Crystal Reports\\Samples\\es\\Reports\\FeatureExamples\\Chart.rpt";

Ahora puede agregar código al evento de clic del control Button. El método de clic debe establecer losvalores booleanos de los elementos de barra de herramientas y de informe de la claseCrystalReportViewer. Si se selecciona un elemento, el valor booleano establece en True, y se muestra el

elemento de barra de herramientas o de informe. Si no se selecciona ninguna propiedad, el valorbooleano se establece en False y no se muestra el elemento de barra de herramientas o de informe.

Para codificar el control Button que vuelve a mostrar el informe de un proyecto de Windows 

1. Abra el formulario Windows Forms.2. En el menú Ver, haga clic en Diseñador.3. Haga doble clic en el control Button que vuelve a mostrar el informe.

Aparece la clase de código subyacente del informe y muestra que se ha generadoautomáticamente un método de evento redisplay_Click().

4. En el método de evento redisplay_Click(), llame al método GetSelected() y pase todos loselementos desde ListBox. El método GetSelected() devuelve un valor booleano paraestablecer las propiedades de barra de herramientas o de informe de CrystalReportViewer.

Nota Los elementos de barra de herramientas y de informe de CrystalReportViewer seestablecen a sus valores correspondientes en las enumeraciones CeWinCRVReportOptions yCeWinCRVToolbarOptions.

[Visual Basic]

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

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

Page 69: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 69/80

myCrystalReportViewer.ShowCloseButton = listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Close_View_Button)myCrystalReportViewer.ShowPrintButton =listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Print_Button)myCrystalReportViewer.ShowRefreshButton =listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Refresh_Button)

myCrystalReportViewer.ShowExportButton =listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Export_Button)myCrystalReportViewer.ShowGroupTreeButton =listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Group_Tree_Button)myCrystalReportViewer.ShowZoomButton =listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Zoom_Button)myCrystalReportViewer.ShowTextSearchButton =listCRVToolbar.GetSelected(CeWinCRVToolbarOptions.Search_Button)

myCrystalReportViewer.DisplayToolbar =listCRVReport.GetSelected(CeWinCRVReportOptions.Toolbar)myCrystalReportViewer.DisplayGroupTree =listCRVReport.GetSelected(CeWinCRVReportOptions.Group_Tree)

myCrystalReportViewer.DisplayStatusBar =listCRVReport.GetSelected(CeWinCRVReportOptions.Status_Bar)

[C#]

crystalReportViewer.ShowPageNavigateButtons =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Page_Navigation_Button));crystalReportViewer.ShowGotoPageButton =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Go_to_Page_Button));crystalReportViewer.ShowCloseButton = listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Close_View_Button));

crystalReportViewer.ShowPrintButton =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Print_Button));crystalReportViewer.ShowRefreshButton =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Refresh_Button));crystalReportViewer.ShowExportButton =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Export_Button));crystalReportViewer.ShowGroupTreeButton =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Group_Tree_Button));crystalReportViewer.ShowZoomButton =

listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Zoom_Button));crystalReportViewer.ShowTextSearchButton =listCRVToolbar.GetSelected(Convert.ToInt32(CeWinCRVToolbarOptions.Search_Button));

crystalReportViewer.DisplayToolbar =listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Toolbar));crystalReportViewer.DisplayGroupTree =listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Group_Tree));crystalReportViewer.DisplayStatusBar =listCRVReport.GetSelected(Convert.ToInt32(CeWinCRVReportOptions.Status_Bar));

 Ya está preparado para generar y ejecutar el proyecto con el fin de personalizar la barra deherramientas de CrystalReportViewer.

Page 70: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 70/80

Para probar el control Button que vuelve a mostrar el informe 

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.

Los controles ListBox de listCRVReport y listCRVToolbar muestran una lista completa de opcionesde barra de herramientas y de informe de CrystalReportViewer.

4. En el control ListBox de opciones de barra de herramientas, seleccione"Page_Navigation_Button", "Print_Button" y "Export_Button".

5. En el control ListBox de opciones de informe, seleccione "Toolbar", "Group_Tree" y "Main_Page".6. Haga clic en Volver a mostrar el informe.

La página se vuelve a cargar para mostrar un control CrystalReportViewer con una barra deherramientas, un árbol de grupos y una página principal visibles. Dentro de la barra deherramientas, sólo están visibles los botones Exploración de páginas, Imprimir y Exportar.

7. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración.

Continúe con Modificar el color de fondo del informe.

Modificar el color de fondo del informe

En esta sección, aprenderá a modificar el color de fondo del informe.

Para empezar, agregará un control DropDownList para la selección del color de fondo.

Para agregar controles para cambiar el color de fondo 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Diseñador.

3. En el Cuadro de herramientas, arrastre un control Label a la segunda fila y a la columna unode la tabla.

4. Seleccione el control Label y, a continuación, en la ventana Propiedades, establezca lapropiedad Text en "Seleccionar color de fondo".

5. En Cuadro de herramientas, arrastre un control DropDownList (para sitios Web) o un controlComboBox (para proyectos para Windows) a la segunda fila y a la columna dos de la tabla.

6. Seleccione el control DropDownList/ComboBox y, a continuación, en la ventana Propiedades,establezca el valor de ID/Nombre en "selectBackColor".

Ahora, debe agregar código al método ConfigureCrystalReports() para establecer los valorespredeterminados de la lista de colores de fondo y de las casillas de verificación de los componentes delinforme.

Para establecer los valores predeterminados de los controles 

1. Abra el formulario Web Forms o Windows Forms.2. En el menú Ver, haga clic en Código.

A continuación, en el método ConfigureCrystalReports(), agregue código para establecer losvalores predeterminados del control.

Page 71: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 71/80

Nota Si está creando un sitio Web, coloque estas líneas de código dentro del bloque condicionalNot IsPostBack. Si está creando un proyecto Windows, coloque estas líneas de código en elárea principal del método ConfigureCrystalReports().

3. Asigne la enumeración KnownColor a la propiedad DataSource del control DropDownList deselectBackColor.

[Visual Basic]

selectBackColor.DataSource = System.Enum.GetValues(GetType(KnownColor))

[C#]

selectBackColor.DataSource = System.Enum.GetValues(typeof(KnownColor));

4. En un sitio Web, enlace el origen de datos al control DropDownList de selectBackColor.

[Visual Basic]

selectBackColor.DataBind()

[C#]

selectBackColor.DataBind();

A continuación, agregue código al evento de clic Button para volver a mostrar el informe basándose enlas selecciones de selectBackColor y DropDownList.

Este código varía según se trate de un sitio Web o de un proyecto para Windows. Seleccione elprocedimiento apropiado a continuación para el sitio Web o el proyecto para Windows.

Para asignar la selección del color de fondo en un sitio Web 

1. Abra el formulario Web Forms.2. En el menú Ver, haga clic en Código.

3. Sobre la firma de clase, agregue una declaración "Imports" [Visual Basic] o "using" [C#]en la parte superior de la clase del espacio de nombres System.Drawing (si todavía no lo hadeclarado).

[Visual Basic]

Imports System.Drawing

[C#]

using System.Drawing;

4. En el controlador de eventos redisplay_Click(), agregue el siguiente código:

En el control DropDownList de selectBackColor, recupere el elemento seleccionado como cadenay páselo al método FromName() de la clase Color. Asigne el valor de Color a la propiedadBackColor del control CrystalReportViewer.

[Visual Basic]

Page 72: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 72/80

myCrystalReportViewer.BackColor =Color.FromName(selectBackColor.SelectedItem.Text)

[C#]

crystalReportViewer.BackColor =

Color.FromName(selectBackColor.SelectedItem.Text);

Ahora ya podrá probar el botón Volver a mostrar el informe. Pase a dicha sección, a continuación.

Para asignar la selección del color de fondo en un proyecto para Windows 

1. Abra el formulario Windows Forms.2. En el menú Ver, haga clic en Código.

3. Sobre la firma de clase, agregue una declaración "Imports" [Visual Basic] o "using" [C#]en la parte superior de la clase del espacio de nombres System.Drawing (si todavía no lo hadeclarado).

[Visual Basic]

Imports System.Drawing

[C#]

using System.Drawing;

4. En el controlador de eventos redisplay_Click(), agregue el siguiente código:

Desde el control ComboBox de selectBackColor, recupere el elemento seleccionado y

conviértalo en una instancia de KnownColor.

[Visual Basic]

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

[C#]

KnownColor selectedKnownColor = (KnownColor)selectBackColor.SelectedItem;

5. Cree un bloque condicional que compruebe que el color de fondo seleccionado no es

transparente.

[Visual Basic]

If Not mySelectedKnownColor = KnownColor.Transparent Then

End If

[C#]

if (selectedKnownColor != KnownColor.Transparent){}

Page 73: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 73/80

6. Dentro del bloque If, pase la instancia de KnownColor al método FromKnownName() de la claseSystem.Drawing.Color. Asigne el valor de Color a la propiedad BackColor del controlCrystalReportViewer.

[Visual Basic]

myCrystalReportViewer.BackColor =System.Drawing.Color.FromKnownColor(mySelectedKnownColor)

[C#]

crystalReportViewer.BackColor =System.Drawing.Color.FromKnownColor(selectedKnownColor);

Ahora ya podrá probar el botón Volver a mostrar el informe.

Para probar el control Button que vuelve a mostrar el informe 

1. En el menú Crear, haga clic en Generar solución.2. Si existen errores de generación, continúe y corríjalos ahora.3. En el menú Depurar, haga clic en Iniciar.

Se muestran los controles DropDownList y ComboBox, junto con los controles ListBox y Buttonagregados en el procedimiento anterior.

4. En el control DropDownList de selectBackColor, seleccione "Blue".

Nota Recuerde seleccionar los elementos de informe, especialmente Main_Page, para que estévisible

5. Haga clic en Volver a mostrar el informe.

La página se vuelve a cargar para mostrar el informe sobre un fondo azul.

6. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración.

Continúe con Agregar código para seleccionar una página del informe.

Agregar código para seleccionar una página del informe

En esta sección, aprenderá a codificar la opción "Ir a página" de la barra de herramientas deCrystalReportViewer.

Esta barra de herramientas contiene botones de exploración de páginas y un cuadro de texto paraseleccionar las páginas del informe. Puede utilizar los siguientes métodos de la claseCrystalReportViewer 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, se muestra la página seleccionada para el informe actual.

Page 74: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 74/80

Para agregar los controles TextBox y Button de la opción "Ir a página" 

1. Abra el formulario Web Forms o Windows Forms en la vista Diseño.2. En el Cuadro de herramientas, arrastre un control TextBox a la cuarta fila y a la columna uno

de la tabla.3. Seleccione el control TextBox y, a continuación, desde la ventana Propiedades, siga estos

pasos:• Establezca el valor de ID (o Nombre) en "pageNumber".• Establezca el valor de la propiedad Text para que esté vacía.

4. En el Cuadro de herramientas, arrastre un control Button a la cuarta fila y la columna dos dela tabla.

5. Seleccione el control Button y, a continuación, desde la ventana Propiedades, siga estospasos:

• Establezca el valor de ID (o Nombre) en "goToPage".• Establezca el valor de Text en "Ir a página".

Para codificar el controlador de eventos Click() del control Button 

1. Haga doble clic en el control Button de Ir a página.

Aparece la clase de código subyacente del informe y muestra que se ha generadoautomáticamente un controlador de eventos goToPage_Click() .

2. Convierta el texto escrito en el control TextBox en un número entero y, a continuación, pase elvalor al método ShowNthPage() del control CrystalReportViewer.

Nota No ha validado que se especificó un número entero en el control TextBox. Para unaaplicación de producción, debería agregar un control de validación configurado respecto alcontrol TextBox.

[Visual Basic]

myCrystalReportViewer.ShowNthPage(Convert.ToInt32(pageNumber.Text))

[C#]

crystalReportViewer.ShowNthPage(Convert.ToInt32(pageNumber.Text));

Para probar el control del botón goToPage 

1. En el menú Crear, seleccione 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.

Se muestran el informe Chart y todos los controles agregados.

4. Especifique "3" en el control TextBox de pageNumber y, a continuación, haga clic en Ir apágina.

Se vuelve a cargar la página para mostrar la página 3 del informe.

5. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración.

Continúe con Modificar el factor de zoom.

Page 75: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 75/80

Modificar el factor de zoom

De forma predeterminada, la barra de herramientas de CrystalReportViewer le permite seleccionar unfactor de zoom comprendido entre el 25% y el 400% mediante incrementos fijos de 25%, 50% o 100%.En esta sección, va a agregar código para permitir cualquier factor de zoom que desee.

Necesita un control TextBox en el que escribir el factor de zoom deseado y un control Button para volvera cargar la página.

Para agregar los controles TextBox y Button para la opción Zoom 

1. Abra el formulario Web Forms o Windows Forms en la vista Diseño.2. En el Cuadro de herramientas, arrastre un control TextBox a la cuarta fila y a la columna tres

de la tabla.3. Seleccione el control TextBox y, a continuación, desde la ventana Propiedades, siga estos

pasos:• Establezca el valor de ID (o Nombre) en "zoomFactor".• Establezca el valor de la propiedad Text para que esté vacía.

4. En el Cuadro de herramientas, arrastre un control Button a la cuarta fila y la columna cuatrode la tabla.

5. Seleccione el control Button y, a continuación, desde la ventana Propiedades, siga estospasos:

• Establezca el valor de ID (o Nombre) en "updateZoomFactor".• Establezca el valor de Text en "% de zoom".

Para codificar el controlador de eventos Click() del control Button 

1. Haga doble clic en el control Button de updateZoomFactor.

Aparece la clase de código subyacente del informe y muestra que se ha generadoautomáticamente un controlador de eventos updateZoomFactor_Click() .

2. Convierta el texto escrito en el control TextBox en un número entero y, a continuación, pase elvalor al método Zoom() del control CrystalReportViewer.

Nota No ha validado que se especificó un número entero en el control TextBox. Para unaaplicación de producción, debería agregar un control de validación configurado respecto alcontrol TextBox.

[Visual Basic]

myCrystalReportViewer.Zoom(Convert.ToInt32(zoomFactor.Text))

[C#]

crystalReportViewer.Zoom(Convert.ToInt32(zoomFactor.Text));

Para probar el control updateZoomFactor 

1. En el menú Crear, haga clic en Generar solución.2. Si existen errores de generación, continúe y corríjalos ahora.3. En el menú Depurar, haga clic en Iniciar.

Se muestran el informe Chart y todos los controles agregados.

Page 76: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 76/80

4. Especifique "38" en el control TextBox de zoomFactor y, a continuación, haga clic en Zoom.

Se vuelve a cargar la página para mostrar la página actual al 38% de su tamaño original.

5. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración.

Continúe con Buscar en el informe.

Buscar en el informe

En esta sección, aprenderá a buscar texto en un informe de Crystal que enlace con el controlCrystalReportViewer.

Necesita un control TextBox para escribir la cadena de búsqueda deseada, un control Button para buscaren el informe y un control Label para notificar el éxito o el error de la búsqueda.

Para agregar los controles TextBox, Button y Label para la opción Search 

1. Abra el formulario Web Forms o Windows Forms en la vista Diseño.2. En el Cuadro de herramientas, arrastre un control TextBox a la quinta fila y a la columna uno

de la tabla.3. Seleccione el control TextBox y, a continuación, desde la ventana Propiedades, siga estos

pasos:• Establezca el valor de ID (o Nombre) en "searchText".• Establezca el valor de la propiedad Text para que esté vacía.

4. En el Cuadro de herramientas, arrastre un control Button a la quinta fila y la columna dos dela tabla.

5. Seleccione el control Button y, a continuación, desde la ventana Propiedades, siga estospasos:

• Establezca el valor de ID (o Nombre) en "search".• Establezca el valor de Text en "Buscar texto".

6. En el Cuadro de herramientas, arrastre un control Label a la quinta fila y a la columna tres dela tabla.

• Establezca el valor de ID (o Nombre) en "message".• Establezca el valor de Text para que esté vacío.• Establezca el valor de ForeColor en Red.

7. Cree la clase MessageConstants para almacenar respuestas estándar como constantes decadena para la búsqueda.

Nota Para obtener instrucciones sobre cómo crear esta clase, vea Agregar una clase paramensajes de error.

Después, debe llamar al método SearchForText() en el control Button de búsqueda.

Nota El método SearchForText() no tiene el mismo comportamiento si se trata de un sitio Web o unproyecto para Windows.En los sitios Web, el método SearchForText() devuelve True cuando no se obtienen resultados. En losproyectos de Windows, el método SearchForText() devuelve True cuando se obtienen resultados. A suvez, en los sitios Web, la búsqueda encuentra sólo la primera aparición de la cadena; mientras que, enlos proyectos para Windows, la búsqueda continúa a partir del último resultado de la búsqueda.

Como el método no tiene el mismo comportamiento si se trata de un sitio Web o un proyecto paraWindows, realice el siguiente procedimiento con pasos correspondiente a un sitio Web o un proyectopara Windows.

Page 77: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 77/80

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

1. Haga doble clic en el control Button de search.

Aparece la clase de código subyacente del informe y muestra que se ha generadoautomáticamente un controlador de eventos search_Click().

2. Recupere el texto escrito en el control TextBox y, a continuación, pase el valor al métodoSearchForText() del control CrystalReportViewer. Asigne la llamada del método a unavariable booleana.

Nota Para que la clase SearchDirection sea accesible, deberá incluir un enunciado "Imports"[Visual Basic] o "using" [C#] en la parte superior de la clase de código subyacente delespacio de nombres CrystalDecisions.Shared. (Esta declaración se ha agregado en Configuraciónde proyectos.)

[Visual Basic]

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

[C#]

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

3. Cree un bloque condicional que compruebe si la búsqueda tiene éxito.

[Visual Basic]

If Not mySearchResult Then

Else

End If

[C#]

if(!searchResult){}else

{}

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

[Visual Basic]

message.Text = MessageConstants.SUCCESS

[C#]

message.Text = MessageConstants.SUCCESS;

Page 78: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 78/80

5. En el bloque Else, asigne la constante MessageConstants.FAILURE a la propiedad Text del controlLabel del mensaje.

[Visual Basic]

message.Text = MessageConstants.FAILURE

[C#]

message.Text = MessageConstants.FAILURE;

Sáltese el siguiente procedimiento de un proyecto para Windows y vaya al próximo procedimiento deprueba.

Para codificar el controlador de eventos search_Click() para un proyecto para Windows 

1. Haga doble clic en el control Button de search.

Aparece la clase de código subyacente del informe y muestra que se ha generadoautomáticamente un controlador de eventos search_Click().

2. Recupere el texto escrito en el control TextBox y, a continuación, pase el valor al métodoSearchForText() del control CrystalReportViewer. Asigne la llamada del método a unavariable booleana.

[Visual Basic]

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

[C#]

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

3. Cree un bloque condicional que compruebe si la búsqueda tiene éxito.

[Visual Basic]

If mySearchResult Then

Else

End If

[C#]

if(searchResult){}else{}

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

Page 79: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 79/80

[Visual Basic]

message.Text = MessageConstants.SUCCESS

[C#]

message.Text = MessageConstants.SUCCESS;

5. En el bloque Else, asigne la constante MessageConstants.FAILURE a la propiedad Text del controlLabel del mensaje.

[Visual Basic]

message.Text = MessageConstants.FAILURE

[C#]

message.Text = MessageConstants.FAILURE;

Para probar el control Button de search 

1. En el menú Crear, haga clic en Generar solución.2. Si existen errores de generación, continúe y corríjalos ahora.3. En el menú Depurar, haga clic en Iniciar.

Se muestran el informe Chart y todos los controles agregados.

4. Especifique "China" en el control TextBox de searchText y, a continuación, haga clic enBuscar.

Se vuelve a cargar la página para resaltar el resultado de la búsqueda y para mostrar un mensajede éxito.

5. Especifique "hola" en el control TextBox de searchText y, a continuación, haga clic en Buscar.

Se vuelve a cargar la página para mostrar un mensaje de error.

6. Vuelva a Visual Studio 2005 y haga clic en Detener para salir del modo de depuración.

Las opciones de personalización restantes sólo están disponibles para la versión Web del controlCrystalReportViewer.

• Por lo tanto, si está desarrollando un sitio Web, continúe con Agregar un borde al informe de unsitio Web.

• En caso contrario, si está desarrollando un proyecto para Windows, continúe con Conclusión.

Conclusión

Ha agregado correctamente código para personalizar el informe que enlaza con el controlCrystalReportViewer. Asimismo, ha aprendido a seleccionar una página, cambiar el factor de zoom,buscar texto, elegir un modo de impresión y personalizar el borde.

Page 80: Tutoriales y código de ejemplo Crystal reports

5/12/2018 Tutoriales y c digo de ejemplo Crystal reports - slidepdf.com

http://slidepdf.com/reader/full/tutoriales-y-codigo-de-ejemplo-crystal-reports 80/80