Enlazar a un servidor RAS no administrado mediante la propiedad ReportDocument.FileName
Nota |
---|
Esta página describe una funcionalidad que no está disponible en Crystal Reports para Visual Studio, pero sí lo está en una de sus versiones actualizadas. Para obtener más información acerca de Crystal Reports para Visual Studio, consulte ¿Qué es Crystal Reports para Visual Studio? Para obtener más información acerca de las versiones actualizadas, consulte Opciones de actualización. |
Modelo de objetos
Este escenario de enlace de informes utiliza ReportClientDocument (vea Enlazar informes al modelo de objetos ReportClientDocument (RAS)).
Ubicación de los informes
En este caso, se aprovecha el informe incrustado existente. Continuará haciendo referencia al informe incrustado mediante su clase contenedora de informe en el código, pero redirigirá el informe incrustado a través de la propiedad FileName a una copia externa (y mucho más rápida) situada en el RAS no administrado (vea Servidor de aplicaciones de informes (RAS)).
Nota |
---|
Puesto que el informe se muestra, finalmente, desde el servidor remoto, este caso de enlace de informes también funciona correctamente con informes no incrustados (de la forma implementada en el caso de enlace de informes Enlazar a una clase de informe no incrustado cargado en ReportDocument). |
Descripción
Es una versión optimizada del caso de enlace de informes Enlazar a un servidor RAS no administrado mediante el método ReportDocument.Load().
Los proyectos creados originalmente con informes incrustados y el modelo de objetos ReportDocument en Crystal Reports para Visual Studio ahora pueden trasladarse fácilmente al servidor RAS no administrado.
En este escenario se enlaza un informe incrustado (diseñado para funcionar con Crystal Reports) en tiempo de ejecución al servidor RAS no administrado, y se optimiza colocando una copia del mismo en una carpeta a la que tenga acceso directo el servidor RAS. Hágalo agregando dos líneas de código para que realicen lo siguiente:
- Asignar el nombre del servidor RAS a la propiedad ReportDocument.ReportAppServer.
- Pasar una cadena de ruta de directorio accesible para RAS a la propiedad ReportDocument.FileName.
También puede enlazar un informe no incrustado a un servidor RAS no administrado. Hágalo eliminando la llamada al método ReportDocument.Load(String filename) descrito en Enlazar a una clase de informe no incrustado cargado en ReportDocument, y reemplácela por el código citado en los pasos descritos anteriormente.
Este escenario muestra que en Crystal Reports Developer se pueden enlazar informes incrustados o no incrustados, que utilicen el modelo de objetos ReportDocument, directamente a un servidor RAS que utilice el modelo de objetos ReportClientDocument. ¿Cómo? En Crystal Reports 10, el modelo de objetos ReportDocument se volvió a escribir como capa proxy que dirige el modelo de objetos ReportClientDocument. Para obtener más información, vea Modelo de objetos ReportClientDocument (RAS) en la sección Arquitectura.
No obstante, el escenario predeterminado en Enlazar a un servidor RAS no administrado mediante el método ReportDocument.Load() tiene una limitación de rendimiento: cargar cada vez el informe incrustado en el servidor RAS resulta lento. Para incrementar el rendimiento, copie el informe en un directorio de archivos que vea el servidor RAS y, a continuación, pase la cadena de ruta de directorio a la propiedad FileName de la instancia del informe.
Nota |
---|
La propiedad FileName hace referencia al informe desde el servidor RAS administrado. El informe de un servidor RAS administrado siempre se muestra, aunque se trate de una versión distinta del informe incrustado o este tenga un nombre diferente. |
Se puede tener acceso al modelo de objetos ReportClientDocument subyacente directamente mediante la propiedad ReportDocument.ReportClientDocument y modificar el informe con el modelo de objetos ReportClientDocument en tiempo de ejecución. Para obtener un ejemplo de código, vea la sección Implementación más adelante.
Ventajas
- Mantiene todo el código original que interactuaba con los informes que utilizan el modelo de objetos ReportDocument, a la vez que sigue proporcionando acceso total al modelo de objetos ReportClientDocument subyacente mediante la propiedad ReportDocument.ReportClientDocument.
Nota El modelo de objetos ReportClientDocument permite crear, modificar y guardar los cambios de los informes mediante programación en el archivo de definición de informe. Para obtener más información, vea Modelo de objetos ReportClientDocument (RAS) en la sección Arquitectura.
- Rendimiento mejorado debido a un rendimiento muy superior del motor de informes de Report Application Server (RAS). Para obtener más información, vea Comparación de arquitecturas en las soluciones de elaboración de informes de Business Objects.
- Rendimiento mejorado adicional al copiar el informe a un directorio de archivos que se puede ver desde el servidor RAS.
Desventajas
- Código con adiciones menores. Cada vez que un informe se enlaza al control CrystalReportViewer con ReportDocument, se deben agregar dos líneas de código. Para obtener un ejemplo de código, vea la sección siguiente.
- Realizar una copia del informe incrustado en un directorio de archivos visible desde el servidor RAS incrementa los requisitos de mantenimiento. Si se debe modificar o eliminar un informe, los cambios se deben realizar tanto en el informe incrustado del proyecto de Visual Studio como en la copia del mismo del directorio visible para el servidor RAS.
- La actualización a un servidor RAS no administrado incrementa considerablemente el rendimiento de los informes, pero no tanto como la actualización a un servidor RAS administrado.
Para cargar una copia del informe incrustado desde un directorio de archivos visible para el servidor RAS no administrado indicado
- El Servidor de aplicaciones de informes (RAS) 10 no administrado debe estar instalado y se comprueba su correcto funcionamiento.
- Busque y escriba el nombre de un servidor RAS no administrado en la red. Para este ejemplo, el nombre del servidor es "RAS01".
Este procedimiento sólo funciona con un proyecto creado a partir de la Configuración de proyectos. La configuración de proyectos contiene referencias específicas a espacios de nombres y configuración de códigos necesarios para este procedimiento, que no se podrá completar sin dicha configuración. Por lo tanto, antes de empezar con este procedimiento, primero debe seguir los pasos de Configuración de proyectos.
RAS sólo funciona con proyectos Web.
- En el método ConfigureCrystalReports() (que ha creado en Configuración de proyectos), tiene el código de enlace de informes siguiente:
Entre estas dos líneas de código, debe agregar dos nuevas líneas de código (vea los pasos 2 y 4) que realizan dos acciones antes de enlazar el informe al control CrystalReportViewer:
- Identificar un servidor RAS no administrado en la red.
- Proporcionar la ruta de archivo que contiene una copia del informe.
``` vb
Dim hierarchicalGroupingReport As Hierarchical_Grouping = New
Hierarchical_Grouping()
myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
```
``` csharp
Hierarchical_Grouping hierarchicalGroupingReport = new
Hierarchical_Grouping();
crystalReportViewer.ReportSource = hierarchicalGroupingReport;
```
Después de crear la instancia de hierarchicalGroupingReport, escriba el nombre del servidor RAS en la propiedad ReportApplicationServer de la variable hierarchicalGroupingReport.
hierarchicalGroupingReport.ReportAppServer = "RAS01"
hierarchicalGroupingReport.ReportAppServer = "RAS01";
Copie el informe en el directorio Report Application Server 10 en la unidad C del servidor RAS: C:\Archivos de programa\Crystal Decisions\Report Application Server 10\Reports\
Después introduzca la ruta de archivo al informe en el código, con el prefijo del protocolo "RAS".
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images\z15yzzew.alert_note(es-es,VS.90).gif" class="note" />Nota</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>Esta ruta corresponde al directorio predeterminado para almacenar los informes de RAS. El servidor RAS puede rechazar otras rutas de informe con un error de "Acceso denegado".</p></td>
</tr>
</tbody>
</table>
El código de enlace de informes de [Configuración de proyectos](ms227453\(v=vs.90\).md) ahora está a continuación de esta línea de código.
``` vb
hierarchicalGroupingReport.FileName = "ras://C:\Archivos de programa\Crystal Decisions" _ & "\Report Application Server 10\Reports" _ & "\Hierarchical_Grouping.rpt"
```
``` csharp
hierarchicalGroupingReport.FileName = "ras://C:\\Archivos de programa\\Crystal Decisions" + "\\Report Application Server 10\\Reports" + "\\Hierarchical_Grouping.rpt";
```
- Para ver el informe, cree y ejecute el proyecto.
El informe ya está cargado desde la ruta de archivo y atendido desde el servidor de aplicaciones de informes (RAS) no administrado.
Para tener acceso al modelo de objetos ReportClientDocument desde el modelo de objetos ReportDocument, vea la sección Implementación de Enlazar a un servidor RAS no administrado mediante el método ReportDocument.Load().