Compartir a través de


Enlazar el informe

Cuando siguió las instrucciones de la sección Configuración de proyectos para preparase para este tutorial, colocó un control CrystalReportViewer en el formulario Web. Sin embargo, para ver elementos del informe, deberá usar el control CrystalReportPartsViewer.

En esta sección, creará una instancia del informe Customers y la enlazará con el control CrystalReportPartsViewer. A continuación, compruebe si el informe muestra los elementos creados en los procedimientos anteriores.

Puede crear una copia del informe y enlazarla de dos formas:

  • Como informe incrustado.
  • Como informe no incrustado.

Elija uno de los procedimientos con pasos siguientes (pero no ambos).

  • Si utiliza informes incrustados, realice el siguiente procedimiento de pasos para crear una instancia del informe como un informe incrustado.
  • Si utiliza informes no incrustados, siga el segundo procedimiento de pasos para crear una instancia del informe como un informe no incrustado.

Continúe con Filtrar datos en el informe.

Para crear una instancia del informe Customers como informe incrustado y enlazarla al control CrystalReportPartsViewer

  1. Abra el formulario Web Forms.

  2. En el menú Ver, haga clic en Diseñador.

  3. Elimine el control CrystalReportViewer.

  4. En el Cuadro de herramientas, abra el nodo Crystal Reports para buscar el control CrystalReportPartsViewer.

  5. Arrastre el control CrystalReportPartsViewer al formulario Web.

  6. En la ventana Propiedades, establezca la propiedad ID:

    • Para los sitios Web de Visual Basic, establezca la propiedad ID en "myCrystalReportPartsViewer".
    • Para los sitios Web de C#, establezca la propiedad ID en "crystalReportPartsViewer".
  7. En el menú Ver, haga clic en Código para ver la clase de código subyacente de este formulario Web Forms.

  8. Agregue una nueva declaración de nivel de clase para la clase contenedora del informe Customers, con el nombre de variable customersReport. Establezca su modificador de acceso como private.

    Private customersReport As Customers
    
    private Customers customersReport;
    
  9. En el método ConfigureCrystalReports(), cree una instancia de la clase contenedora de informes.

    Nota

    Ha creado el método ConfigureCrystalReports() en Configuración de proyectos.

    customersReport = New Customers()
    
    customersReport = new Customers();
    
  10. En la línea siguiente, debajo de la creación de instancias del informe, enlace la propiedad ReportSource del control CrystalReportPartsViewer a la clase de informe de la que se ha creado una instancia (nombre de variable: customersReport).

    myCrystalReportPartsViewer.ReportSource = customersReport
    
    crystalReportPartsViewer.ReportSource = customersReport;
    
    Nota

    Se tiene acceso a la instancia del control CrystalReportPartsViewer en el código porque agregó el control al formulario Web o para Windows. Si IntelliSense no reconoce la instancia del control CrystalReportPartsViewer, verifique que se ha agregado este control como declaración de nivel de clase a esta clase de código subyacente.

Para crear una instancia del informe Customers como un informe no incrustado y enlazarla al control CrystalReportPartsViewer

Ahora estará listo para crear y ejecutar el proyecto.

  1. Abra el formulario Web Forms.

  2. En el menú Ver, haga clic en Código.

  3. Agregue una nueva declaración de nivel de clase para la clase contenedora del informe ReportDocument, con el nombre de variable customersReport. Establezca su modificador de acceso como private.

``` vb
Private customersReport As ReportDocument
```

``` csharp
private ReportDocument customersReport;
```

<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 ReportDocument es miembro del espacio de nombres CrystalDecisions.CrystalReports.Engine. Agregó una declaración &quot;Imports&quot; [Visual Basic] o &quot;using&quot; [C#] para este espacio de nombres en <a href="ms227453(v=vs.90).md">Configuración de proyectos</a>. Cuando cree la instancia de ReportDocument y cargue un informe en el espacio de nombres, tendrá acceso al informe a través del SDK, sin incrustar el informe.</p></td>
</tr>
</tbody>
</table>
  1. En el método ConfigureCrystalReports() (agregado durante uno de los procedimientos de Configuración de proyectos), cree una instancia de la clase ReportDocument.

    customersReport = New ReportDocument()
    
    customersReport = new ReportDocument();
    
  2. 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 para Windows:

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

      Dim reportPath As String = Server.MapPath("Customers.rpt")
      
      string reportPath = Server.MapPath("Customers.rpt");
      
    • Para un proyecto Windows, concatene la propiedad Application.StartupPath con una barra diagonal inversa y el nombre del archivo de informe local. Esto asigna el informe al mismo directorio del archivo ejecutable de Windows.

      Nota

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

      Dim reportPath As String = Application.StartupPath & "\" & "Customers.rpt"
      
      string reportPath = Application.StartupPath + "\\" + "Customers.rpt";
      
  3. Llame al método Load() de la instancia de ReportDocument y pásele la variable de cadena reportPath.

``` vb
customersReport.Load(reportPath)
```

``` csharp
customersReport.Load(reportPath);
```
  1. En la línea siguiente, debajo de la carga del informe, enlace la propiedad ReportSource de CrystalReportPartsViewer a la instancia de ReportDocument.

    myCrystalReportPartsViewer.ReportSource = customersReport
    
    crystalReportPartsViewer.ReportSource = customersReport;
    

Para probar la carga del informe Customers

Tanto si ha elegido crear una instancia de clase de un informe incrustado como de un informe no incrustado mediante la clase ReportDocument, el nombre de la variable utilizada es el mismo: customersReport. De esta forma, puede utilizar un conjunto de códigos común en los procedimientos que aparecen a continuación.

Ahora estará listo para crear y ejecutar el proyecto. Está previsto que falle la carga del informe, porque aún no se ha escrito el código para establecer un valor para el campo de parámetro Ciudad. Agregará un valor para el campo de parámetro Ciudad más adelante en este tutorial.

  1. En el menú Generar, 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 muestra el informe Customers en el explorador Web.
  1. Haga clic en un país para mostrar una lista de regiones.

  2. Haga clic en una región para mostrar los campos Nombre de cliente, Ventas del año pasado y Ciudad.

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