Enlazar a InfoObject proyectado como informe
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 InfoObject (vea Enlazar informes al modelo de objetos InfoObject (BOE)).
Ubicación de los informes
Se encuentran almacenados en un servidor de Crystal Reports Server o BusinessObjects Enterprise.
Descripción
El modelo de objetos InfoObject se suministra con Crystal Reports Server o BusinessObjects Enterprise. Trata todos los elementos Enterprise del sistema (informes, usuarios, grupos, servidores, grupos de servidores, carpetas) como objetos de información con los que se puede interactuar mediante programación. Todos los objetos de información del modelo de objetos se representan mediante las clases correspondientes del mismo nombre. Estas clases heredan de InfoObject.
Para enlazar informes utilizando este modelo de objetos, recupere un informe de Crystal Reports Server o BusinessObjects Enterprise contenido como una instancia de InfoObject. Para enlazar a esta instancia de InfoObject, asigne la propiedad ReportSource del control CrystalReportViewer a la instancia de InfoObject.
Ventajas
- Es útil para programar informes y que se ejecuten a determinadas horas, con parámetros específicos, para que su destino sea FTP, SMTP, un disco o una impresora.
Desventajas
- No es un método de presentación de informes tan rápido como cuando se utiliza el servidor RAS o Page Server.
- Si desea modificar el informe mediante programación en tiempo de ejecución, debe usar uno de los escenarios de enlace de Enlazar informes al modelo de objetos ReportClientDocument (RAS) para interactuar con el servidor RAS.
- Si desea la máxima velocidad y sólo necesita mostrar el informe, es mejor utilizar el escenario de enlace de informes de Enlace con ReportSource (Crystal Reports Server o BusinessObjects Enterprise 11) para tener acceso al Servidor de páginas con el fin de enlazar informes.
Para enlazar un informe que está contenido como InfoObject y proyectarlo a Report
- Crystal Reports Server o BusinessObjects Enterprise debe estar instalado y funcionando.
- El SDK de Crystal Reports Server o BusinessObjects Enterprise (incluidos los ensamblados .NET) se debe instalar en el equipo de desarrollo.
Nota Si ha instalado Crystal Reports Server o BusinessObjects Enterprise en el equipo de desarrollo, el SDK se incluye en la instalación.
- Busque y escriba el nombre de un servidor de Crystal Reports Server o BusinessObjects Enterprise. Para este ejemplo, el nombre del servidor es "BOE01".
Nota |
---|
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. |
- Utilice el Asistente de publicación para editar el archivo Chart.rpt en el servidor Crystal Reports Server o BusinessObjects Enterprise.
<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>
<p>Para obtener información sobre informes de ejemplo, vea <a href="ms225622(v=vs.90).md">Directorio de informes de muestra</a>.</p></td>
</tr>
</tbody>
</table>
Agregue las siguientes referencias de ensamblados al proyecto.
- CrystalDecisions.Enterprise.Framework
- CrystalDecisions.Enterprise.InfoStore
- CrystalDecisions.Enterprise.Desktop.Report
En la parte superior de la página de código subyacente, agregue un enunciado "Imports" [Visual Basic] o "using" [C#] para los espacios de nombres CrystalDecisions.Enterprise y CrystalDecisions.Enterprise.Desktop.
``` vb
Imports CrystalDecisions.Enterprise
Imports CrystalDecisions.Enterprise.Desktop
```
``` csharp
using CrystalDecisions.Enterprise;
using CrystalDecisions.Enterprise.Desktop;
```
Ya puede agregar código para enlazar a una instancia de InfoObject que contenga un informe de Crystal Reports Server o BusinessObjects Enterprise.
En el método ConfigureCrystalReports() (creado en Configuración de proyectos), declare una cadena serverName y establezca su valor en el nombre del servidor Crystal Reports Server o BusinessObjects Enterprise.
Dim serverName As String = "BOE01"
string serverName = "BOE01";
Declare y cree una instancia de la clase SessionMgr.
Dim mySessionMgr As SessionMgr = New SessionMgr()
SessionMgr sessionMgr = new SessionMgr();
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.
Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon( _ "Administrator", "", serverName, "secEnterprise")
EnterpriseSession enterpriseSession = sessionMgr.Logon( "Administrator", "", serverName, "secEnterprise");
Recupere el servicio InfoStore (como EnterpriseService), desde el método GetService de EnterpriseSession.
Dim myEnterpriseService As EnterpriseService = _ myEnterpriseSession.GetService("InfoStore")
EnterpriseService enterpriseService = enterpriseSession.GetService("InfoStore");
Declare y cree una instancia de InfoStore mediante el servicio InfoStore recuperado.
Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)
InfoStore infoStore = new InfoStore(enterpriseService);
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'";
Recupere una clase indizada InfoObjects que contenga el resultado de la consulta, pasando la cadena de consulta al método Query de InfoStore.
Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)
InfoObjects infoObjects = infoStore.Query(queryString);
Recupere InfoObject de la primera columna de la clase indizada InfoObjects.
<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>La clase indizada InfoObjects está basada en 1, no en 0.</p></td>
</tr>
</tbody>
</table>
``` vb
Dim myInfoObject As InfoObject = myInfoObjects(1)
```
``` csharp
InfoObject infoObject = infoObjects[1];
```
Declare una instancia de Report y proyecte InfoObject a Report.
Dim myReport As Report = CType(myInfoObject, Report)
Report report = (Report)infoObject;
Establezca el valor de la propiedad EnterpriseLogon del control CrystalReportViewer en la instancia de EnterpriseSession.
myCrystalReportViewer.EnterpriseLogon = myEnterpriseSession
crystalReportViewer.EnterpriseLogon = enterpriseSession;
Enlace la instancia de Report al control CrystalReportViewer.
myCrystalReportViewer.ReportSource = myReport
crystalReportViewer.ReportSource = report;