Compartir a través de


Enlazar el informe y configurar el origen de datos con el conjunto de datos lleno

En esta sección, aprenderá a crear una instancia del informe que ha creado, a llenar el conjunto de datos del informe y a mostrar el informe en el control CrystalReportViewer. Va a llenar el informe mediante la asignación de su propiedad SetDataSource al conjunto de datos lleno, que se devuelve desde la propiedad CustomerDataSet de la clase DataSetConfiguration. Finalmente, va a enlazar el informe lleno al control CrystalReportViewer.

Puede crear una instancia del informe y enlazarla de las siguientes formas:

  • Como informe incrustado.
  • Como informe no incrustado.

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

Para crear una instancia de un informe no 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 ReportDocument, con el nombre de variable customerReport. 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 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>

``` vb
Private customerReport As ReportDocument
```

``` csharp
private ReportDocument customerReport;
```
  1. En el método ConfigureCrystalReports() (que ha agregado durante uno de los procedimientos en Configuración de proyectos), cree una instancia de la clase ReportDocument.

    customerReport = New ReportDocument()
    
    customerReport = 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("Customer.rpt")
      
      string reportPath = Server.MapPath("Customer.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 & "\" &
      "Customer.rpt"
      
      string reportPath = Application.StartupPath + "\\" +
      "Customer.rpt";
      
  3. Llame al método Load() de la instancia de ReportDocument y pásele la variable de cadena reportPath.

``` vb
customerReport.Load(reportPath)
```

``` csharp
customerReport.Load(reportPath);
```
  1. Declare un DataSet y asígnele DataSetConfiguration.CustomerDataSet property.

    Dim myDataSet As DataSet = DataSetConfiguration.CustomerDataSet
    
    DataSet dataSet = DataSetConfiguration.CustomerDataSet;
    
  2. Llame al método SetDataSource() de la instancia de ReportDocument customerReport y pásele la instancia de DataSet.

``` vb
customerReport.SetDataSource(myDataSet)
```

``` csharp
customerReport.SetDataSource(dataSet);
```
  1. En la línea siguiente, bajo la carga del informe, enlace la propiedad ReportSource de CrystalReportViewer a la instancia de ReportDocument.

    myCrystalReportViewer.ReportSource = customerReport
    
    crystalReportViewer.ReportSource = customerReport;
    

Para crear una instancia de 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. Encima de la firma de clase, agregue una declaración "Imports"[Visual Basic] o "using"[C#] en la parte superior de la clase para el espacio de nombres System.Data si no hay ninguna.

``` vb
Imports System.Data
```

``` csharp
using System.Data;
```
  1. Agregue una nueva declaración de nivel de clase para la clase contenedora del informe Customer, con el nombre de variable customerReport. Establezca su modificador de acceso como private.

    Private customerReport As Customer
    
    private Customer customerReport;
    
  2. 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.

    customerReport = New Customer()
    
    customerReport = new Customer();
    
  3. En la siguiente línea, debajo de la creación de instancias del informe, declare un conjunto de datos.

Este paso y el siguiente separan la declaración de la asignación de la variable. Las líneas de código son independientes ya que, en un apéndice del sitio Web de este tutorial, refactorizará la asignación de variable en un bloque de código que almacena en caché el conjunto de datos del objeto ASP.NET Cache.

``` vb
Dim myDataSet As DataSet
```

``` csharp
DataSet dataSet;
```
  1. Asigne la instancia de DataSet a la propiedad DataSetConfiguration.CustomerDataSet.

    myDataSet = DataSetConfiguration.CustomerDataSet
    
    dataSet = DataSetConfiguration.CustomerDataSet;
    
  2. Llame al método SetDataSource() de la instancia de CustomerReport y pásele la instancia de DataSet.

``` vb
customerReport.SetDataSource(myDataSet)
```

``` csharp
customerReport.SetDataSource(dataSet);
```
  1. Enlace la propiedad ReportSource del control CrystalReportViewer con la instancia de CustomerReport.

    myCrystalReportViewer.ReportSource = customerReport
    
    crystalReportViewer.ReportSource = customerReport;
    

Para probar la carga del informe Customer y su conjunto de datos lleno

Ahora estará listo para crear y ejecutar el proyecto.

  1. En el menú Generar, haga clic en 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.

    Nota

    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.

  4. En el menú Depurar, haga clic en Iniciar.

  5. Se muestra el informe Customer que muestra los datos llenos colocados en el conjunto de datos.

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

Si está creando un proyecto Windows, ha terminado el tutorial.

Si está creando un sitio Web, continúe con Almacenamiento en caché del conjunto de datos en un sitio Web.