Compartir a través de


Enlazar el informe

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

En esta sección, creará una instancia del informe CustomersViaIDR y la enlazará al control CrystalReportViewer.

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

  • Como informe incrustado.
  • Como informe no incrustado.

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

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

Para crear una instancia del informe CustomersViaIDR como un informe incrustado y enlazarla al control CrystalReportViewer

  1. Abra el formulario Web Forms o Windows 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 CustomersViaIDR, con el nombre de variable customersViaIdrReport. Establezca su modificador de acceso como private.

    Private customersViaIdrReport As CustomersViaIDR
    
    private CustomersViaIDR customersViaIdrReport;
    
  4. En el método ConfigureCrystalReports(), cree una instancia de la clase contenedora de informes.

<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>Ha creado el método ConfigureCrystalReports() en <a href="ms227453(v=vs.90).md">Configuración de proyectos</a>.</p></td>
</tr>
</tbody>
</table>

``` vb
customersViaIdrReport = New CustomersViaIDR()
```

``` csharp
customersViaIdrReport = new CustomersViaIDR();
```
  1. En la línea siguiente, debajo de la creación de instancias del informe, enlace la propiedad ReportSource del control CrystalReportViewer a la clase de informe de la que se ha creado una instancia (nombre de variable, customersViaIdrReport).

    myCrystalReportViewer.ReportSource = customersViaIdrReport
    
    crystalReportViewer.ReportSource = customersViaIdrReport;
    

Para crear una copia del informe CustomersViaIDR como informe no incrustado y enlazarla al control CrystalReportViewer

Ahora estará listo para crear y ejecutar el proyecto. Pase a la siguiente sección.

  1. Abra el formulario Web Forms o Windows 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 customersViaIdrReport. Establezca su modificador de acceso como private.

<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 forma parte 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>

``` vb
Private customersViaIdrReport As ReportDocument
```

``` csharp
private ReportDocument customersViaIdrReport;
```
  1. En el método ConfigureCrystalReports() (que ha creado en Configuración de proyectos), cree una instancia de la clase ReportDocument.
``` vb
customersViaIdrReport = New ReportDocument()
```

``` csharp
customersViaIdrReport = new ReportDocument();
```
  1. 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("CustomersViaIDR.rpt")
      
      string reportPath = Server.MapPath("CustomersViaIDR.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 & "\" &
      "CustomersViaIDR.rpt"
      
      string reportPath = Application.StartupPath + "\\"
      +"CustomersViaIDR.rpt";
      
  2. Llame al método Load() de la instancia de ReportDocument y pásele la variable de cadena reportPath.

``` vb
customersViaIdrReport.Load(reportPath)
```

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

    myCrystalReportViewer.ReportSource = customersViaIdrReport
    
    crystalReportViewer.ReportSource = customersViaIdrReport;
    

Para probar la carga del informe CustomersViaIDR

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: customersViaIdrReport. 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.

  1. En el menú Generar, 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 Windows, busque el archivo ejecutable de Windows compilado en el subdirectorio \bin\ [Visual Basic] o \bin\debug\ [C#] y, a continuación, copie el informe en dicho subdirectorio.

<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 que el archivo ejecutable de Windows cargue el informe no incrustado en tiempo de ejecución, el informe deberá estar almacenado en el mismo directorio que el archivo ejecutable de Windows.</p></td>
</tr>
</tbody>
</table>
  1. En el menú Depurar, haga clic en Iniciar.
Se mostrará el informe, mostrando datos del método estático IDataReader.
  1. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.