Compartir a través de


Agregar el código de conexión del informe

Ahora estará preparado para agregar el código de conexión del informe a la clase de código subyacente. Va a empezar por crear un método auxiliar privado, SetDBLogonForReport().

Para crear y codificar el método SetDBLogonForReport()

  1. Regrese a la clase de código subyacente de este Web Forms o Windows Forms.

  2. En la parte inferior de la clase, cree un nuevo método privado denominado SetDBLogonForReport() con dos parámetros, ConnectionInfo y ReportDocument.

``` vb
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)

End Sub
```

``` csharp
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
}
```
  1. En este método, recupere la instancia de Tables de la propiedad Tables de la propiedad Database del parámetro ReportDocument.
<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>Tables es una clase indizada que contiene instancias de la clase Table.</p></td>
</tr>
</tbody>
</table>

``` vb
Dim myTables As Tables = myReportDocument.Database.Tables
```

``` csharp
Tables tables = reportDocument.Database.Tables;
```
  1. Cree un bucle foreach que recorra todas las instancias de Table de la instancia de clase indizada Tables.
<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>Debe incluir la ruta del espacio de nombres completa a la clase Table, para diferenciarla de la clase Table del espacio de nombres System.Web.UI.WebControls.</p></td>
</tr>
</tbody>
</table>

``` vb
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables

Next
```

``` csharp
foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
}
```
  1. En el bucle foreach, obtenga la instancia de TableLogonInfo a partir de la propiedad LogOnInfo de la instancia de Table.

    Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
    
    TableLogOnInfo tableLogonInfo = table.LogOnInfo;
    
  2. En el bucle foreach, establezca la propiedad ConnectionInfo de TableLogonInfo en el parámetro ConnectionInfo.

    myTableLogonInfo.ConnectionInfo = myConnectionInfo
    
    tableLogonInfo.ConnectionInfo = connectionInfo;
    
  3. En el bucle foreach, pase la instancia de TableLogonInfo como parámetro al método ApplyLogonInfo de la instancia de Table.

    myTable.ApplyLogOnInfo(myTableLogonInfo)
    
    table.ApplyLogOnInfo(tableLogonInfo);
    

El procedimiento de este paso ha creado un método para establecer la conexión de la base de datos. Sin embargo, debe modificar el método ConfigureCrystalReports() para direccionar este método, con el fin de que el informe sepa que tiene información sobre conexión de base de datos.

La modificación del método ConfigureCrystalReports() requiere dos acciones:

  • Configurar la instancia de ConnectionInfo.
  • Llamar al método SetDBLogonForReport().

Para modificar el método ConfigureCrystalReports() para direccionar el código de conexión con la base de datos

  1. En el método ConfigureCrystalReports(), agregue un par de saltos de línea al código encima de la línea que enlaza el informe al control CrystalReportViewer.

  2. En los saltos de línea, declare y cree una instancia de la clase ConnectionInfo.

<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 la clase ConnectionInfo sea accesible, incluya un enunciado &quot;Imports&quot; [Visual Basic] o &quot;using&quot; [C#] en la parte superior de la clase de código subyacente del espacio de nombres CrystalDecisions.Shared. (Esta declaración se ha agregado en <a href="ms227453(v=vs.90).md">Configuración de proyectos</a>.)</p></td>
</tr>
</tbody>
</table>

``` vb
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
```

``` csharp
ConnectionInfo connectionInfo = new ConnectionInfo();
```
  1. Establezca las propiedades DatabaseName, UserID y Password de la instancia de ConnectionInfo.
<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>Por razones de seguridad, es importante utilizar una cuenta de base de datos con permisos de acceso limitado. Para obtener más información, vea <a href="ms227498(v=vs.90).md">Seguridad: crear una cuenta de base de datos de acceso limitado</a>.</p></td>
</tr>
</tbody>
</table>

En el código que escriba, reemplace la contraseña de ejemplo 1234 (que se muestra más abajo) por su propia contraseña.

``` vb
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "
1234"
```

``` csharp
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "
1234";
```
  1. Especifique una llamada al método SetDBLogonForReport() y pase la instancia de ConnectionInfo y el informe NorthwindCustomers.
``` vb
SetDBLogonForReport(myConnectionInfo, northwindCustomersReport)
```

``` csharp
SetDBLogonForReport(connectionInfo, northwindCustomersReport);
```

A continuación aparece el código original que enlaza el informe al control CrystalReportViewer.

Ahora estará listo para crear y ejecutar el proyecto. El informe se debe cargar correctamente, ya que ha agregado código para conectar con la base de datos.

Para probar la carga del informe NorthwindCustomers

  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.

El informe NorthwindCustomers se mostrará correctamente.
  1. Vuelva a Visual Studio y haga clic en Detener para salir del modo de depuración.

El informe NorthwindCustomers se mostrará correctamente.