Enlazar el informe
En Configuración de proyectos, va a colocar un control CrystalReportViewer en el formulario Web Forms o Windows Forms. En el paso anterior, ha agregado un informe NorthwindCustomers al proyecto.
En esta sección, va a crear una copia del informe NorthwindCustomers y a enlazarla con el control CrystalReportViewer. A continuación, probará si el informe se muestra correctamente cuando no se han establecido valores actuales para su campo de parámetro.
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.
Para crear una copia del informe NorthwindCustomers como informe incrustado y enlazarla al control CrystalReportViewer
Abra el formulario Web Forms o Windows Forms.
En el menú Ver, haga clic en Código.
Agregue una nueva declaración de nivel de clase para la clase contenedora del informe NorthwindCustomers, con el nombre de variable NorthwindCustomers. Establezca su modificador de acceso como private.
Private northwindCustomersReport As NorthwindCustomers
private NorthwindCustomers northwindCustomersReport;
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.
northwindCustomersReport = New NorthwindCustomers()
northwindCustomersReport = new NorthwindCustomers();
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 ha creado una instancia (nombre de variable: northwindCustomersReport).
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
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 conectarse con la base de datos.
Para crear una copia del informe NorthwindCustomers como informe no incrustado y enlazarla al control CrystalReportViewer
Abra el formulario Web Forms o Windows Forms.
En el menú Ver, haga clic en Código.
Agregue una nueva declaración de nivel de clase para la clase contenedora del informe NorthwindCustomers, con el nombre de variable northwindCustomersReport. Establezca su modificador de acceso como private.
``` vb
Private northwindCustomersReport As ReportDocument
```
``` csharp
private ReportDocument northwindCustomersReport;
```
<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 "Imports" [Visual Basic] o "using" [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>
En el método ConfigureCrystalReports() (que ha creado en Configuración de proyectos), cree una instancia de la clase ReportDocument.
northwindCustomersReport = New ReportDocument()
northwindCustomersReport = new ReportDocument();
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("NorthwindCustomers.rpt")
string reportPath = Server.MapPath("NorthwindCustomers.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 & "\" & "NorthwindCustomers.rpt"
string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
Llame al método Load() de la instancia de ReportDocument y pásele la variable de cadena reportPath.
``` vb
northwindCustomersReport.Load(reportPath)
```
``` csharp
northwindCustomersReport.Load(reportPath);
```
Enlace la propiedad ReportSource de CrystalReportViewer a la instancia de ReportDocument.
myCrystalReportViewer.ReportSource = northwindCustomersReport
crystalReportViewer.ReportSource = northwindCustomersReport;
Para probar la carga del informe NorthwindCustomers
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: northwindCustomersReport. 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 conectarse con la base de datos.
En el menú Generar, seleccione Generar solución.
Si existen errores de generación, continúe y corríjalos ahora.
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>
- En el menú Depurar, haga clic en Iniciar.
El informe NorthwindCustomers no se muestra, porque no se ha agregado el código de conexión con la base de datos.
<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>Los resultados pueden variar, según la versión de Crystal Reports que utilice. Por ejemplo, si tiene instalado Crystal Reports 10 o una versión superior, aparecerá un formulario y se le pedirá que indique la información sobre conexión de base de datos para el informe. Esta es una nueva función de Crystal Reports Developer. Si ejecuta una versión anterior de Crystal Reports, se produce una excepción. En cualquier caso, debe seguir el siguiente procedimiento de pasos para crear una aplicación totalmente funcional.</p></td>
</tr>
</tbody>
</table>
- Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.