Compartir a través de


Enlace con ReportSource (Crystal Reports Server o BusinessObjects Enterprise 11)

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 caso de enlace de informes utiliza CrystalReportViewer (vea Enlazar informes al modelo de objetos CrystalReportViewer).

Ubicación de los informes

Se obtiene acceso a los informes desde Page Server en BusinessObjects Enterprise.

Descripción

Crystal Reports Server o BusinessObjects Enterprise permite la distribución de informes desde los servidores de un marco de Enterprise. Un informe almacenado en Crystal Reports Server o BusinessObjects Enterprise se puede mostrar en distintos servidores a horas diferentes, según su finalidad. En Crystal Reports Server o BusinessObjects Enterprise, si desea mostrar un informe con el mejor rendimiento posible, y no precisa modificaciones significativas mediante programación, muestre el informe directamente desde Page Server con la clase ReportSource.

La clase ReportSource no está asociada a ningún modelo de objetos. Si desea modificar los parámetros o la configuración de base de datos, puede utilizar el modelo de objetos limitado proporcionado con el control CrystalReportViewer. Sin embargo, para una interacción mediante programación más compleja, utilice uno de los demás casos de enlace de informes de Crystal Reports Server o BusinessObjects Enterprise.

Nota

Para obtener una comparación de los diversos escenarios que utilizan distintos servidores en Crystal Reports Server o BusinessObjects Enterprise, vea los escenarios de enlace recomendados para Crystal Reports Server o BusinessObjects Enterprise en Resumen de los casos recomendados.

Ventajas

  • Más rápido: proporciona el mejor rendimiento para mostrar un informe de Crystal Reports Server o BusinessObjects Enterprise.

Desventajas

  • Modelo de objetos limitado: la modificación mediante programación del inicio de sesión o la configuración de parámetros de la base de datos está limitada al modelo de objetos CrystalReportViewer. Vea Resumen de los casos recomendados para ver escenarios alternativos de enlace de informes que utilizan Crystal Reports Server o BusinessObjects Enterprise.
  • Disponibilidad limitada: este escenario sólo está disponible en Crystal Enterprise 10, Crystal Reports Server o BusinessObjects Enterprise 11.

Enlace de control CrystalReportViewer a un informe que se atiende fuera de Page Server de Crystal Reports Server o BusinessObjects Enterprise

  • Crystal Reports Server o BusinessObjects Enterprise está instalado y funcionando.
  • Crystal Reports Server o BusinessObjects Enterprise SDK (incluidos los ensamblados .NET) está instalado y funcionando.
    Nota

    Si ha instalado Crystal Reports Server o BusinessObjects Enterprise en el equipo de desarrollo, el SDK se incluye en la instalación.

  1. Busque y escriba el nombre de un servidor de Crystal Reports Server o BusinessObjects Enterprise. Para este ejemplo, el nombre del servidor es " BOE01".
1.  Para buscar el nombre del servidor, haga clic con el botón secundario en el icono Mi PC y, a continuación, seleccione Propiedades.
2.  En el cuadro de diálogo Propiedades del sistema, haga clic en la ficha Identificación de la red.
3.  El nombre del equipo se encuentra en el campo "Nombre completo de equipo".
  1. Utilice el Asistente de publicación para editar el archivo Chart.rpt en el servidor Crystal Reports Server o BusinessObjects Enterprise. El archivo del informe está situado en el subdirectorio Feature Examples, vea Directorio de informes de muestra.
<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>Para saber cómo utilizar el Asistente de publicación, vea la documentación del usuario de Crystal Reports Server o BusinessObjects Enterprise.</p></td>
</tr>
</tbody>
</table>
  1. Agregue las siguientes referencias de ensamblados al proyecto.

    • CrystalDecisions.Enterprise.Framework
    • CrystalDecisions.Enterprise.InfoStore
    • CrystalDecisions.Enterprise.Viewing.ReportSource
    • CrystalDecisions.ReportAppServer.Controllers
  2. En el menú Ver, haga clic en Código para ver la clase de código subyacente de Web Forms o Windows Forms. Sobre la clase, agregue una instrucción "Imports" [Visual Basic] o "using" [C#] para el espacio de nombres CrystalDecisions.Enterprise.

``` vb
Imports CrystalDecisions.Enterprise
Imports CrystalDecisions.Enterprise.Viewing
Imports CrystalDecisions.ReportAppServer.Controllers
```

``` csharp
using CrystalDecisions.Enterprise;
using CrystalDecisions.Enterprise.Viewing;
using CrystalDecisions.ReportAppServer.Controllers;
```

Ya está preparado para escribir código de inicio de sesión en Crystal Reports Server o BusinessObjects Enterprise.

Para iniciar sesión en Crystal Reports Server o BusinessObjects Enterprise

  1. En el método ConfigureCrystalReports() (creado en Configuración de proyectos), declare una variable de cadena serverName y establezca su valor en el nombre del servidor Crystal Reports Server o BusinessObjects Enterprise.
``` vb
Dim serverName As String = "BOE01"
```

``` csharp
string serverName = "BOE01";
```
  1. Declare y cree una instancia de la clase SessionMgr.

    Dim mySessionMgr As SessionMgr = New SessionMgr()
    
    SessionMgr sessionMgr = new SessionMgr();
    
  2. Pase el nombre de usuario (Administrador), la contraseña (en blanco), la variable serverName y el tipo de inicio de sesión (secEnterprise) al método Logon de la instancia SessionMgr y recupérela como instancia de EnterpriseSession.

``` vb
Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon( _
"Administrator", "", serverName, "secEnterprise")
```

``` csharp
EnterpriseSession enterpriseSession = sessionMgr.Logon(
"Administrator", "", serverName, "secEnterprise");
```
  1. Recupere el servicio InfoStore (como EnterpriseService), desde el método GetService de EnterpriseSession.
``` vb
Dim myEnterpriseService As EnterpriseService = _
myEnterpriseSession.GetService("InfoStore")
```

``` csharp
EnterpriseService enterpriseService = enterpriseSession.GetService("InfoStore");
```
  1. Declare y cree una instancia de InfoStore y pase EnterpriseService recuperado como parámetro a InfoStore.
``` vb
Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)
```

``` csharp
InfoStore infoStore = new InfoStore(enterpriseService);
```

Ya está preparado para recuperar el informe Hierarchical Grouping desde Crystal Reports Server o BusinessObjects Enterprise.

Para recuperar el informe Hierarchical Grouping de Crystal Reports Server o BusinessObjects Enterprise

  1. Para volver a asignar el valor de la instancia de EnterpriseService al servicio de fábrica de informes de Page Server, pase la cadena "PSReportFactory" al método GetService() de EnterpriseService.
``` vb
myEnterpriseService = myEnterpriseSession.GetService("PSReportFactory")
```

``` csharp
enterpriseService = enterpriseSession.GetService("PSReportFactory");
```
  1. Devuelva la propiedad Interface a EnterpriseService como variable de objeto.
``` vb
Dim psrfObject As Object = myEnterpriseService.Interface
```

``` csharp
Object psrfObject = enterpriseService.Interface;
```
  1. Proyecte la variable de objeto a una instancia de PSReportFactory.
``` vb
Dim myPSReportFactory As PSReportFactory = CType(psrfObject, PSReportFactory)
```

``` csharp
PSReportFactory psReportFactory = (PSReportFactory)psrfObject;
```
  1. Introduzca la siguiente cadena de consulta para realizar una consulta sobre el informe en Crystal Reports Server o BusinessObjects Enterprise.

    Dim queryString As String = "Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS " _
    & "Where SI_PROGID='CrystalEnterprise.Report' " _
    & "And SI_NAME Like 'Chart'"
    
    string queryString = "Select SI_ID, SI_NAME, SI_PARENTID From CI_INFOOBJECTS "
    + "Where SI_PROGID='CrystalEnterprise.Report' "
    + "And SI_NAME Like 'Chart'";
    
  2. Pase la cadena de consulta al método Query de InfoStore, para recuperar una clase indizada InfoObjects con el resultado de la consulta.

``` vb
Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)
```

``` csharp
InfoObjects infoObjects = infoStore.Query(queryString);
```
  1. Recupere InfoObject desde la primera columna de la clase indizada InfoObjects.
``` vb
Dim myInfoObject As InfoObject = myInfoObjects(1)
```

``` csharp
InfoObject infoObject = infoObjects[1];
```
  1. Declare y llene una instancia de ReportSource desde el método OpenReportSource() de la instancia de PSReportFactory, pasando la propiedad ID de InfoObject.
``` vb
Dim myReportSource As ReportSource = myPSReportFactory.OpenReportSource(myInfoObject.ID)
```

``` csharp
ReportSource reportSource = psReportFactory.OpenReportSource(infoObject.ID);
```
  1. Enlace la instancia de ReportSource a la propiedad ReportSource del control CrystalReportViewer.
``` vb
myCrystalReportViewer.ReportSource = myReportSource
```

``` csharp
crystalReportViewer.ReportSource = reportSource;
```
  1. Para ver el informe, cree y ejecute el proyecto.
El informe ahora se muestra desde Page Server en Crystal Reports Server o BusinessObjects Enterprise según su ID. Si utiliza un método alternativo para tener acceso al Id. de informe (por ejemplo, eligiendo el Id. de la lista de un control DropDownList), no tendrá que consultar InfoStore ni generar ningún InfoObject para recuperar el Id. de informe.

Vea también